@Override public Map<Integer, List<String>> splitByDataSource(Collection<String> ids) { Map<Integer, List<String>> map = new HashMap<Integer, List<String>>(); for (String s : ids) { ObjectId oi = new ObjectId(s); int shard = oi.getShard(); int datasource = shard / getShardsPerDataSource(); List<String> list = map.get(datasource); if (list == null) { list = new ArrayList<String>(); map.put(datasource, list); } list.add(s); } return map; }
@Override public ExtendedDataSource getDataSourceByObjectId(String id) { ObjectId oi = new ObjectId(id); return getDataSourceByShardId(oi.getShard()); }