package com.nexr.platform.search.result;
import com.nexr.platform.search.result.utils.Chart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: david
* Date: 11. 10. 12.
* Time: 오후 1:56
*/
public class GenerateGraph {
public void generate(String logFilePath, String saveImgFilePath, String chartName, int width, int height, String[] colsDefine, String colSeparator) {
XYSeriesCollection dataSet = new XYSeriesCollection();
for(XYSeries series : this.makeDataSet(logFilePath, colSeparator, colsDefine)){
dataSet.addSeries(series);
}
try {
Chart chart = new Chart(dataSet, chartName, colsDefine.length);
chart.save(saveImgFilePath, width, height);
} catch (IOException e) {
e.printStackTrace();
}
}
private List<XYSeries> makeDataSet(String localFilePath, String colSeparator, String[] colsDefines) {
List<XYSeries> list = new ArrayList<XYSeries>();
try {
File file = new File(localFilePath);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String row;
while((row = reader.readLine()) != null){
if(!row.isEmpty()) {
String[] cols = row.split(colSeparator);
double x_value = Double.parseDouble(cols[0]);
for(int i = 1 ; i < cols.length; i++) {
if(list.size() != (cols.length - 1)) {
list.add(new XYSeries(colsDefines[i - 1]));
}
if(Integer.parseInt(cols[i]) > 1000000) {
System.out.println(Integer.parseInt(cols[i]));
}
list.get(i - 1).add(x_value, Integer.parseInt(cols[i]));
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
String logFilePath = "/Users/david/Execute/nexrsearch_client/config/out.txt";
String saveImgFilePath = "/Users/david/Execute/nexrsearch_client/config/result.png";
String chartName = "JSON Vs SMILE";
int width = 1000;
int height = 2000;
String[] colsDefine = {
"JSON GENERATE",
"SMILE GENERATE",
"JSON PARSE",
"SMILE PARSE"
};
String colSeparator = "\t";
GenerateGraph generateGraph = new GenerateGraph();
generateGraph.generate(logFilePath, saveImgFilePath, chartName, width, height, colsDefine, colSeparator);
}
}