package com.feedly.cassandra.entity; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.feedly.cassandra.IIndexRowPartitioner; /* * partitions based on the first value of the index */ public class TestPartitioner implements IIndexRowPartitioner { private static List<List<List<Object>>> _audit = new ArrayList<List<List<Object>>>(); private static List<List<List<Object>>> _rangeAudit = new ArrayList<List<List<Object>>>(); public static List<List<List<Object>>> partitionHistory() { return _audit; } public static List<List<List<Object>>> rangePartitionHistory() { return _rangeAudit; } @Override public List<List<Object>> partitionValue(List<Object> idxValue) { Long first = (Long) idxValue.get(0); List<List<Object>> rv = Collections.singletonList(Collections.<Object>singletonList(first/2)); _audit.add(rv); return rv; } @Override public List<List<Object>> partitionRange(List<Object> startIdxValues, List<Object> endIdxValues) { Long start = (Long) startIdxValues.get(0); Long end = (Long) endIdxValues.get(0); List<List<Object>> rv = range(start, end); _rangeAudit.add(rv); return rv; } private List<List<Object>> range(Object start, Object end) { List<List<Object>> range = new ArrayList<List<Object>>(); long first = ((Number) start).longValue(); long last = ((Number) end).longValue(); for(long c = first/2; c <= last/2; c++) range.add(Collections.<Object>singletonList(c)); return range; } }