/** * Utility function to generate a new key from the scope */ public static <K> BucketScopedRowKey<K> fromKey( final Id scope, final K key, final int bucketNumber ) { return new BucketScopedRowKey<>( scope, key, bucketNumber ); }
/** * Create a list of all buckets from [0, totalBuckets}. Note that this is an n-1 0 based system */ public static <K> List<BucketScopedRowKey<K>> fromRange( final Id scope, final K key, final int... buckets ) { final List<BucketScopedRowKey<K>> results = new ArrayList<>( buckets.length ); for ( int i = 0; i < buckets.length; i++ ) { results.add( new BucketScopedRowKey<>( scope, key, buckets[i] ) ); } return results; } }
@Override public BucketScopedRowKey<K> fromByteBuffer( final ByteBuffer byteBuffer ) { final CompositeParser parser = Composites.newCompositeParser( byteBuffer ); //read back the id final Id orgId = ID_SER.fromComposite( parser ); final int bucket = parser.readInteger(); final K value = keySerializer.fromComposite( parser ); return new BucketScopedRowKey<>( orgId, value, bucket ); } }