package org.das2.qds; import java.util.Iterator; import org.das2.datum.DatumRange; import org.das2.qds.ops.Ops; /** * Make any QDataSet into a table, then iterate over the records. This * was introduced to support the first Autoplot HAPI server, but will be * useful elsewhere. * @author jbf */ public class RecordIterator implements Iterator { QDataSet src; int index; int lastIndex; public static long TIME_STAMP= System.currentTimeMillis(); /** * set up the iterator. If the src is rank 1 with a DEPEND_0, then * the two are bundled together. * @param src */ public RecordIterator( QDataSet src ) { if ( src.rank()==0 ) { throw new IllegalArgumentException("rank 0 dataset"); } else if ( src.rank()>2 ) { throw new IllegalArgumentException("rank is greater than 2"); } QDataSet dep0= (QDataSet) src.property(QDataSet.DEPEND_0); if ( dep0!=null ) { this.src= Ops.bundle( dep0, src ); } else { this.src= src; } this.index= 0; this.lastIndex= src.length(); } /** * limit the data returned such that only data within the datum range * provided are returned. * @param dr */ public void constrainDepend0( DatumRange dr ) { QDataSet dep0= Ops.slice1( this.src, 0 ); QDataSet findeces= Ops.findex( dep0, dr ); this.index= (int)Math.ceil( findeces.value(0) ); this.lastIndex= (int)Math.ceil( findeces.value(1) ); } @Override public boolean hasNext() { return index