package edu.hawaii.jmotif.sampler;
import java.util.ArrayList;
import java.util.TreeMap;
import java.util.logging.ConsoleHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Logger;
import org.hackystat.utilities.logger.HackystatLogger;
import edu.hawaii.jmotif.text.SAXCollectionStrategy;
import edu.hawaii.jmotif.util.BriefFormatter;
public class PrintConsumer implements Consumer<ValuePointListTelemetryColored> {
private static final String COMMA = ",";
private static Logger consoleLogger;
static {
consoleLogger = HackystatLogger.getLogger("debug.console", "preseries");
consoleLogger.setUseParentHandlers(false);
for (Handler handler : consoleLogger.getHandlers()) {
consoleLogger.removeHandler(handler);
}
ConsoleHandler handler = new ConsoleHandler();
Formatter formatter = new BriefFormatter();
handler.setFormatter(formatter);
consoleLogger.addHandler(handler);
HackystatLogger.setLoggingLevel(consoleLogger, "ALL");
}
private String prefix;
private int callNumber = -1;
private ArrayList<TreeMap<String, Double>> points = new ArrayList<TreeMap<String, Double>>();
public PrintConsumer(SAXCollectionStrategy strategy) {
super();
prefix = "NOREDUCTION";
if (strategy.equals(SAXCollectionStrategy.CLASSIC)) {
prefix = "CLASSIC";
}
else if (strategy.equals(SAXCollectionStrategy.EXACT)) {
prefix = "EXACT";
}
}
@Override
public void notifyOf(Producer<? extends ValuePointListTelemetryColored> producer) {
callNumber++;
TreeMap<String, Double> cMap = new TreeMap<String, Double>();
points.add(cMap);
ValuePointListTelemetryColored val = producer.getValue();
int size = val.getValue().size();
for (int i = 0; i < size; i++) {
double error = val.getValue().get(i).getValue();
double[] coordinates = val.getValue().get(i).getPoint().toArray();
String coordStr = prefix + COMMA + coordinates[0] + COMMA + coordinates[1] + COMMA
+ coordinates[2];
cMap.put(coordStr, error);
if (callNumber > 0) {
if (!(points.get(callNumber - 1).containsKey(coordStr))) {
consoleLogger.info(callNumber + COMMA + coordStr + COMMA + error);
}
}
else {
consoleLogger.info(callNumber + COMMA + coordStr + COMMA + error);
}
}
}
}