Added translataion fixes + punctuation in export fix
This commit is contained in:
@@ -23,41 +23,41 @@ import data.Enums.WordLevelType;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class Export {
|
||||
public static void SetToJSON(Set<Pair<String, Map<MultipleHMKeys, Long>>> set) {
|
||||
JSONArray wrapper = new JSONArray();
|
||||
|
||||
for (Pair<String, Map<MultipleHMKeys, Long>> p : set) {
|
||||
JSONArray data_wrapper = new JSONArray();
|
||||
JSONObject metric = new JSONObject();
|
||||
|
||||
String title = p.getLeft();
|
||||
Map<MultipleHMKeys, Long> map = p.getRight();
|
||||
|
||||
if (map.isEmpty())
|
||||
continue;
|
||||
|
||||
long total = Util.mapSumFrequencies(map);
|
||||
|
||||
for (Map.Entry<MultipleHMKeys, Long> e : map.entrySet()) {
|
||||
JSONObject data_entry = new JSONObject();
|
||||
data_entry.put("word", e.getKey());
|
||||
data_entry.put("frequency", e.getValue());
|
||||
data_entry.put("percent", formatNumberAsPercent((double) e.getValue() / total));
|
||||
|
||||
data_wrapper.add(data_entry);
|
||||
}
|
||||
|
||||
metric.put("Title", title);
|
||||
metric.put("data", data_wrapper);
|
||||
wrapper.add(metric);
|
||||
}
|
||||
|
||||
try (FileWriter file = new FileWriter("statistics.json")) {
|
||||
file.write(wrapper.toJSONString());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
// public static void SetToJSON(Set<Pair<String, Map<MultipleHMKeys, Long>>> set) {
|
||||
// JSONArray wrapper = new JSONArray();
|
||||
//
|
||||
// for (Pair<String, Map<MultipleHMKeys, Long>> p : set) {
|
||||
// JSONArray data_wrapper = new JSONArray();
|
||||
// JSONObject metric = new JSONObject();
|
||||
//
|
||||
// String title = p.getLeft();
|
||||
// Map<MultipleHMKeys, Long> map = p.getRight();
|
||||
//
|
||||
// if (map.isEmpty())
|
||||
// continue;
|
||||
//
|
||||
// long total = Util.mapSumFrequencies(map);
|
||||
//
|
||||
// for (Map.Entry<MultipleHMKeys, Long> e : map.entrySet()) {
|
||||
// JSONObject data_entry = new JSONObject();
|
||||
// data_entry.put("word", e.getKey());
|
||||
// data_entry.put("frequency", e.getValue());
|
||||
// data_entry.put("percent", formatNumberAsPercent((double) e.getValue() / total));
|
||||
//
|
||||
// data_wrapper.add(data_entry);
|
||||
// }
|
||||
//
|
||||
// metric.put("Title", title);
|
||||
// metric.put("data", data_wrapper);
|
||||
// wrapper.add(metric);
|
||||
// }
|
||||
//
|
||||
// try (FileWriter file = new FileWriter("statistics.json")) {
|
||||
// file.write(wrapper.toJSONString());
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
|
||||
public static String SetToCSV(Set<Pair<String, Map<MultipleHMKeys, Long>>> set, File resultsPath, LinkedHashMap<String, String> headerInfoBlock,
|
||||
StatisticsNew statistics, Filter filter) {
|
||||
@@ -127,12 +127,6 @@ public class Export {
|
||||
|
||||
FILE_HEADER_AL.add(I18N.get("exportTable.totalRelativeFrequency"));
|
||||
|
||||
if (filter.getCollocability().size() > 0){
|
||||
for (Collocability c : filter.getCollocability()) {
|
||||
FILE_HEADER_AL.add(c.toHeaderString());
|
||||
}
|
||||
}
|
||||
|
||||
for (Taxonomy key : taxonomyResults.keySet()) {
|
||||
if(!key.equals(statistics.getCorpus().getTotal()) && num_taxonomy_frequencies.containsKey(key) && num_taxonomy_frequencies.get(key).longValue() > 0) {
|
||||
FILE_HEADER_AL.add(I18N.get("exportTable.absoluteFrequency") + " [" + key.toString() + "]");
|
||||
@@ -141,6 +135,13 @@ public class Export {
|
||||
}
|
||||
}
|
||||
|
||||
if (filter.getCollocability().size() > 0){
|
||||
for (Collocability c : filter.getCollocability()) {
|
||||
FILE_HEADER_AL.add(c.toHeaderString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (filter.getWriteMsdAtTheEnd()) {
|
||||
String msd = "";
|
||||
int maxMsdLength = 0;
|
||||
@@ -280,14 +281,14 @@ public class Export {
|
||||
|
||||
|
||||
dataEntry.add(e.getValue().toString());
|
||||
dataEntry.add(formatNumberAsPercent((double) e.getValue() / num_selected_taxonomy_frequencies.get(statistics.getCorpus().getTotal())));
|
||||
dataEntry.add(String.format("%.2f", ((double) e.getValue() * 1000000)/num_taxonomy_frequencies.get(statistics.getCorpus().getTotal()).longValue()));
|
||||
dataEntry.add(formatNumberAsPercent((double) e.getValue() / num_selected_taxonomy_frequencies.get(statistics.getCorpus().getTotal()), statistics.getCorpus().getPunctuation()));
|
||||
dataEntry.add(formatNumberForExport(((double) e.getValue() * 1000000)/num_taxonomy_frequencies.get(statistics.getCorpus().getTotal()).longValue(), statistics.getCorpus().getPunctuation()));
|
||||
for (Taxonomy key : taxonomyResults.keySet()){
|
||||
if(!key.equals(statistics.getCorpus().getTotal()) && num_taxonomy_frequencies.containsKey(key) && num_taxonomy_frequencies.get(key).longValue() > 0) {
|
||||
AtomicLong frequency = taxonomyResults.get(key).get(e.getKey());
|
||||
dataEntry.add(frequency.toString());
|
||||
dataEntry.add(formatNumberAsPercent((double) frequency.get() / num_selected_taxonomy_frequencies.get(key)));
|
||||
dataEntry.add(String.format("%.2f", ((double) frequency.get() * 1000000) / num_taxonomy_frequencies.get(key).longValue()));
|
||||
dataEntry.add(formatNumberAsPercent((double) frequency.get() / num_selected_taxonomy_frequencies.get(key), statistics.getCorpus().getPunctuation()));
|
||||
dataEntry.add(formatNumberForExport(((double) frequency.get() * 1000000) / num_taxonomy_frequencies.get(key).longValue(), statistics.getCorpus().getPunctuation()));
|
||||
// dataEntry.add(formatNumberAsPercent((double) frequency.get() / statistics.getUniGramOccurrences()));
|
||||
// dataEntry.add(String.format("%.2f", ((double) frequency.get() * 1000000) / statistics.getUniGramOccurrences()));
|
||||
}
|
||||
@@ -296,7 +297,7 @@ public class Export {
|
||||
|
||||
if (filter.getCollocability().size() > 0){
|
||||
for (Collocability c : filter.getCollocability()) {
|
||||
dataEntry.add(statistics.getCollocability().get(c).get(e.getKey()));
|
||||
dataEntry.add(formatNumberForLongExport(statistics.getCollocability().get(c).get(e.getKey()), statistics.getCorpus().getPunctuation()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -371,66 +372,66 @@ public class Export {
|
||||
return s;
|
||||
}
|
||||
|
||||
public static String SetToCSV(String title, Object[][] result, File resultsPath, LinkedHashMap<String, String> headerInfoBlock) {
|
||||
//Delimiter used in CSV file
|
||||
String NEW_LINE_SEPARATOR = "\n";
|
||||
|
||||
//CSV file header
|
||||
Object[] FILE_HEADER = {"word", "frequency", "percent"};
|
||||
|
||||
String fileName = "";
|
||||
|
||||
fileName = title.replace(": ", "-");
|
||||
fileName = fileName.replace(" ", "_").concat(".csv");
|
||||
|
||||
fileName = resultsPath.toString().concat(File.separator).concat(fileName);
|
||||
|
||||
OutputStreamWriter fileWriter = null;
|
||||
CSVPrinter csvFilePrinter = null;
|
||||
|
||||
//Create the CSVFormat object with "\n" as a record delimiter
|
||||
CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR).withDelimiter(';');
|
||||
|
||||
try {
|
||||
//initialize FileWriter object
|
||||
fileWriter = new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.UTF_8);
|
||||
|
||||
//initialize CSVPrinter object
|
||||
csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat);
|
||||
|
||||
// write info block
|
||||
printHeaderInfo(csvFilePrinter, headerInfoBlock);
|
||||
|
||||
//Create CSV file header
|
||||
csvFilePrinter.printRecord(FILE_HEADER);
|
||||
|
||||
for (Object[] resultEntry : result) {
|
||||
List dataEntry = new ArrayList<>();
|
||||
dataEntry.add(resultEntry[0]);
|
||||
dataEntry.add(resultEntry[1]);
|
||||
dataEntry.add(formatNumberAsPercent(resultEntry[2]));
|
||||
csvFilePrinter.printRecord(dataEntry);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Error in CsvFileWriter!");
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (fileWriter != null) {
|
||||
fileWriter.flush();
|
||||
fileWriter.close();
|
||||
}
|
||||
if (csvFilePrinter != null) {
|
||||
csvFilePrinter.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Error while flushing/closing fileWriter/csvPrinter!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return fileName;
|
||||
}
|
||||
// public static String SetToCSV(String title, Object[][] result, File resultsPath, LinkedHashMap<String, String> headerInfoBlock) {
|
||||
// //Delimiter used in CSV file
|
||||
// String NEW_LINE_SEPARATOR = "\n";
|
||||
//
|
||||
// //CSV file header
|
||||
// Object[] FILE_HEADER = {"word", "frequency", "percent"};
|
||||
//
|
||||
// String fileName = "";
|
||||
//
|
||||
// fileName = title.replace(": ", "-");
|
||||
// fileName = fileName.replace(" ", "_").concat(".csv");
|
||||
//
|
||||
// fileName = resultsPath.toString().concat(File.separator).concat(fileName);
|
||||
//
|
||||
// OutputStreamWriter fileWriter = null;
|
||||
// CSVPrinter csvFilePrinter = null;
|
||||
//
|
||||
// //Create the CSVFormat object with "\n" as a record delimiter
|
||||
// CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR).withDelimiter(';');
|
||||
//
|
||||
// try {
|
||||
// //initialize FileWriter object
|
||||
// fileWriter = new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.UTF_8);
|
||||
//
|
||||
// //initialize CSVPrinter object
|
||||
// csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat);
|
||||
//
|
||||
// // write info block
|
||||
// printHeaderInfo(csvFilePrinter, headerInfoBlock);
|
||||
//
|
||||
// //Create CSV file header
|
||||
// csvFilePrinter.printRecord(FILE_HEADER);
|
||||
//
|
||||
// for (Object[] resultEntry : result) {
|
||||
// List dataEntry = new ArrayList<>();
|
||||
// dataEntry.add(resultEntry[0]);
|
||||
// dataEntry.add(resultEntry[1]);
|
||||
// dataEntry.add(formatNumberAsPercent(resultEntry[2]), statistics.getCorpus().getPunctuation());
|
||||
// csvFilePrinter.printRecord(dataEntry);
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// System.out.println("Error in CsvFileWriter!");
|
||||
// e.printStackTrace();
|
||||
// } finally {
|
||||
// try {
|
||||
// if (fileWriter != null) {
|
||||
// fileWriter.flush();
|
||||
// fileWriter.close();
|
||||
// }
|
||||
// if (csvFilePrinter != null) {
|
||||
// csvFilePrinter.close();
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// System.out.println("Error while flushing/closing fileWriter/csvPrinter!");
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return fileName;
|
||||
// }
|
||||
|
||||
public static String nestedMapToCSV(String title, Map<WordLevelType, Map<String, Map<String, Long>>> result, File resultsPath, LinkedHashMap<String, String> headerInfoBlock) {
|
||||
//Delimiter used in CSV file
|
||||
|
||||
@@ -54,10 +54,31 @@ public class Util {
|
||||
return "- invalid input format -";
|
||||
}
|
||||
|
||||
public static String formatNumberAsPercent(Object o) {
|
||||
return MessageFormat.format("{0,number,#.### %}", o).replace('.', ',');
|
||||
public static String formatNumberAsPercent(Object o, String punctuation) {
|
||||
if(punctuation.equals("punctuation.COMMA")) {
|
||||
return MessageFormat.format("{0,number,#.### %}", o).replace('.', ',');
|
||||
} else {
|
||||
return MessageFormat.format("{0,number,#.### %}", o);
|
||||
}
|
||||
}
|
||||
|
||||
public static String formatNumberForExport(Object o, String punctuation) {
|
||||
if(punctuation.equals("punctuation.COMMA")) {
|
||||
return MessageFormat.format("{0,number,#.##}", o).replace('.', ',');
|
||||
} else {
|
||||
return MessageFormat.format("{0,number,#.##}", o);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static String formatNumberForLongExport(Object o, String punctuation) {
|
||||
if(punctuation.equals("punctuation.COMMA")) {
|
||||
return MessageFormat.format("{0,number,#.########}", o).replace('.', ',');
|
||||
} else {
|
||||
return MessageFormat.format("{0,number,#.########}", o);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isInstanceOfInteger(Object o) {
|
||||
Set<Class<?>> types = new HashSet<>();
|
||||
types.add(Byte.class);
|
||||
|
||||
Reference in New Issue
Block a user