/** * Constructor. Package-private; invoked by {@link FijiDataRequestBuilder#build()} * and create(). * * @param columnRequests the columns to include in this data request. * @param minTs the inclusive lower-bound on timestamps to request. * @param maxTs the exclusive upper-bound on timestamps to request. */ FijiDataRequest(Collection<Column> columnRequests, long minTs, long maxTs) { mMinTimestamp = minTs; mMaxTimestamp = maxTs; final ImmutableMap.Builder<String, Column> builder = ImmutableMap.builder(); for (Column col : columnRequests) { builder.put(col.getName(), col); } mColumns = builder.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())); } } } } }