private List<Get> keysToGets(Iterable<KeyWithContext<EnrichmentKey, HBaseContext>> keys) { List<Get> ret = new ArrayList<>(); for(KeyWithContext<EnrichmentKey, HBaseContext> key : keys) { ret.add(converter.toGet(getColumnFamily(key.getContext()), key.getKey())); } return ret; }
@Override public Iterable<RESULT_T> get(Iterable<KeyWithContext<KEY_T, CONTEXT_T>> key, boolean logAccess) throws IOException { if(logAccess) { for (KeyWithContext<KEY_T, CONTEXT_T> k : key) { accessTracker.logAccess(k.getKey()); } } return lookupHandler.get(key, logAccess); }
@Override public Iterable<Boolean> exists(Iterable<KeyWithContext<EnrichmentKey, HBaseContext>> key, boolean logAccess) throws IOException { List<Boolean> ret = new ArrayList<>(); if(Iterables.isEmpty(key)) { return Collections.emptyList(); } HTableInterface table = Iterables.getFirst(key, null).getContext().getTable(); for(boolean b : table.existsAll(keysToGets(key))) { ret.add(b); } return ret; }
@Nullable @Override public KeyWithContext<EnrichmentKey, EnrichmentLookup.HBaseContext> apply(@Nullable String enrichmentType) { EnrichmentKey key = new EnrichmentKey(enrichmentType, indicator); EnrichmentLookup.HBaseContext context = new EnrichmentLookup.HBaseContext(table, getColumnFamily(enrichmentType, config)); return new KeyWithContext<>(key, context); } }
@Override public Iterable<Boolean> exists(Iterable<KeyWithContext<KEY_T, CONTEXT_T>> key, boolean logAccess) throws IOException { if(logAccess) { for (KeyWithContext<KEY_T, CONTEXT_T> k : key) { accessTracker.logAccess(k.getKey()); } } return lookupHandler.exists(key, logAccess); }
@Override public Iterable<LookupKV<EnrichmentKey, EnrichmentValue>> get( Iterable<KeyWithContext<EnrichmentKey, HBaseContext>> keys , boolean logAccess ) throws IOException { if(Iterables.isEmpty(keys)) { return Collections.emptyList(); } HTableInterface table = Iterables.getFirst(keys, null).getContext().getTable(); List<LookupKV<EnrichmentKey, EnrichmentValue>> ret = new ArrayList<>(); Iterator<KeyWithContext<EnrichmentKey, HBaseContext>> keyWithContextIterator = keys.iterator(); for(Result result : table.get(keysToGets(keys))) { HBaseContext context = keyWithContextIterator.next().getContext(); ret.add(converter.fromResult(result, getColumnFamily(context))); } return ret; }