package com.feedly.cassandra.dao; import java.math.BigInteger; import me.prettyprint.cassandra.serializers.DynamicCompositeSerializer; import me.prettyprint.hector.api.beans.AbstractComposite.ComponentEquality; import me.prettyprint.hector.api.beans.DynamicComposite; import com.feedly.cassandra.entity.PropertyMetadataBase; class CollectionRange { private static final DynamicCompositeSerializer SER_COMPOSITE = DynamicCompositeSerializer.get(); private final DynamicComposite _start, _end; private final PropertyMetadataBase _metadata; public CollectionRange(PropertyMetadataBase pm) { DynamicComposite dc = new DynamicComposite(); dc.addComponent(0, pm.getPhysicalName(), ComponentEquality.EQUAL); _start = dc; dc = new DynamicComposite(); dc.addComponent(0, pm.getPhysicalName(), ComponentEquality.GREATER_THAN_EQUAL); _end = dc; _metadata = pm; } public CollectionRange(PropertyMetadataBase pm, Object key) { if(key instanceof Integer) key = BigInteger.valueOf( ((Integer) key).longValue()); DynamicComposite dc = new DynamicComposite(); dc.addComponent(0, pm.getPhysicalName(), ComponentEquality.EQUAL); dc.addComponent(1, key, ComponentEquality.EQUAL); _start = dc; dc = new DynamicComposite(); dc.addComponent(0, pm.getPhysicalName(), ComponentEquality.EQUAL); dc.addComponent(1, key, ComponentEquality.GREATER_THAN_EQUAL); _end = dc; _metadata = pm; } public DynamicComposite start() { return _start; } public byte[] startBytes() { return SER_COMPOSITE.toBytes(_start); } public DynamicComposite end() { return _end; } public byte[] endBytes() { return SER_COMPOSITE.toBytes(_end); } public PropertyMetadataBase propertyMetadata() { return _metadata; } }