package edu.usc.enl.dynamicmeasurement.metric.monitors; import edu.usc.enl.dynamicmeasurement.metric.Metric; import edu.usc.enl.dynamicmeasurement.metric.metriccollection.MetricCollection; import edu.usc.enl.dynamicmeasurement.metric.metriccollection.MetricCollectionInitializationException; import edu.usc.enl.dynamicmeasurement.model.WildcardPattern; import java.io.File; import java.io.IOException; import java.util.*; /** * Created with IntelliJ IDEA. * User: masoud * Date: 5/27/13 * Time: 10:12 PM */ public class MonitorMetricCollection extends MetricCollection { private List<Metric> metrics; @Override public Map<Metric, SortedMap<Integer, Double>> runForFolder(File f) throws IOException { Map<Metric, SortedMap<Integer, Double>> report = new HashMap<>(); for (Metric metric : metrics) { report.put(metric, new TreeMap<Integer, Double>()); } //need two files of HHH Map<Integer, List<WildcardPattern>> reportedHHHs = LoadWildcardPatterns(f.getAbsolutePath() + "/monitors.csv"); for (Map.Entry<Integer, List<WildcardPattern>> reportedHHH : reportedHHHs.entrySet()) { for (Metric metric : metrics) { report.get(metric).put(reportedHHH.getKey(), ((MonitorMetric) metric).compute(reportedHHH.getValue())); } } return report; } protected void removeLast(Map<Integer, List<WildcardPattern>> reportedHHHs) { int max = -1; for (Integer s : reportedHHHs.keySet()) { max = Math.max(s, max); } reportedHHHs.remove(max); } @Override public List<Metric> getMetrics() { return metrics; } @Override public MetricCollection clone() { return new MonitorMetricCollection(); } @Override public void init(File parentFolder) throws MetricCollectionInitializationException { metrics = new ArrayList<>(); metrics.add(new MonitorsDepth()); metrics.add(new MonitorsNum()); metrics.add(new MonitorWeight(false)); //metrics.add(new MonitorWeight(true)); metrics.add(new MonitorWeightMax(false)); metrics.add(new MonitorWeightMax(true)); //metrics.add(new MonitorWeightMedian()); for (int i = 0; i < WildcardPattern.TOTAL_LENGTH + 1; i++) { metrics.add(new MonitorDepthCount(i)); } Collections.sort(metrics, comparator); } }