|
|
@ -5,6 +5,7 @@ import internal.hw.crawler.models.Article; |
|
|
import internal.hw.crawler.repositories.ArticleRepository; |
|
|
import internal.hw.crawler.repositories.ArticleRepository; |
|
|
import internal.hw.crawler.views.CommandOutput; |
|
|
import internal.hw.crawler.views.CommandOutput; |
|
|
|
|
|
|
|
|
|
|
|
import com.google.gson.JsonSyntaxException; |
|
|
import java.io.*; |
|
|
import java.io.*; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
@ -25,7 +26,7 @@ public class SaveCommand implements Command { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void execute(String[] args) { |
|
|
public void execute(String[] args) throws IOException { |
|
|
String filename = "articles.output.json"; |
|
|
String filename = "articles.output.json"; |
|
|
|
|
|
|
|
|
List<Article> articles = getExistingArticles(filename); |
|
|
List<Article> articles = getExistingArticles(filename); |
|
|
@ -38,11 +39,9 @@ public class SaveCommand implements Command { |
|
|
|
|
|
|
|
|
Article[] articlesToSave = articleMap.values().toArray(new Article[0]); |
|
|
Article[] articlesToSave = articleMap.values().toArray(new Article[0]); |
|
|
|
|
|
|
|
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename));) { |
|
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) { |
|
|
writer.write(gson.toJson(articlesToSave)); |
|
|
writer.write(gson.toJson(articlesToSave)); |
|
|
out.success(String.format("Wrote %d articles to %s", articlesToSave.length, filename)); |
|
|
out.success(String.format("Wrote %d articles to %s", articlesToSave.length, filename)); |
|
|
} catch (IOException e) { |
|
|
|
|
|
throw new RuntimeException(e); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -54,7 +53,10 @@ public class SaveCommand implements Command { |
|
|
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { |
|
|
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { |
|
|
Article[] articles = gson.fromJson(reader, Article[].class); |
|
|
Article[] articles = gson.fromJson(reader, Article[].class); |
|
|
return Arrays.asList(articles); |
|
|
return Arrays.asList(articles); |
|
|
} catch (IOException e) { |
|
|
} catch (FileNotFoundException e) { |
|
|
|
|
|
return List.of(); |
|
|
|
|
|
} catch (IOException | JsonSyntaxException e) { |
|
|
|
|
|
out.error("Failed to read existing articles: " + e.getMessage()); |
|
|
return List.of(); |
|
|
return List.of(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|