package eu.play_project.dcep.api.measurement; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class NodeMeasurementResult extends MeasurementResult implements Comparable<NodeMeasurementResult>{ private static final long serialVersionUID = 100L; private List<PatternMeasuringResult> measuredValues; //PatternID number of processed events. private Map<String, LoadTimeSeries> ltsMap; private List<LoadTimeSeries> ltsList; private double totalLoad; private int statisticsWindows = 0; private int compontenQueue = 0; private int etalisInputQueue = 0; private int period; public NodeMeasurementResult(String nodeName) { super(nodeName); this.ltsMap = new HashMap<String, LoadTimeSeries>(); this.ltsList = new LinkedList<LoadTimeSeries>(); } public NodeMeasurementResult(String nodeName, int period, List<PatternMeasuringResult> values) { super(nodeName, period); this.measuredValues = values; this.ltsMap = new HashMap<String, LoadTimeSeries>(); this.ltsList = new LinkedList<LoadTimeSeries>(); } public List<PatternMeasuringResult> getMeasuredValues() { return measuredValues; } public void setMeasuredValues(List<PatternMeasuringResult> measuredValues) { this.measuredValues = measuredValues; } public void addMeasuredValue(PatternMeasuringResult measuredValues) { if(this.measuredValues == null){ this.measuredValues = new ArrayList<PatternMeasuringResult>(); } this.measuredValues.add(measuredValues); } public LoadTimeSeries getLoatTimeSeries(String name) { if(ltsMap.get(name)==null){ if(statisticsWindows==0){ throw new RuntimeException("statisticsWindow must be > 0."); } ltsMap.put(name, new LoadTimeSeries(name, statisticsWindows)); } return ltsMap.get(name); } public Map<String, LoadTimeSeries> getAllLoatTimeSeries() { return ltsMap; } public void addElementToLoatTimeSeries(String name, Double vaue) { ltsMap.get(name).add(vaue); } public void setLoatTimeSeries(String name, LoadTimeSeries loadTimeSeries) { ltsMap.put(name, loadTimeSeries); } public double getTotalLoad(){ return totalLoad; } public void setTotalLoad(double totalLoad) { this.totalLoad = totalLoad; } public int getStatisticsWindows() { return statisticsWindows; } public void setStatisticsWindows(int statisticsWindows) { this.statisticsWindows = statisticsWindows; } @Override public int compareTo(NodeMeasurementResult o) { if(this.totalLoad < o.getTotalLoad()){ return -1; }else if(this.totalLoad == o.getTotalLoad()){ return 0; }else{ return 1; } } private void putLTSinList(){ ltsList = new LinkedList<LoadTimeSeries>(); for (String patternId : ltsMap.keySet()) { ltsList.add(ltsMap.get(patternId)); } } public List<LoadTimeSeries> getLoadTimeSeriesList(){ putLTSinList(); return ltsList; } public int getCompontenQueue() { return compontenQueue; } public void setCompontenQueue(int compontenQueue) { this.compontenQueue = compontenQueue; } public int getEtalisInputQueue() { return etalisInputQueue; } public void setEtalisInputQueue(int etalisInputQueue) { this.etalisInputQueue = etalisInputQueue; } }