package kg.apc.charting.rows; import kg.apc.charting.AbstractGraphRow; import kg.apc.charting.elements.GraphPanelChartAverageElement; import kg.apc.charting.AbstractGraphPanelChartElement; import java.util.Iterator; import java.util.Map.Entry; import java.util.concurrent.ConcurrentSkipListMap; public class GraphRowAverages extends AbstractGraphRow { private ConcurrentSkipListMap<Long, AbstractGraphPanelChartElement> values; /** * */ public GraphRowAverages() { super(); values = new ConcurrentSkipListMap<Long, AbstractGraphPanelChartElement>(); } /** * * @param xVal * @param yVal */ @Override public void add(long xVal, double yVal) { GraphPanelChartAverageElement el; if (values.containsKey(xVal)) { el = (GraphPanelChartAverageElement) values.get(xVal); el.add(yVal); yVal = el.getValue(); } else { el = new GraphPanelChartAverageElement(yVal); values.put(xVal, el); } super.add(xVal, yVal); } /** * * @return */ @Override public Iterator<Entry<Long, AbstractGraphPanelChartElement>> iterator() { return values.entrySet().iterator(); } @Override public int size() { return values.size(); } @Override public AbstractGraphPanelChartElement getElement(long value) { return values.get(value); } @Override public AbstractGraphPanelChartElement getLowerElement(long value) { Long lower = values.navigableKeySet().lower(value); if (lower != null) { return getElement(lower); } else { return null; } } }