@Override public TileData<List<T>> transform (TileData<List<T>> inputData) throws Exception { if ( _startBucket != null && _endBucket != null ) { if ( _startBucket > _endBucket ) { throw new IllegalArgumentException("Filter by time transformer arguments are invalid. start bucket: " + _startBucket + ", end bucket: " + _endBucket); } } return new FilterTileBucketView<>(inputData, _startBucket, _endBucket); } }
@Override public void setBin(int x, int y, List<T> value) { if (x < 0 || x >= getDefinition().getXBins()) { throw new IllegalArgumentException("Bin x index is outside of tile's valid bin range"); } if (y < 0 || y >= getDefinition().getYBins()) { throw new IllegalArgumentException("Bin y index is outside of tile's valid bin range"); } _base.setBin( x, y, value ); }
@Override public List<T> getBin (int x, int y) { if (x < 0 || x >= getDefinition().getXBins()) { throw new IllegalArgumentException("Bin x index is outside of tile's valid bin range"); } if (y < 0 || y >= getDefinition().getYBins()) { throw new IllegalArgumentException("Bin y index is outside of tile's valid bin range"); } List<T> binContents = _base.getBin(x, y); int binSize = binContents.size(); // if the bucket range falls outside of the available bin range, return empty list. null values assume full range boolean inRange = ( _endBucket == null && _startBucket == null ) || ( _endBucket >= 0 && _startBucket <= binSize ); int start = ( _startBucket != null && _startBucket >= 0 ) ? _startBucket : 0; int end = ( _endBucket != null && _endBucket < binSize ) ? _endBucket : binSize; for(int i = 0; i < binSize; i++) { if ( i >= start && i <= end && inRange ) { binContents.set(i, binContents.get(i)); } else { binContents.set(i, null); } } return binContents; }