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; public class GraphRowOverallAverages extends AbstractGraphRow implements Iterator<Entry<Long, AbstractGraphPanelChartElement>>, Entry<Long, AbstractGraphPanelChartElement> { private boolean hasNext; private GraphPanelChartAverageElement element; private double avgX = 0; /** * */ public GraphRowOverallAverages() { super(); element = new GraphPanelChartAverageElement(); hasNext = true; } /** * * @param xVal * @param yVal */ @Override public void add(long xVal, double yVal) { avgX = (avgX * element.getCount() + xVal) / (element.getCount() + 1); element.add(yVal); super.add((long) avgX, element.getValue()); } /** * * @return */ public Iterator<Entry<Long, AbstractGraphPanelChartElement>> iterator() { hasNext = true; return this; } public boolean hasNext() { return hasNext; } public Entry<Long, AbstractGraphPanelChartElement> next() { hasNext = false; return this; } public void remove() { throw new UnsupportedOperationException("Not supported yet."); } public Long getKey() { return Math.round(avgX); } public GraphPanelChartAverageElement getValue() { return element; } public AbstractGraphPanelChartElement setValue(AbstractGraphPanelChartElement value) { throw new UnsupportedOperationException("Not supported yet."); } @Override public int size() { return 1; } @Override public AbstractGraphPanelChartElement getElement(long value) { if (getKey() == value) { return element; } else { return null; } } }