final CellDecoderProvider decoderProvider ) throws IOException { final Collection<Column> columnRequests = dataRequest.getColumns(); final FijiDataRequestBuilder unpagedRequestBuilder = FijiDataRequest.builder(); final FijiDataRequestBuilder pagedRequestBuilder = FijiDataRequest.builder(); unpagedRequestBuilder.withTimeRange( dataRequest.getMinTimestamp(), dataRequest.getMaxTimestamp()); pagedRequestBuilder.withTimeRange(dataRequest.getMinTimestamp(), dataRequest.getMaxTimestamp()); final FijiDataRequest pagedRequest = pagedRequestBuilder.build(); if (unpagedRequest.isEmpty() && pagedRequest.isEmpty()) { return new EmptyFijiResult<T>(entityId, dataRequest); if (!unpagedRequest.isEmpty()) { materializedFijiResult = HBaseMaterializedFijiResult.create( if (!pagedRequest.isEmpty()) { pagedFijiResult = new HBasePagedFijiResult<T>( if (unpagedRequest.isEmpty()) { return pagedFijiResult; } else if (pagedRequest.isEmpty()) { return materializedFijiResult; } else {
/** {@inheritDoc} */ @Override public FijiDataRequest getDataRequest() { // We only need to read the most recent email address field from the user's row. return FijiDataRequest.create("info", "email"); }
/** * Constructs a data request with paging enabled for the specified family. * * @param fijiDataRequest to use as a base. * @param qualifierPagingMap of fiji columns to page sizes. * @return A new data request with paging enabled for the specified family. */ public static FijiDataRequest addQualifierPaging(FijiDataRequest fijiDataRequest, Map<FijiColumnName, Integer> qualifierPagingMap) { FijiDataRequestBuilder pagedRequestBuilder = FijiDataRequest.builder(); for (Column column : fijiDataRequest.getColumns()) { FijiColumnName fijiColumnName = column.getColumnName(); if (qualifierPagingMap.containsKey(fijiColumnName)) { Integer pageSize = qualifierPagingMap.get(fijiColumnName); pagedRequestBuilder.newColumnsDef().withPageSize(pageSize).add(fijiColumnName); } } FijiDataRequest merged = fijiDataRequest.merge(pagedRequestBuilder.build()); return merged; }
/** * Determines whether a timestamp <code>ts</code> is within the time range for this * request. * * @param ts The timestamp to check. * @return Whether the timestamp is within the range of this request. */ public boolean isTimestampInRange(long ts) { if (HConstants.LATEST_TIMESTAMP == ts && HConstants.LATEST_TIMESTAMP == getMaxTimestamp()) { // Special case for "most recent timestamp." return true; } return ts >= getMinTimestamp() && ts < getMaxTimestamp(); }
/** * Narrow a {@link FijiDataRequest} to a column. Will return a new data request. The column may * be fully qualified or a family. * * @param column to narrow data request. * @param dataRequest to narrow. * @return a data request narrowed to the specified column. */ public static FijiDataRequest narrowRequest( final FijiColumnName column, final FijiDataRequest dataRequest ) { final List<Column> columnRequests = getColumnRequests(column, dataRequest); final FijiDataRequestBuilder builder = FijiDataRequest.builder(); builder.withTimeRange(dataRequest.getMinTimestamp(), dataRequest.getMaxTimestamp()); for (Column columnRequest : columnRequests) { builder.newColumnsDef(columnRequest); } return builder.build(); }
/** {@inheritDoc} */ @Override public FijiDataRequest getDataRequest() { return FijiDataRequest.builder().build(); }
/** * Determines whether paging is enabled on any of the columns in this request. * * @return Whether paging is enabled. */ public boolean isPagingEnabled() { for (Column column : getColumns()) { if (column.isPagingEnabled()) { return true; } } return false; }
for (Column otherCol : other.getColumns()) { if (otherCol.getFilter() != null) { for (Column myCol : getColumns()) { if (myCol.getFamily().equals(otherCol.getFamily())) { outFamily = mergeColumn(myCol.getFamily(), null, myCol, outFamily); for (Column myCol : getColumns()) { if (myCol.getFilter() != null) { for (Column otherCol : other.getColumns()) { if (otherCol.getFamily().equals(myCol.getFamily())) { outFamily = mergeColumn(myCol.getFamily(), null, outFamily, otherCol); for (Column otherCol : other.getColumns()) { if (otherCol.getQualifier() != null && !families.contains(otherCol.getFamily())) { Column myCol = getColumn(otherCol.getFamily(), otherCol.getQualifier()); if (null == myCol) { outCols.add(mergeColumn(myCol.getFamily(), myCol.getQualifier(), myCol, otherCol)); for (Column myCol : getColumns()) { if (myCol.getQualifier() != null && !families.contains(myCol.getFamily())) { Column otherCol = other.getColumn(myCol.getFamily(), myCol.getQualifier()); if (null == otherCol) { long outMinTs = Math.min(getMinTimestamp(), other.getMinTimestamp()); long outMaxTs = Math.max(getMaxTimestamp(), other.getMaxTimestamp());
final FijiDataRequest dataRequest ) { final Column exactRequest = dataRequest.getColumn(column); if (exactRequest != null) { return ImmutableList.of(exactRequest); dataRequest.getRequestForColumn(FijiColumnName.create(column.getFamily(), null)); if (familyRequest == null) { return ImmutableList.of(); FijiDataRequest.builder().addColumns(columnDef).build().getColumn(column)); } else { for (Column columnRequest : dataRequest.getColumns()) { if (columnRequest.getColumnName().getFamily().equals(column.getFamily())) { columnRequests.add(columnRequest);
Preconditions.checkArgument(colName.isFullyQualified()); Column columnRequest = dataRequest.getColumn(colName.getFamily(), colName.getQualifier()); if (columnRequest == null) { columnRequest = dataRequest.getColumn(colName.getFamily(), null); Preconditions.checkArgument(columnRequest != null, "Couldn't create pager: " final FijiDataRequestBuilder builder = FijiDataRequest.builder() .withTimeRange(dataRequest.getMinTimestamp(), dataRequest.getMaxTimestamp()); builder.newColumnsDef(mColumnRequest); mHasNext = true; // there might be no page to read, but we don't know until we issue an RPC mPageMaxTimestamp = mDataRequest.getMaxTimestamp(); mTotalVersions = mColumnRequest.getMaxVersions(); mVersionsCount = 0;
boolean completelyPaged = mFijiDataRequest.isPagingEnabled() ? true : false; for (FijiDataRequest.Column columnRequest : mFijiDataRequest.getColumns()) { final FijiColumnName fijiColumnName = columnRequest.getColumnName(); final HBaseColumnName hbaseColumnName = .setTimeRange(mFijiDataRequest.getMinTimestamp(), mFijiDataRequest.getMaxTimestamp()) .setMaxVersions(largestMaxVersions);
FijiDataRequestBuilder qualifierRequestBuilder = FijiDataRequest.builder(); for (Column column : fijiDataRequest.getColumns()) { FijiColumnName fijiColumnName = column.getColumnName(); if (fijiColumnName.isFullyQualified()
/** {@inheritDoc} */ @Override @SuppressWarnings("unchecked") public <U extends T> FijiResult<U> narrowView(final FijiColumnName column) { final FijiDataRequest narrowRequest = narrowRequest(column, mDataRequest); if (narrowRequest.isEmpty()) { return new EmptyFijiResult<U>(mMaterializedResult.getEntityId(), narrowRequest); } boolean containsPagedColumns = false; boolean containsUnpagedColumns = false; for (Column columnRequest : narrowRequest.getColumns()) { if (columnRequest.isPagingEnabled()) { containsPagedColumns = true; } else { containsUnpagedColumns = true; } if (containsPagedColumns && containsUnpagedColumns) { return DefaultFijiResult.create( narrowRequest, mMaterializedResult.<U>narrowView(column), mPagedResult.<U>narrowView(column)); } } if (containsPagedColumns) { return mPagedResult.narrowView(column); } else { return mMaterializedResult.narrowView(column); } }
final FijiDataRequest nextPageDataRequest = FijiDataRequest.builder() .withTimeRange(mDataRequest.getMinTimestamp(), mPageMaxTimestamp) .addColumns(ColumnsDef.create() .withFilter(mColumnRequest.getFilter()) if ((mPageMaxTimestamp <= mDataRequest.getMinTimestamp()) || (mVersionsCount >= mTotalVersions)) { mHasNext = false;
public <U extends T> FijiResult<U> narrowView(final FijiColumnName column) { final FijiDataRequest narrowRequest = DefaultFijiResult.narrowRequest(column, mDataRequest); if (narrowRequest.equals(mDataRequest)) { return (FijiResult<U>) this; ImmutableSortedMap.naturalOrder(); for (Column columnRequest : narrowRequest.getColumns()) { final FijiColumnName requestedColumn = columnRequest.getColumnName();
final Collection<Column> columnRequests = mResult.getDataRequest().getColumns(); final Column familyRequest = mResult.getDataRequest().getRequestForColumn(family, null); if (familyRequest != null) { String previousQualifier = null;
mDataRequest.getColumn(fijiColumnName.getFamily(), null); if (null == columnRequest) { mDataRequest.getColumn(fijiColumnName.getFamily(), fijiColumnName.getQualifier()); if (mDataRequest.isTimestampInRange(timestamp)) { } else { LOG.debug("Excluding cell at timestamp " + timestamp + " because it is out of range [" + mDataRequest.getMinTimestamp() + "," + mDataRequest.getMaxTimestamp() + ")");
final Column exactRequest = dataRequest.getColumn(column); if (exactRequest != null) { Preconditions.checkArgument(!exactRequest.isPagingEnabled(), dataRequest.getColumn(FijiColumnName.create(column.getFamily(), null)); if (familyRequest == null) { return false; } else { boolean requestContainsColumns = false; for (final Column columnRequest : dataRequest.getColumns()) { if (columnRequest.getColumnName().getFamily().equals(column.getFamily())) { Preconditions.checkArgument(
/** * Return a FijiDataRequest that describes which input columns need to be available. * * @return A fiji data request. */ public FijiDataRequest getDataRequest() { final FijiDataRequest dataRequest = mProducer.getDataRequest(); if (dataRequest.isEmpty()) { throw new JobConfigurationException(mProducer.getClass().getName() + " returned an empty FijiDataRequest, which is not allowed."); } return dataRequest; }