@Override public FijiRowData apply(final FijiResult<Object> result) { return new FijiResultRowData(mLayout, result); } });
/** {@inheritDoc} */ @Override public <T> Iterable<FijiCell<T>> asIterable(final String family) { return asIterable(family, null); }
/** {@inheritDoc} */ @Override public boolean containsColumn(final String family) { return containsColumn(family, null); }
/** {@inheritDoc} */ @Override public boolean containsCell(final String family, final String qualifier, final long timestamp) { final FijiColumnName column = FijiColumnName.create(family, qualifier); return containsColumnRequest(column) && getCell(family, qualifier, timestamp) != null; }
/** {@inheritDoc} */ @Override public NavigableSet<Long> getTimestamps(final String family, final String qualifier) { final FijiColumnName column = FijiColumnName.create(family, qualifier); validateColumnRequest(column); final NavigableSet<Long> timestamps = Sets.newTreeSet(); for (final FijiCell<?> cell : mResult.narrowView(column)) { timestamps.add(cell.getTimestamp()); } return timestamps; }
/** * Validates that the given {@code FijiColumnName} is requested in the {@code FijiDataRequest} * for this {@code FijiRowData}. This means different things for different column types: * * <h4>Fully Qualified Column</h4> * <p> * The column or its family must be in the data request. The requested column or family may not * be paged. * </p> * * <h4>Family Column</h4> * <p> * The family, or at least one fully qualified column belonging to the family must be in the * data request. The family column request or the qualified column requests belonging to the * family may not be paged. * </p> * * @param column The column for which to validate a request exists. */ private void validateColumnRequest(final FijiColumnName column) { if (!containsColumnRequest(column)) { throw new NullPointerException( String.format("Requested column %s is not included in the data request %s.", column, mResult.getDataRequest())); } }
/** {@inheritDoc} */ @Override public <T> T getMostRecentValue(final String family, final String qualifier) { final FijiCell<T> cell = getMostRecentCell(family, qualifier); return cell == null ? null : cell.getData(); }
/** {@inheritDoc} */ @Override public <T> T getValue(final String family, final String qualifier, final long timestamp) { final FijiCell<T> cell = getCell(family, qualifier, timestamp); return cell == null ? null : cell.getData(); }
/** {@inheritDoc} */ @Override public <T> Iterator<FijiCell<T>> iterator(final String family) { final FamilyLayout familyLayout = mLayout.getFamilyMap().get(family); Preconditions.checkArgument(familyLayout != null, "Column %s has no data request.", family); Preconditions.checkState(familyLayout.isMapType(), "iterator(String family) is only enabled on map type column families." + " The column family [%s], is a group type column family." + " Please use the iterator(String family, String qualifier) method.", family); return iterator(family, null); }
/** {@inheritDoc} */ @Override public <T> NavigableMap<Long, FijiCell<T>> getCells(final String family, final String qualifier) { final FijiColumnName column = FijiColumnName.create(family, qualifier); validateColumnRequest(column); final NavigableMap<Long, FijiCell<T>> cells = Maps.newTreeMap(TimestampComparator.INSTANCE); for (final FijiCell<T> cell : mResult.<T>narrowView(column)) { cells.put(cell.getTimestamp(), cell); } return cells; }
/** {@inheritDoc} */ @Override public boolean containsColumn(final String family, final String qualifier) { final FijiColumnName column = FijiColumnName.create(family, qualifier); return containsColumnRequest(column) && mResult.narrowView(column).iterator().hasNext(); }
/** {@inheritDoc} */ @Override public FijiRowData get( final EntityId entityId, final FijiDataRequest dataRequest ) throws IOException { return new FijiResultRowData( mReaderLayoutCapsule.getLayout(), getResult(entityId, dataRequest)); }
/** {@inheritDoc} */ @Override public NavigableSet<String> getQualifiers(final String family) { final FijiColumnName column = FijiColumnName.create(family, null); validateColumnRequest(column); final NavigableSet<String> qualifiers = Sets.newTreeSet(); for (final FijiCell<?> cell : mResult.narrowView(column)) { qualifiers.add(cell.getColumn().getQualifier()); } return qualifiers; }
/** {@inheritDoc} */ @Override public <T> Iterable<FijiCell<T>> asIterable( final String family, final String qualifier ) { final FijiColumnName column = FijiColumnName.create(family, qualifier); Preconditions.checkArgument(containsColumnRequest(column), "Column %s has no data request.", column, mResult.getDataRequest()); return mResult.narrowView(column); }
/** {@inheritDoc} */ @Override public <T> Iterator<FijiCell<T>> iterator(final String family, final String qualifier) { return this.<T>asIterable(family, qualifier).iterator(); }
.put(column, cells) .build()); return new FijiResultRowData(mLayout, result);
/** {@inheritDoc} */ @Override public <T> NavigableMap<Long, T> getValues(final String family, final String qualifier) { final FijiColumnName column = FijiColumnName.create(family, qualifier); validateColumnRequest(column); final NavigableMap<Long, T> values = Maps.newTreeMap(TimestampComparator.INSTANCE); for (final FijiCell<T> cell : mResult.<T>narrowView(column)) { values.put(cell.getTimestamp(), cell.getData()); } return values; }
/** {@inheritDoc} */ @Override public FijiRowData next(final int pageSize) { if (!hasNext()) { throw new NoSuchElementException("Fiji pager is exhausted."); } final FijiColumnName column = mColumnRequest.getColumnName(); final ColumnsDef columnDef = ColumnsDef .create() .withFilter(mColumnRequest.getFilter()) .withPageSize(FijiDataRequest.PAGING_DISABLED) .withMaxVersions(mColumnRequest.getMaxVersions()) .add(column, mColumnRequest.getReaderSpec()); final FijiDataRequestBuilder dataRequest = FijiDataRequest.builder(); dataRequest.addColumns(columnDef); final List<FijiCell<Object>> cells = ImmutableList.copyOf(Iterators.limit(mCells, pageSize)); final FijiResult<Object> result = MaterializedFijiResult.create( mResult.getEntityId(), dataRequest.build(), mLayout, ImmutableSortedMap.<FijiColumnName, List<FijiCell<Object>>>naturalOrder() .put(column, cells) .build()); return new FijiResultRowData(mLayout, result); }
/** {@inheritDoc} */ @Override public <T> FijiCell<T> getMostRecentCell(final String family, final String qualifier) { final FijiColumnName column = FijiColumnName.create(family, qualifier); validateColumnRequest(column); return Helpers.getFirst(mResult.<T>narrowView(column)); }
/** {@inheritDoc} */ @Override public <T> NavigableMap<String, NavigableMap<Long, T>> getValues(final String family) { final FijiColumnName column = FijiColumnName.create(family, null); validateColumnRequest(column); Preconditions.checkState(mLayout.getFamilyMap().get(family).isMapType(), "getValues(String family) is only enabled on map type column families." + " The column family [%s], is a group type column family." + " Please use the getValues(String family, String qualifier) method.", family); final NavigableMap<String, NavigableMap<Long, T>> qualifiers = Maps.newTreeMap(); for (final FijiCell<T> cell : mResult.<T>narrowView(column)) { NavigableMap<Long, T> columnValues = qualifiers.get(cell.getColumn().getQualifier()); if (columnValues == null) { columnValues = Maps.newTreeMap(TimestampComparator.INSTANCE); qualifiers.put(cell.getColumn().getQualifier(), columnValues); } columnValues.put(cell.getTimestamp(), cell.getData()); } return qualifiers; }