public void sequence(DapSequence seq) throws DapException { List<DapVariable> fields = seq.getFields(); Odometer odom = null; if (seq.getRank() == 0) { // scalar odom = new ScalarOdometer(); } else { // dimensioned List<Slice> slices = ce.getConstrainedSlices(seq); odom = Odometer.factory(slices, seq.getDimensions(), false); } try { while (odom.hasNext()) { // Decide how many rows for this sequence int nrows = (rowcount == 0 ? this.values.nextCount(MAXROWS) : rowcount); writer.writeObject(DapType.INT64, (long) nrows); for (int i = 0; i < nrows; i++) { for (int j = 0; j < fields.size(); j++) { DapVariable field = fields.get(j); variable(field); } } odom.next(); } } catch (IOException ioe) { throw new DapException(ioe); } }
protected static Object fieldValue(DapSequence seq, DataRecord record, String field) throws DapException { DapVariable dapv = seq.findByName(field); if (dapv == null) throw new DapException("Unknown variable in filter: " + field); if (dapv.getSort() != DapSort.ATOMICVARIABLE) throw new DapException("Non-atomic variable in filter: " + field); if (dapv.getRank() > 0) throw new DapException("Non-scalar variable in filter: " + field); DataAtomic da = (DataAtomic) (record.readfield(field)); if (da == null) throw new DapException("No such field: " + field); return da.read(0); }