/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package di.uniba.it.tri.script; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author pierpaolo */ public class AnalyzeTimeSeries { private static List<TimeWord> loadTimeSerie(File inputFile) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(inputFile)); reader.readLine(); List<TimeWord> list = new ArrayList<>(); while (reader.ready()) { String[] split = reader.readLine().split(","); list.add(new TimeWord(split[1], Float.parseFloat(split[2]), Integer.parseInt(split[3]))); } reader.close(); return list; } /** * @param args the command line arguments */ public static void main(String[] args) { try { if (args.length == 3) { Map<String, Integer> idxYear = new HashMap<>(); BufferedReader reader = new BufferedReader(new FileReader(args[1])); if (reader.ready()) { String[] split = reader.readLine().split(","); for (int i = 2; i < split.length; i++) { idxYear.put(split[i], i - 2); } } Map<String, float[]> count = new HashMap<>(); while (reader.ready()) { String[] split = reader.readLine().split(","); float[] a = new float[split.length - 2]; for (int i = 2; i < split.length; i++) { a[i - 2] = Float.parseFloat(split[i]); } count.put(split[1], a); } reader.close(); List<TimeWord> loadTimeSerie = loadTimeSerie(new File(args[0])); Collections.sort(loadTimeSerie); BufferedWriter writer = new BufferedWriter(new FileWriter(args[2])); for (TimeWord tw : loadTimeSerie) { writer.append(tw.getWord()).append("\t").append(String.valueOf(tw.getPvalue())); int cp = tw.getCp(); float freq = count.get(tw.getWord())[idxYear.get(String.valueOf(cp))]; writer.append("\t").append(String.valueOf(cp)).append("\t").append(String.valueOf(freq)); writer.newLine(); } writer.close(); } } catch (Exception ex) { Logger.getLogger(AnalyzeTimeSeries.class.getName()).log(Level.SEVERE, null, ex); } } }