Skip to content

Commit

Permalink
Собираем таблицу с базовой информацией о статьях
Browse files Browse the repository at this point in the history
  • Loading branch information
Newbilius committed Nov 21, 2018
1 parent d8c1c43 commit a65b40e
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,3 +3,4 @@
/.idea/
/out/
/*.json
/*.csv
1 change: 1 addition & 0 deletions build.gradle
Expand Up @@ -17,6 +17,7 @@ dependencies {
compile "com.google.code.gson:gson:2.8.0"
compile 'org.jsoup:jsoup:1.10.2'
compile 'net.sf.opencsv:opencsv:2.3'
compile group: 'org.reflections', name: 'reflections', version: '0.9.11'
}

run {
Expand Down
@@ -0,0 +1,39 @@
package com.newbilius.HabrStatisticCollector.AnalyticsGenerators;

import com.newbilius.HabrStatisticCollector.CSVWriteHelper;
import com.newbilius.HabrStatisticCollector.HabrItem;

import java.io.IOException;

public class FullTable implements IAnalyticsGenerator {
@Override
public void generate(HabrItem[] items) {
try {
try (var csvWriter = CSVWriteHelper.createCSVWriter("Статьи с основными параметрами.csv")) {
csvWriter.writeNext(new String[]{
"Заголовок",
"Плюсов",
"Закладки",
"Комментариев",
"Просмотров",
"URL",
"Автор",
});

for (var item : items) {
csvWriter.writeNext(new String[]{
item.Title,
String.valueOf(item.Score),
String.valueOf(item.Bookmarks),
String.valueOf(item.Comments),
String.valueOf(item.Views),
item.Url,
item.Author
});
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,7 @@
package com.newbilius.HabrStatisticCollector.AnalyticsGenerators;

import com.newbilius.HabrStatisticCollector.HabrItem;

public interface IAnalyticsGenerator {
void generate(HabrItem[] items);
}
@@ -0,0 +1,15 @@
package com.newbilius.HabrStatisticCollector;

import au.com.bytecode.opencsv.CSVWriter;

import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class CSVWriteHelper {
public static CSVWriter createCSVWriter(String fileName) throws IOException {
return new CSVWriter(new FileWriter(fileName,
StandardCharsets.UTF_8,
false), ';');
}
}
Expand Up @@ -2,16 +2,19 @@

import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import com.newbilius.HabrStatisticCollector.AnalyticsGenerators.IAnalyticsGenerator;
import com.newbilius.HabrStatisticCollector.CommandLineParser.CommandLineArgumentsParser;
import com.newbilius.HabrStatisticCollector.CommandLineParser.CommandLineArgumentsParserResult;
import com.newbilius.HabrStatisticCollector.CommandLineParser.Option;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.reflections.Reflections;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Calendar;

Expand Down Expand Up @@ -42,6 +45,19 @@ public static void main(String[] args) {
e.printStackTrace();
}
}

var generators = new Reflections("com.newbilius").getSubTypesOf(IAnalyticsGenerator.class);
for (var generator : generators) {
try {
var generatorInstance = generator.getDeclaredConstructor().newInstance();
generatorInstance.generate(parsedItems);
} catch (NoSuchMethodException
| IllegalAccessException
| InstantiationException
| InvocationTargetException e) {
e.printStackTrace();
}
}
}

private static void saveParsedItems(HabrItem[] parsedItems) {
Expand Down

0 comments on commit a65b40e

Please sign in to comment.