@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(); } }
/** * 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; }
.withFilter(mColumnRequest.getFilter()) .withMaxVersions(maxVersions) .add(mColumnName)) .build();
.withPageSize(column.getPageSize()) .withMaxVersions(column.getMaxVersions()) .add(columnName.getFamily(), columnName.getQualifier());
.withPageSize(FijiDataRequest.PAGING_DISABLED) .withMaxVersions(mColumnRequest.getMaxVersions()) .add(column, mColumnRequest.getReaderSpec()); final FijiDataRequestBuilder dataRequest = FijiDataRequest.builder(); dataRequest.addColumns(columnDef);
/** {@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); }
/** * Return a builder for columns, initialized from an existing * {@link FijiDataRequest.Column}. * * <p>Creates an object that allows you to specify a set of related columns attached * to the same FijiDataRequest that all share the same retrieval properties, like * the number of max versions.</p> * * <p>This builder will have all properties fully initialized, and it will already * include a request for the column named as an argument. Only additional calls to * <code>FijiDataRequestBuilder.ColumnsDef.add(...)</code> are permitted.</p> * * @param existingColumn is a Column from an existing FijiDataRequest object that should * be included in this new FijiDataRequest. * @return a new FijiDataRequestBuilder.ColumnsDef builder object associated with this * data request builder. */ public ColumnsDef newColumnsDef(FijiDataRequest.Column existingColumn) { return newColumnsDef() .withFilter(existingColumn.getFilter()) .withPageSize(existingColumn.getPageSize()) .withMaxVersions(existingColumn.getMaxVersions()) .add(existingColumn.getFamily(), existingColumn.getQualifier()); }
/** {@inheritDoc} */ @Override public FijiDataRequest getDataRequest() { final CellRewriteSpec spec; try { spec = getSpecFromConf(getConf()); } catch (IOException ioe) { throw new FijiIOException(ioe); } final FijiColumnName column = new FijiColumnName(spec.getColumn()); final ColumnReaderSpec readerSpec; if (spec.getReaderSchema() == null) { readerSpec = ColumnReaderSpec.avroWriterSchemaGeneric(); } else { final Schema readerSchema = new Schema.Parser().parse(spec.getReaderSchema()); readerSpec = ColumnReaderSpec.avroReaderSchemaGeneric(readerSchema); } return FijiDataRequest.builder() .addColumns(ColumnsDef.create() .withMaxVersions(HConstants.ALL_VERSIONS) .add(column, readerSpec)) .build(); }
/** * 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; }
/** * Requests data from a column and specifies read properties for that column. * * <p> * Data request properties cannot be modified (using <code>withX()</code> methods) * after columns have been added to the column request (using <code>add()</code> methods). * </p> * * @param family Family of the column to request data from. * @param qualifier Qualifier of the column to request data from. * Null means request an entire map-type family. * @param columnReaderSpec Read properties to apply when decoding cells from the column. * @return this column request builder instance. * @throws FijiInvalidNameException if the column name is invalid. */ public ColumnsDef add( final String family, final String qualifier, final ColumnReaderSpec columnReaderSpec ) { return add(FijiColumnName.create(family, qualifier), columnReaderSpec); }
/** * Factory method for a simple FijiDataRequest for the most recent * version of a specific family:qualifier. * * <p>This method does not facilitate additional customization of the * data request, such as requesting multiple columns, or setting * the timestamp range. For that, get a {@link FijiDataRequestBuilder} by * calling {@link #builder()}.</p> * * @param family the column family to request * @param qualifier the column qualifier to request * @return a new FijiDataRequest that retrieves the selected column. */ public static FijiDataRequest create(String family, String qualifier) { FijiDataRequestBuilder builder = builder(); builder.newColumnsDef().add(family, qualifier); return builder.build(); }
/** * Adds a column to the data request, using the properties associated with this * FijiDataRequestBuilder.ColumnsDef object. * * <p> * Data request properties cannot be modified (using <code>withX()</code> methods) * after columns have been added to the column request (using <code>add()</code> methods). * </p> * * @param family the column family of the column to retrieve. * @param qualifier the qualifier of the column to retrieve. * @return this column request builder instance. * @throws FijiInvalidNameException if the column name is invalid. */ public ColumnsDef add( final String family, final String qualifier ) { return add(FijiColumnName.create(family, qualifier)); }
/** * Requests data from a map-type family, and specifies read properties for that family. * * <p> * Data request properties cannot be modified (using <code>withX()</code> methods) * after columns have been added to the column request (using <code>add()</code> methods). * </p> * * @param family Map-type family to request data from. * @param columnReaderSpec Read properties to apply when decoding cells from the column family. * @return this column request builder instance. * @throws FijiInvalidNameException if the family name is invalid. */ public ColumnsDef addFamily( final String family, final ColumnReaderSpec columnReaderSpec ) { return add(FijiColumnName.create(family, null), columnReaderSpec); }
/** * Adds a column to the data request, using the properties associated with this * FijiDataRequestBuilder.ColumnsDef object. * * <p> * Data request properties cannot be modified (using <code>withX()</code> methods) * after columns have been added to the column request (using <code>add()</code> methods). * </p> * * @param family the column family to retrieve as a map. * @return this column request builder instance. * @throws FijiInvalidNameException if the family name is invalid. */ public ColumnsDef addFamily(final String family) { return add(FijiColumnName.create(family, null)); }
/** * Adds a column to the data request, using the properties associated with this * FijiDataRequestBuilder.ColumnsDef object. * * <p> * Data request properties cannot be modified (using <code>withX()</code> methods) * after columns have been added to the column request (using <code>add()</code> methods). * </p> * * @param column the column name to retrieve. * @return this column request builder instance. */ public ColumnsDef add(final FijiColumnName column) { return add(column, null); }
/** {@inheritDoc} */ @Override public FijiDataRequest getDataRequest() { FijiDataRequestBuilder builder = FijiDataRequest.builder(); builder.newColumnsDef() .withMaxVersions(HConstants.ALL_VERSIONS) .add(getFamily(), getQualifier()); return builder.build(); }
/** {@inheritDoc} */ @Override public FijiDataRequest getDataRequest() { FijiDataRequestBuilder builder = FijiDataRequest.builder(); builder.newColumnsDef().withMaxVersions(Integer.MAX_VALUE) .add(mInputColumn.getFamily(), mInputColumn.getQualifier()); return builder.build(); }
/** {@inheritDoc} */ @Override public FijiDataRequest getDataRequest() { // Indexes start from 0, whereas maxVersions starts from 1 so we need to adjust for this int maxVersions = mIndex + 1; if (mIndex == -1) { // If we are getting the oldest cell, we need all versions. maxVersions = HConstants.ALL_VERSIONS; } FijiDataRequestBuilder builder = FijiDataRequest.builder(); builder.newColumnsDef().withMaxVersions(maxVersions).add(getFamily(), getQualifier()); return builder.build(); }
/** {@inheritDoc} */ @Override public FijiDataRequest getDataRequest() { FijiDataRequestBuilder builder = FijiDataRequest.builder(); builder.newColumnsDef().add(mFamily, mQualifier); return builder.build(); }