package edu.usc.enl.dynamicmeasurement.algorithms.tasks.multitask.multiswitch.tcammultitaskmultiswitch; import edu.usc.enl.dynamicmeasurement.algorithms.tasks.Task2; import edu.usc.enl.dynamicmeasurement.algorithms.tasks.hhh.flow.multiswitch.MatrixSet; import edu.usc.enl.dynamicmeasurement.algorithms.tasks.hhh.flow.multiswitch.MultiSwitch2; import edu.usc.enl.dynamicmeasurement.algorithms.tasks.multitask.aggregator.AccuracyAggregator; import edu.usc.enl.dynamicmeasurement.model.monitorpoint.MonitorPoint; import edu.usc.enl.dynamicmeasurement.util.Util; import org.w3c.dom.Element; import java.util.Set; /** * Created with IntelliJ IDEA. * User: masoud * Date: 8/23/13 * Time: 9:54 AM */ public class TCAMMultiSwitchTask extends Task2 { private final MatrixSet<MonitorPoint> monitorPointUsage; private double accuracy; private AccuracyAggregator accuracyAggregator; @Override public void updateStats() { } public double getAccuracy() { return accuracy; } public void setAccuracy2(double accuracy) { this.accuracy = accuracy; } public AccuracyAggregator getAccuracyAggregator() { return accuracyAggregator; } public void setAccuracyAggregator(AccuracyAggregator accuracyAggregator) { this.accuracyAggregator = accuracyAggregator; } public TCAMMultiSwitchTask(Element element) throws Exception { super(element); MatrixSet<MonitorPoint> myMonitorPoints; { Set<MonitorPoint> monitorPoints = Util.getNetwork().getMonitorPoints(); MatrixSet.MatrixMapping<MonitorPoint> mapping = new MatrixSet.MatrixMapping<>(); for (MonitorPoint monitorPoint : monitorPoints) { mapping.add(monitorPoint.clone()); } myMonitorPoints = new MatrixSet<MonitorPoint>(mapping); myMonitorPoints.clear(); for (MonitorPoint monitorPoint : monitorPoints) { if (monitorPoint.hasDataFrom(this.filter)) { myMonitorPoints.add(monitorPoint); } } } this.monitorPointUsage = myMonitorPoints; } public MultiSwitch2 getMultiSwitch() { return (MultiSwitch2) user.getImplementation(); } public double getThreshold() { return getMultiSwitch().getThreshold(); } public boolean usedResourceOn(MatrixSet<MonitorPoint> other) { return monitorPointUsage.getSimilarity(other) > 0; } public Set<MonitorPoint> getMonitorPoints() { return monitorPointUsage; } }