/** * 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; }
/** * Create a Fiji pager backed by a {@code FijiResult}. * * @param result The {@code FijiResult} backing this pager. * @param layout The {@code FijiTableLayout} of the table. */ public FijiResultPager( final FijiResult<Object> result, final FijiTableLayout layout ) { mResult = result; mCells = mResult.iterator(); mLayout = layout; final FijiDataRequest dataRequest = mResult.getDataRequest(); final Collection<Column> columnRequests = dataRequest.getColumns(); Preconditions.checkArgument(columnRequests.size() == 1, "Can not create FijiResultPager with multiple columns. Data request: %s.", dataRequest); mColumnRequest = columnRequests.iterator().next(); }
/** * Create a Fiji qualifier pager backed by a {@code FijiResult}. * * @param result The {@code FijiResult} backing this pager. * @param layout The {@code FijiTableLayout} of the table. */ public FijiResultQualifierPager( final FijiResult<Object> result, final FijiTableLayout layout ) { mResult = result; mCells = Iterators.peekingIterator(mResult.iterator()); mLayout = layout; final FijiDataRequest dataRequest = mResult.getDataRequest(); final Collection<Column> columnRequests = dataRequest.getColumns(); Preconditions.checkArgument(columnRequests.size() == 1, "Can not create FijiResultPager with multiple columns. Data request: %s.", dataRequest); mColumnRequest = columnRequests.iterator().next(); }
) throws IOException { final List<BoundColumnReaderSpec> readerSpecs = Lists.newArrayList(); for (Column columnRequest : request.getColumns()) { final ColumnReaderSpec readerSpec = columnRequest.getReaderSpec(); if (readerSpec != null) {
/** * 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; }
/** * 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; }
ImmutableSortedMap.naturalOrder(); for (Column columnRequest : mDataRequest.getColumns()) { final PagedColumnIterable columnIterable = new PagedColumnIterable(columnRequest); mCloser.register(columnIterable);
/** * 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; }
/** * 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; }
/** * Constructs a data request with cell paging enabled for the specified columns. * * @param fijiDataRequest to use as a base. * @param cellPagingMap of fiji columns to page sizes. * @return A new data request with paging enabled for the specified columns. */ public static FijiDataRequest addCellPaging(FijiDataRequest fijiDataRequest, Map<FijiColumnName, Integer> cellPagingMap) { FijiDataRequestBuilder pagedRequestBuilder = FijiDataRequest.builder(); for (Column column : fijiDataRequest.getColumns()) { FijiColumnName fijiColumnName = column.getColumnName(); if (cellPagingMap.containsKey(fijiColumnName)) { Integer pageSize = cellPagingMap.get(fijiColumnName); pagedRequestBuilder.newColumnsDef().withPageSize(pageSize).add(fijiColumnName); } } FijiDataRequest merged = fijiDataRequest.merge(pagedRequestBuilder.build()); return merged; }
final Collection<Column> columnRequests = mResult.getDataRequest().getColumns();
for (FijiDataRequest.Column column : mDataRequest.getColumns()) { if (column.getReaderSpec() != null) { overridesBuilder.put(column.getColumnName(), column.getReaderSpec());
@Override public FijiDataRequest getDataRequest() { FijiDataRequest request = super.getDataRequest(); Collection<FijiDataRequest.Column> columns = request.getColumns(); if (columns.size() != 1) { throw new RuntimeException("Should be exactly one input column"); } FijiDataRequest.Column col = columns.iterator().next(); FijiDataRequestBuilder out = FijiDataRequest.builder(); out.withTimeRange(request.getMinTimestamp(), request.getMaxTimestamp()) .newColumnsDef().withMaxVersions(Integer.MAX_VALUE) .withPageSize(col.getPageSize()) .withFilter(col.getFilter()) .add(col.getFamily(), col.getQualifier()); return out.build(); } }
/** * Validates a data request against this validator's table layout. * * @param dataRequest The FijiDataRequest to validate. * @throws FijiDataRequestException If the data request is invalid. */ public void validate(FijiDataRequest dataRequest) { for (FijiDataRequest.Column column : dataRequest.getColumns()) { final String qualifier = column.getQualifier(); final FijiTableLayout.LocalityGroupLayout.FamilyLayout fLayout = mTableLayout.getFamilyMap().get(column.getFamily()); if (null == fLayout) { throw new FijiDataRequestException(String.format("Table '%s' has no family named '%s'.", mTableLayout.getName(), column.getFamily())); } if (fLayout.isGroupType() && (null != column.getQualifier())) { if (!fLayout.getColumnMap().containsKey(qualifier)) { throw new FijiDataRequestException(String.format("Table '%s' has no column '%s'.", mTableLayout.getName(), column.getName())); } } } } }
final Collection<Column> columnRequests = mResult.getDataRequest().getColumns();
ImmutableSortedMap.naturalOrder(); for (Column columnRequest : mDataRequest.getColumns()) { final PagedColumnIterable columnIterable = new PagedColumnIterable(columnRequest); columnResults.put(columnRequest.getColumnName(), columnIterable);
ImmutableSortedMap.naturalOrder(); for (Column columnRequest : narrowRequest.getColumns()) { final FijiColumnName requestedColumn = columnRequest.getColumnName();
ImmutableSortedMap.naturalOrder(); for (Column columnRequest : dataRequest.getColumns()) {
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); } }