!columnRequest.isPagingEnabled(), "CassandraMaterializedFijiResult can not be created with a paged data request: %s.", dataRequest);
/** * Returns a {@code SortedMap} of {@code FijiColumnName} to list of {@code FijiCell} of the * provided {@code FijiResult}. *<p> * Should not be used with PagedFijiResults *</p> * * @param result {@code FijiResult} for which to get materialized result * @param <T> the type of values in the {@code FijiResult} * @return A {@code SortedMap} of each {@code FijiColumnName} to list of {@code FijiCell} * the contents of the materialized result */ public static <T> SortedMap<FijiColumnName, List<FijiCell<T>>> getMaterializedContents(final FijiResult<T> result) { SortedMap<FijiColumnName, List<FijiCell<T>>> materializedResult = new TreeMap<FijiColumnName, List<FijiCell<T>>>(); for (Column column: result.getDataRequest().getColumns()) { if (column.isPagingEnabled()) { throw new IllegalArgumentException( "Columns should not be paged when using MaterializedResult"); } FijiColumnName columnName = column.getColumnName(); List<FijiCell<T>> cells = ImmutableList.copyOf(result.narrowView(columnName).iterator()); materializedResult.put(columnName, cells); } return materializedResult; }
if (!mColumnRequest.isPagingEnabled()) { throw new FijiColumnPagingNotEnabledException( String.format("Paging is not enabled for column [%s].", family));
columnRequest)); if (columnRequest.isPagingEnabled()) { pagedRequestBuilder.newColumnsDef(columnRequest); } else {
if (columnRequest.isPagingEnabled()) { pagedRequestBuilder.newColumnsDef(columnRequest); } else {
if (columnRequest.isPagingEnabled() || (fijiColumnName.isFullyQualified() && (columnRequest.getMaxVersions() == 1))) { if (columnRequest.isPagingEnabled()) { filter.addFilter(new FirstKeyOnlyFilter());
mColumnNameTranslator.toHBaseColumnName(fijiColumnName); if (!columnRequest.isPagingEnabled()) { completelyPaged = false;
if (!mColumnRequest.isPagingEnabled()) { throw new FijiColumnPagingNotEnabledException( String.format("Paging is not enabled for column '%s' from table %s.",
final Column exactRequest = dataRequest.getColumn(column); if (exactRequest != null) { Preconditions.checkArgument(!exactRequest.isPagingEnabled(), "Paging is enabled for column %s in data request %s.", exactRequest, dataRequest); return true; !familyRequest.isPagingEnabled(), "Paging is enabled for column %s in data request %s.", familyRequest, dataRequest); return true; if (columnRequest.getColumnName().getFamily().equals(column.getFamily())) { Preconditions.checkArgument( !columnRequest.isPagingEnabled(), "Paging is enabled for column %s in data request %s.", columnRequest, dataRequest); requestContainsColumns = true;
/** {@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); } }
/** * Initializes the list of associated fully qualified cell FijiPagers for this FijiRowData. Any * non fully qualified cell paging configuration will be ignored. * * @param fijiDataRequest the data request for this FijiRowData. * @param fijiRowData the fijiRowData to generate the pagers from. * @return map of FijiColumnNames to their associated cell pagers. */ private static Map<FijiColumnName, FijiPager> getFijiCellPagers(FijiDataRequest fijiDataRequest, FijiRowData fijiRowData) { Map<FijiColumnName, FijiPager> fijiCellPagers = Maps.newHashMap(); for (FijiDataRequest.Column column : fijiDataRequest.getColumns()) { if (column.isPagingEnabled() && column.getColumnName().isFullyQualified()) { // Only include pagers for fully qualified cells try { LOG.info("Paging enabled for column: {}", column.getColumnName()); FijiPager fijiPager = fijiRowData.getPager(column.getFamily(), column.getQualifier()); fijiCellPagers.put(column.getColumnName(), fijiPager); } catch (FijiColumnPagingNotEnabledException e) { LOG.warn("Paging not enabled for column: {}", column.getColumnName()); } } } return fijiCellPagers; }
/** * Initializes a qualifier pager. * * @param entityId The entityId of the row. * @param dataRequest The requested data. * @param table The Fiji table that this row belongs to. * @param family Iterate through the qualifiers from this map-type family. * @throws FijiColumnPagingNotEnabledException If paging is not enabled for the specified family. */ public HBaseQualifierPager( EntityId entityId, FijiDataRequest dataRequest, HBaseFijiTable table, FijiColumnName family) throws FijiColumnPagingNotEnabledException { Preconditions.checkArgument(!family.isFullyQualified(), "Must use HBaseQualifierPager on a map-type family, but got '{}'.", family); mFamily = family; mDataRequest = dataRequest; mColumnRequest = mDataRequest.getColumn(family.getFamily(), null); if (!mColumnRequest.isPagingEnabled()) { throw new FijiColumnPagingNotEnabledException( String.format("Paging is not enabled for column [%s].", family)); } mEntityId = entityId; mTable = table; mHasNext = true; // there might be no page to read, but we don't know until we issue an RPC // Only retain the table if everything else ran fine: mTable.retain(); }
/** * Initializes the list of associated column family FijiPagers for this FijiRowData. * * @param fijiDataRequest the data request for this FijiRowData. * @return map of families to their associated qualifier pagers. */ private Map<String, FijiPager> getFijiQualifierPagers(FijiDataRequest fijiDataRequest) { Map<String, FijiPager> fijiQualifierPagers = Maps.newHashMap(); for (FijiDataRequest.Column column : fijiDataRequest.getColumns()) { if (column.isPagingEnabled() && !column.getColumnName().isFullyQualified()) { // Only include pagers for column families. try { LOG.info("Paging enabled for column family: {}", column.getColumnName()); FijiPager fijiPager = mRowData.getPager(column.getFamily()); fijiQualifierPagers.put(column.getFamily(), fijiPager); } catch (FijiColumnPagingNotEnabledException e) { LOG.warn("Paging not enabled for column family: {}", column.getColumnName()); } } } return fijiQualifierPagers; }
/** {@inheritDoc} */ @Override public FijiPager getPager( final String family, final String qualifier ) throws FijiColumnPagingNotEnabledException { final FijiColumnName column = FijiColumnName.create(family, qualifier); final Column columnRequest = mResult.getDataRequest().getRequestForColumn(column); Preconditions.checkNotNull(columnRequest, "Requested column %s is not included in the data request %s.", column, mResult.getDataRequest()); if (!columnRequest.isPagingEnabled()) { throw new FijiColumnPagingNotEnabledException( String.format("Requested column %s does not have paging enabled in data request %s.", column, mResult.getDataRequest())); } return new FijiResultPager(mResult.narrowView(column), mLayout); }
/** {@inheritDoc} */ @Override public FijiPager getPager(final String family) throws FijiColumnPagingNotEnabledException { final FijiColumnName column = FijiColumnName.create(family, null); Preconditions.checkState(mLayout.getFamilyMap().get(family).isMapType(), "getPager(String family) is only enabled on map type column families. " + "The column family '%s' is a group type column family. " + "Please use the getPager(String family, String qualifier) method.", family); final Column columnRequest = mResult.getDataRequest().getColumn(column); Preconditions.checkNotNull(columnRequest, "Requested column %s is not included in the data request %s.", column, mResult.getDataRequest()); if (!columnRequest.isPagingEnabled()) { throw new FijiColumnPagingNotEnabledException( String.format("Requested column %s does not have paging enabled in data request %s.", column, mResult.getDataRequest())); } return new FijiResultQualifierPager(mResult.narrowView(column), mLayout); }
/** * 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; }