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.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 8/12/13
* Time: 11:01 AM
*/
public class FalseFringeHHHWeight extends HHHMonitorMetric {
protected FalseHHHFinder falseHHHFinder;
public FalseFringeHHHWeight(FalseHHHFinder falseHHHFinder) {
this.falseHHHFinder = falseHHHFinder;
}
@Override
public Double compute(List<WildcardPattern> realHhhs, List<WildcardPattern> reportedHHH, List<WildcardPattern> monitors) {
List<WildcardPattern> falseHHHs = falseHHHFinder.getLastFalseHHHs();
Set<WildcardPattern> monitorsSet = new HashSet<>(monitors);
double falseFringeHHHsWeight = 0;
int count = 0;
for (WildcardPattern falseHHH : falseHHHs) {
if (monitorsSet.contains(falseHHH)) {
falseFringeHHHsWeight += falseHHH.getWeight();
count++;
}
}
if (count != 0) {
return falseFringeHHHsWeight / count;
} else {
return null;
}
}
@Override
public String toString() {
return "FalseFringeHHHWeight";
}
}