package com.plugtree.solrmeter.view;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.plugtree.solrmeter.model.SolrMeterConfiguration;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Singleton
public class HeadlessConsoleFrame {
private HeadlessQueryConsolePanel queryPanel;
private HeadlessUpdateConsolePanel updatePanel;
private HeadlessCommitConsolePanel commitPanel;
private HeadlessOptimizeConsolePanel optimizePanel;
private HeadlessStatisticsContainer statistics;
@Inject
public HeadlessConsoleFrame(HeadlessQueryConsolePanel queryPanel,
HeadlessUpdateConsolePanel updatePanel,
HeadlessCommitConsolePanel commitPanel,
HeadlessOptimizeConsolePanel optimizePanel,
HeadlessStatisticsContainer statistics) {
this.queryPanel = queryPanel;
this.updatePanel = updatePanel;
this.commitPanel = commitPanel;
this.optimizePanel = optimizePanel;
this.statistics = statistics;
init();
}
private void init() {
initWorkspace();
}
private void initWorkspace() {
try {
File outDir = new File(getOutputDirectory());
FileUtils.forceMkdir(outDir);
FileUtils.cleanDirectory(outDir);
FileUtils.forceMkdir(new File(getStatisticsOutputDirectory()));
FileUtils.forceMkdir(new File(FilenameUtils.concat(getOutputDirectory(), "directives")));
}
catch(IOException ioe) {
throw new RuntimeException(ioe);
}
}
public HeadlessStatisticsContainer getStatistics() {
return statistics;
}
public HeadlessQueryConsolePanel getQueryPanel() {
return queryPanel;
}
public HeadlessUpdateConsolePanel getUpdatePanel() {
return updatePanel;
}
public HeadlessCommitConsolePanel getCommitPanel() {
return commitPanel;
}
public HeadlessOptimizeConsolePanel getOptimizePanel() {
return optimizePanel;
}
public List<HeadlessConsolePanel> getConsolePanels() {
return new ArrayList<HeadlessConsolePanel>(){{
add(getQueryPanel());
add(getUpdatePanel());
add(getCommitPanel());
add(getOptimizePanel());
}};
}
public static String getOutputDirectory() {
return SolrMeterConfiguration.getProperty("headless.outputDirectory");
}
public static String getStatisticsOutputDirectory() {
return FilenameUtils.concat(getOutputDirectory(), "statistics");
}
}