@Override public <M extends Message> EntityIdToFieldFullKeyImpl<M> getEntityIdToFieldFullKeyFromBytes( Subspace subspace, BadgerEntityDescriptor<M> expectedBadgerEntityDescriptor, byte[] bytes) { TupleIterator tupleIterator = TupleIterator.unpack(subspace, bytes); BadgerEntityDescriptor<M> badgerEntityDescriptor = checkTupleAndGetBadgerEntityDescriptor( tupleIterator, expectedBadgerEntityDescriptor, EntityIdToFieldAllFieldsKeyImpl.getKeyTypeId()); String entityId = tupleIterator.nextString(); ImmutableList<Integer> orderedFieldNumbers = getIntegerValues(tupleIterator, true); ImmutableList<Integer> orderedRepeatedFieldIndexes = tupleIterator.hasNext() ? getIntegerValues(tupleIterator, true) : ImmutableList.<Integer>of(); return new EntityIdToFieldFullKeyImpl<>( badgerEntityDescriptor, entityId, badgerEntityDescriptor.getBadgerTag(orderedFieldNumbers, orderedRepeatedFieldIndexes)); }
@Override public <M extends Message> FieldToEntityIdFullKeyImpl<M> getFieldToEntityIdFullKeyFromBytes( Subspace subspace, BadgerEntityDescriptor<M> expectedBadgerEntityDescriptor, byte[] bytes) { TupleIterator tupleIterator = TupleIterator.unpack(subspace, bytes); BadgerEntityDescriptor<M> badgerEntityDescriptor = checkTupleAndGetBadgerEntityDescriptor( tupleIterator, expectedBadgerEntityDescriptor, FieldToEntityIdBoundsKeyImpl.getKeyTypeId()); ImmutableList<Integer> orderedFieldNumbers = getIntegerValues(tupleIterator, false); Object value = tupleIterator.nextObject(); String entityId = tupleIterator.nextString(); ImmutableList<Integer> orderedRepeatedFieldIndexes = tupleIterator.hasNext() ? getIntegerValues(tupleIterator, true) : ImmutableList.<Integer>of(); BadgerTag badgerTag = badgerEntityDescriptor.getBadgerTag(orderedFieldNumbers, orderedRepeatedFieldIndexes); value = Tuples.fromTupleObject(badgerTag.getBadgerTagDescriptor(), value); return new FieldToEntityIdFullKeyImpl<>(badgerEntityDescriptor, badgerTag, value, entityId); }
private <M extends Message> BadgerEntityDescriptor<M> checkAndGetBadgerEntityDescriptor( TupleIterator tupleIterator, BadgerEntityDescriptor<M> badgerEntityDescriptor) { Preconditions.checkArgument( badgerEntityDescriptor.getFullName().equals(tupleIterator.nextString())); return badgerEntityDescriptor; }