blob: 5410f9f964b36a693c084fb6fdb9b38a5b4db668 [file] [log] [blame]
Madan Jampani94c23532015-02-05 17:40:01 -08001package org.onosproject.store.consistent.impl;
2
3import java.util.Collections;
4import java.util.List;
5import java.util.Map;
6
7import com.google.common.collect.ImmutableMap;
8import com.google.common.collect.Lists;
9
10/**
11 * A simple Partitioner that uses the key hashCode to map
12 * key to a partition.
13 *
14 * @param <K> key type.
15 */
16public class SimpleKeyHashPartitioner<K> implements Partitioner<K> {
17
18 private final Map<String, Database> partitionMap;
19 private final List<String> sortedPartitionNames;
20
21 public SimpleKeyHashPartitioner(Map<String, Database> partitionMap) {
22 this.partitionMap = ImmutableMap.copyOf(partitionMap);
23 sortedPartitionNames = Lists.newArrayList(this.partitionMap.keySet());
24 Collections.sort(sortedPartitionNames);
25 }
26
27 @Override
28 public Database getPartition(String tableName, K key) {
29 return partitionMap.get(sortedPartitionNames.get(Math.abs(key.hashCode()) % partitionMap.size()));
30 }
31}