package edu.usc.enl.dynamicmeasurement.metric.hhhmonitors;
import edu.usc.enl.dynamicmeasurement.algorithms.tasks.hhh.flow.singleswitch.FalseHHHFinder;
import edu.usc.enl.dynamicmeasurement.model.WildcardPattern;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 8/12/13
* Time: 8:57 AM
*/
public class TrueHHHMonitorMetric extends HHHMonitorMetric {
protected final boolean ratio;
protected final FalseHHHFinder falseHHHFinder;
public TrueHHHMonitorMetric(boolean ratio, FalseHHHFinder falseHHHFinder) {
this.ratio = ratio;
this.falseHHHFinder = falseHHHFinder;
}
@Override
public Double compute(List<WildcardPattern> realHhhs, List<WildcardPattern> reportedHHH, List<WildcardPattern> monitors) {
//find reported hhhs that have descendent monitors or true descendent hhhs
List<WildcardPattern> falseHHHs = falseHHHFinder.getLastFalseHHHs();
if (ratio) {
return ((double) (reportedHHH.size() - falseHHHs.size())) / reportedHHH.size();
} else {
return (double) (reportedHHH.size() - falseHHHs.size());
}
}
@Override
public String toString() {
return toString2() + (ratio ? "_ratio" : "");
}
protected String toString2() {
return "TrueHHHMonitorMetric";
}
}