package test.java.integration.helpers;
import java.io.*;
import java.util.HashMap;
public class SummaryResultsParser {
HashMap<String, String> parameters;
HashMap<String, String> data;
HashMap<String, Double> dataQuality;
HashMap<String, Double> workerQuality;
public SummaryResultsParser() {
this.parameters = new HashMap<String, String>();
this.data = new HashMap<String, String>();
this.dataQuality = new HashMap<String, Double>();
this.workerQuality = new HashMap<String, Double>();
}
public SummaryResultsParser(String path) {
this();
try {
parseSummaryFile(path);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public HashMap<String, String> getParameters() {
return parameters;
}
public HashMap<String, String> getData() {
return data;
}
public HashMap<String, Double> getDataQuality() {
return dataQuality;
}
public HashMap<String, Double> getWorkerQuality() {
return workerQuality;
}
public Double DoubleValue(String value){
Double dValue = 0.0;
int position = value.indexOf("%");
if (value.indexOf("%") > 0){
dValue = Double.valueOf(value.substring(0, position))/100;
}
else
{
if (value.equals("N/A")){
dValue = Double.NaN;
}
else
{
dValue = Double.valueOf(value);
}
}
return dValue;
}
public void parseSummaryFile(String filePath) throws UnsupportedEncodingException {
FileInputStream fstream = null;
try {
fstream = new FileInputStream(filePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String line;
int currentBlock = 0;
try {
while ((line = br.readLine()) != null) {
if ((line.equals(""))) {
currentBlock++;
}
else{
if (line.indexOf(": ") > 0) {
String[] splittedData = line.split(": ");
if (currentBlock == 1) {
parameters.put(splittedData[0], splittedData[1]);
} else if (currentBlock == 2) {
data.put(splittedData[0], splittedData[1]);
} else if (currentBlock == 3) {
dataQuality.put(splittedData[0], DoubleValue(splittedData[1]));
} else if (currentBlock == 4) {
workerQuality.put(splittedData[0], DoubleValue(splittedData[1]));
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}