package com.packtpub.storm.trident.state;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import storm.trident.state.map.IBackingMap;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class OutbreakTrendBackingMap implements IBackingMap<Long> {
private static final Logger LOG = LoggerFactory.getLogger(OutbreakTrendBackingMap.class);
Map<String, Long> storage = new ConcurrentHashMap<String, Long>();
@Override
public List<Long> multiGet(List<List<Object>> keys) {
List<Long> values = new ArrayList<Long>();
for (List<Object> key : keys) {
Long value = storage.get(key.get(0));
if (value == null) {
values.add(new Long(0));
} else {
values.add(value);
}
}
return values;
}
@Override
public void multiPut(List<List<Object>> keys, List<Long> vals) {
for (int i = 0; i < keys.size(); i++) {
LOG.info("Persisting [" + keys.get(i).get(0) + "] ==> [" + vals.get(i) + "]");
storage.put((String) keys.get(i).get(0), vals.get(i));
}
}
}