package edu.indiana.soic.ts.utils;
import org.ho.yaml.Yaml;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Map;
public class TSConfiguration {
public static final String BASE_PATH = "base.dir";
public static final String INPUT_DIR = "input.dir";
public static final String PREPROC_DIR = "preproc.dir";
public static final String POSTPROC_DIR = "postproc.dir";
public static final String VECTOR_DIR = "vector.dir";
public static final String DISTANCE_DIR = "distance.dir";
public static final String INTERMEDIATE_DIR = "intermediate.dir";
public static final String HIST_DIR = "histogram.dir";
public static final String START_DATE = "time.start";
public static final String END_DATE = "time.end";
public static final String TIME_SHIFT_HEAD = "time.shift.head";
public static final String TIME_SHIFT_TAIL = "time.shift.tail";
public static final String TIME_WINDOW = "time.window";
public static final String DISTANCE_FUNCTION = "distance.function";
public static final String MATRIX_BLOCK_SIZE = "matrix.block.size";
public class Input {
public static final String FIXED_DIR = "fixed.file";
}
public class Histogram {
public static final String MIN = "histogram.min";
public static final String MAX = "histogram.max";
public static final String NO_OF_BINS = "histogram.bins";
public static final String HISTO_FILE = "histogram.file";
}
public class PViz {
public static final String DIR = "pviz.dir";
public static final String CLUSTER_FILE = "pviz.cluster.file";
public static final String PVIZ_FILE = "pviz.file";
}
public class Label {
public static final String DIR = "label.dir";
}
public class Point {
public static final String DIR = "point.file.dir";
}
private final Map conf;
private String basePath;
public TSConfiguration(String file) {
try {
this.conf = (Map) Yaml.load(new File(file));
this.basePath = getString(BASE_PATH);
if (this.basePath == null) {
throw new RuntimeException("Basepath must be specified");
}
} catch (FileNotFoundException e) {
throw new RuntimeException("Failed to load configuration from file: " + file, e);
}
}
public Map getConf() {
return conf;
}
public Integer getInt(String key) {
return (Integer) conf.get(key);
}
public String getString(String key) {
String sysProp = System.getProperty(key);
if (sysProp != null && !"".equals(key)) {
return sysProp;
} else {
return (String) conf.get(key);
}
}
public String getAggregatedPath(String path) {
return basePath + "/" + path;
}
public String getInputDir() {
return getAggregatedPath(getString(INPUT_DIR));
}
public String getVectorDir() {
String preprocDir = getString(PREPROC_DIR);
String vector = getString(VECTOR_DIR);
return getAggregatedPath(preprocDir) + "/" + vector;
}
public String getDistDir() {
String preprocDir = getString(PREPROC_DIR);
String distance = getString(DISTANCE_DIR);
return getAggregatedPath(preprocDir) + "/" + distance;
}
public String getInterMediateDistanceDir() {
String preprocDir = getString(PREPROC_DIR);
String distance = getString(DISTANCE_DIR);
String intermediate = getString(INTERMEDIATE_DIR);
return getAggregatedPath(preprocDir) + "/" + intermediate + "/" + distance;
}
public String getInterMediateVectorDir() {
String preprocDir = getString(PREPROC_DIR);
String vector = getString(VECTOR_DIR);
String intermediate = getString(INTERMEDIATE_DIR);
return getAggregatedPath(preprocDir) + "/" + intermediate + "/" + vector;
}
public String getIntermediateHistDir() {
String preprocDir = getString(PREPROC_DIR);
String hist = getString(HIST_DIR);
String intermediate = getString(INTERMEDIATE_DIR);
return getAggregatedPath(preprocDir) + "/" + intermediate + "/" + hist;
}
public String getIntermediatePvizDir() {
String preprocDir = getString(PREPROC_DIR);
String pviz = getString(PViz.DIR);
String intermediate = getString(INTERMEDIATE_DIR);
return getAggregatedPath(preprocDir) + "/" + intermediate + "/" + pviz;
}
public String getIntermediateLabelDir() {
String preprocDir = getString(PREPROC_DIR);
String label = getString(Label.DIR);
String intermediate = getString(INTERMEDIATE_DIR);
return getAggregatedPath(preprocDir) + "/" + intermediate + "/" + label;
}
public String getHistDir() {
String preprocDir = getString(PREPROC_DIR);
String hist = getString(HIST_DIR);
return getAggregatedPath(preprocDir) + "/" + hist;
}
public String getPointDir() {
String pointDir = getString(Point.DIR);
return getAggregatedPath(pointDir);
}
public String getLabelDir() {
String labelDir = getString(Label.DIR);
String postProcDir = getString(POSTPROC_DIR);
return getAggregatedPath(postProcDir + "/" + labelDir);
}
public String getPVizDir() {
String postProcDir = getString(POSTPROC_DIR);
String pvizDir = getString(PViz.DIR);
return getAggregatedPath(postProcDir + "/" + pvizDir);
}
public String getClusterFile() {
String postProcDir = getString(POSTPROC_DIR);
String clusterFile = getString(PViz.CLUSTER_FILE);
return getAggregatedPath(postProcDir + "/" + clusterFile);
}
public String getFixedClassFile() {
String input = getString(INPUT_DIR);
String fixedFile = getString(Input.FIXED_DIR);
return getAggregatedPath(input + "/" + fixedFile);
}
}