package com.plugtree.solrmeter.controller;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import au.com.bytecode.opencsv.CSVWriter;
import com.google.inject.Inject;
import com.plugtree.solrmeter.SolrMeterMain;
import com.plugtree.solrmeter.model.statistic.QueryLogStatistic;
import com.plugtree.solrmeter.model.statistic.QueryLogStatistic.QueryLogValue;
import com.plugtree.solrmeter.view.I18n;
import com.plugtree.stressTestScope.StressTestScope;
@StressTestScope
public class FullQueryStatisticController {
private QueryLogStatistic queryLogStatistic;
private JFileChooser fc;
@Inject
public FullQueryStatisticController(QueryLogStatistic queryLogStatistic) {
this.queryLogStatistic = queryLogStatistic;
this.fc = new JFileChooser();
}
public void onExportButtonClick() {
int returnVal = fc.showSaveDialog(SolrMeterMain.mainFrame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
// if file exists, ask before overwriting
if(file.exists()) {
int response = JOptionPane.showConfirmDialog(
SolrMeterMain.mainFrame,
I18n.get("statistic.fullQueryStatistic.overwrite"),
I18n.get("statistic.fullQueryStatistic.title"),
JOptionPane.YES_NO_OPTION);
if(response==JOptionPane.NO_OPTION) {
return;
}
}
try {
writeCSV(file);
} catch (IOException ex) {
JOptionPane.showMessageDialog(
SolrMeterMain.mainFrame,
ex.getMessage(),
I18n.get("statistic.fullQueryStatistic.exportExceptionTitle"),
JOptionPane.ERROR_MESSAGE);
}
}
}
public void writeCSV(File file) throws IOException {
FileWriter writer = new FileWriter(file);
CSVWriter csvWriter = new CSVWriter(writer);
for (QueryLogValue query : queryLogStatistic.getLastQueries()) {
String[] cols = new String[] {
String.valueOf(query.isError()),
query.getQueryString(),
query.getFacetQueryString(),
query.getFilterQueryString(),
query.getQTime().toString(),
query.getResults().toString()
};
csvWriter.writeNext(cols);
}
csvWriter.close();
}
}