&& family.isGroupType() && !family.getColumnMap().containsKey(columnName.getQualifier())) { throw new FijiProducerOutputException(String.format(
final FijiColumnName column = entry.getKey(); if (!column.isFullyQualified() && layout.getFamilyMap().get(column.getFamily()).isGroupType()) { groupFamilyEntries.add(entry);
if (family.isGroupType()) {
} else if (refFamilyLayout.isGroupType()) { flayout.getName(), null, validateCellSchema(null, cellSchema))); } else if (flayout.isGroupType()) { if (refFamilyLayout.isGroupType()) {
if (fLayout.isGroupType()) {
if (family.isGroupType()) {
if (familyLayout.isGroupType()) { deleteGroupFamily(entityId, familyLayout, upToTimestamp); } else if (familyLayout.isMapType()) {
if (rawColumnNames.isEmpty()) { for (FamilyLayout family : layout.getFamilies()) { if (family.isGroupType()) { familyMap.put(family, Lists.newArrayList(family.getColumns())); "No family '%s' in table '%s'.", rawColumn.getFamily(), layout.getName())); if (family.isGroupType()) {
if (family.isGroupType()) {
} else if (family.isGroupType()) {
if (fLayout.isMapType()) { columns.add(FijiColumnName.create(fLayout.getName(), null)); } else if (fLayout.isGroupType()) { for (ColumnLayout cLayout : fLayout.getColumns()) { columns.add(FijiColumnName.create(fLayout.getName(), cLayout.getName()));
/** {@inheritDoc} */ @Override public void deleteFamily(EntityId entityId, String family, long upToTimestamp) throws IOException { final HBaseFijiTableWriter.WriterLayoutCapsule capsule = mWriterLayoutCapsule; final FamilyLayout familyLayout = capsule.getLayout().getFamilyMap().get(family); if (null == familyLayout) { throw new NoSuchColumnException(String.format("Family '%s' not found.", family)); } if (familyLayout.getLocalityGroup().getFamilyMap().size() > 1) { // There are multiple families within the locality group, so we need to be clever. if (familyLayout.isGroupType()) { deleteGroupFamily(entityId, familyLayout, upToTimestamp); } else if (familyLayout.isMapType()) { deleteMapFamily(entityId, familyLayout, upToTimestamp); } else { throw new RuntimeException("Internal error: family is neither map-type nor group-type."); } return; } // The only data in this HBase family is the one Fiji family, so we can delete everything. final HBaseColumnName hbaseColumnName = capsule.getColumnNameTranslator() .toHBaseColumnName(FijiColumnName.create(family)); final Delete delete = new Delete(entityId.getHBaseRowKey()); delete.deleteFamily(hbaseColumnName.getFamily(), upToTimestamp); // Buffer the delete. updateBuffer(delete); }
/** * 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())); } } } } }
} else if (family.isGroupType()) {
if (familyLayout.isGroupType()) { deleteGroupFamily(entityId, familyLayout, upToTimestamp); } else if (familyLayout.isMapType()) {
/** {@inheritDoc}*/ @Override public HBaseColumnName toHBaseColumnName(FijiColumnName fijiColumnName) throws NoSuchColumnException { final String familyName = fijiColumnName.getFamily(); final String qualifierName = fijiColumnName.getQualifier(); // Validate the Fiji family final FamilyLayout family = mLayout.getFamilyMap().get(familyName); if (family == null) { throw new NoSuchColumnException(fijiColumnName.toString()); } // Validate the Fiji qualifier if (family.isGroupType() && !family.getColumnMap().containsKey(qualifierName)) { throw new NoSuchColumnException(fijiColumnName.toString()); } final byte[] localityGroupBytes = Bytes.toBytes(family.getLocalityGroup().getName()); final byte[] familyBytes = Bytes.toBytes(familyName); final byte[] qualifierBytes = Bytes.toBytes(qualifierName); final byte[] hbaseQualifierBytes = ShortColumnNameTranslator.concatWithSeparator(SEPARATOR, familyBytes, qualifierBytes); return new HBaseColumnName(localityGroupBytes, hbaseQualifierBytes); }
/** * Creates a new {@link HBaseNativeColumnNameTranslator} instance. * * @param layout The layout of the table to translate column names for. */ public HBaseNativeColumnNameTranslator(FijiTableLayout layout) { mLayout = layout; for (FamilyLayout family : mLayout.getFamilies()) { // Validate that all Fiji column families are the same as their respective locality groups Preconditions.checkArgument(family.getName().equals(family.getLocalityGroup().getName()), "For HBASE_NATIVE column name translation, family: '%s' must match locality group: '%s'", family.getName(), family.getLocalityGroup().getName()); // Validate all Fiji column families are group type Preconditions.checkArgument(family.isGroupType(), "For HBASE_NATIVE column name translation, family: '%s' must be a group type.", family.getName()); } }
/** @return whether this is a map-type family. */ public boolean isMapType() { return !isGroupType(); } } // class FamilyLayout