@Override public Row<Measurement> next() { if (!hasNext()) throw new NoSuchElementException(); Row<Measurement> result = new Row<>(m_current.getTimestamp(), m_current.getResource()); for (String export : m_exports) { result.addElement(getMeasurement(export)); } try { return result; } finally { m_current = m_input.hasNext() ? m_input.next() : null; } }
private Measurement getMeasurement(String name) { Measurement measurement = m_current.getElement(name); return (measurement != null) ? measurement : getNan(name); }
public Results<Measurement> process(Iterator<Row<Sample>> samples) { checkNotNull(samples, "samples argument"); // Build chain of iterators to process results as a stream Rate rate = new Rate(samples, m_resultDescriptor.getSourceNames()); PrimaryData primaryData = new PrimaryData(m_resource, m_start.minus(m_resolution), m_end, m_resultDescriptor, rate); Aggregation aggregation = new Aggregation(m_resource, m_start, m_end, m_resultDescriptor, m_resolution, primaryData); Compute compute = new Compute(m_resultDescriptor, aggregation); Export exports = new Export(m_resultDescriptor.getExports(), compute); Results<Measurement> measurements = new Results<>(); for (Row<Measurement> row : exports) { measurements.addRow(row); } return measurements; }