/** * Convert a delete KeyValue type to protocol buffer DeleteType. * * @param type * @return protocol buffer DeleteType * @throws IOException */ public static DeleteType toDeleteType( KeyValue.Type type) throws IOException { switch (type) { case Delete: return DeleteType.DELETE_ONE_VERSION; case DeleteColumn: return DeleteType.DELETE_MULTIPLE_VERSIONS; case DeleteFamily: return DeleteType.DELETE_FAMILY; case DeleteFamilyVersion: return DeleteType.DELETE_FAMILY_VERSION; default: throw new IOException("Unknown delete type: " + type); } }
/** * Convert a protocol buffer DeleteType to delete KeyValue type. * * @param type The DeleteType * @return The type. * @throws IOException */ public static KeyValue.Type fromDeleteType( DeleteType type) throws IOException { switch (type) { case DELETE_ONE_VERSION: return KeyValue.Type.Delete; case DELETE_MULTIPLE_VERSIONS: return KeyValue.Type.DeleteColumn; case DELETE_FAMILY: return KeyValue.Type.DeleteFamily; case DELETE_FAMILY_VERSION: return KeyValue.Type.DeleteFamilyVersion; default: throw new IOException("Unknown delete type: " + type); } }
/** * Test Delete Mutate conversions. * * @throws IOException */ @Test public void testDelete() throws IOException { MutationProto.Builder mutateBuilder = MutationProto.newBuilder(); mutateBuilder.setRow(ByteString.copyFromUtf8("row")); mutateBuilder.setMutateType(MutationType.DELETE); mutateBuilder.setTimestamp(111111); ColumnValue.Builder valueBuilder = ColumnValue.newBuilder(); valueBuilder.setFamily(ByteString.copyFromUtf8("f1")); QualifierValue.Builder qualifierBuilder = QualifierValue.newBuilder(); qualifierBuilder.setQualifier(ByteString.copyFromUtf8("c1")); qualifierBuilder.setDeleteType(DeleteType.DELETE_ONE_VERSION); qualifierBuilder.setTimestamp(111222); valueBuilder.addQualifierValue(qualifierBuilder.build()); qualifierBuilder.setQualifier(ByteString.copyFromUtf8("c2")); qualifierBuilder.setDeleteType(DeleteType.DELETE_MULTIPLE_VERSIONS); qualifierBuilder.setTimestamp(111333); valueBuilder.addQualifierValue(qualifierBuilder.build()); mutateBuilder.addColumnValue(valueBuilder.build()); MutationProto proto = mutateBuilder.build(); // default fields assertEquals(MutationProto.Durability.USE_DEFAULT, proto.getDurability()); // set the default value for equal comparison mutateBuilder = MutationProto.newBuilder(proto); mutateBuilder.setDurability(MutationProto.Durability.USE_DEFAULT); Delete delete = ProtobufUtil.toDelete(proto); // delete always have empty value, // add empty value to the original mutate for (ColumnValue.Builder column: mutateBuilder.getColumnValueBuilderList()) { for (QualifierValue.Builder qualifier: column.getQualifierValueBuilderList()) { qualifier.setValue(ByteString.EMPTY); } } assertEquals(mutateBuilder.build(), ProtobufUtil.toMutation(MutationType.DELETE, delete)); }