package org.act.tstream.stats.incval; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.act.tstream.callback.RunnableCallback; import org.act.tstream.utils.JStormUtils; public class IncValMerger extends RunnableCallback { /** * Merget List<Map<Object, Long>> to Map<Object, Long> */ @SuppressWarnings("unchecked") @Override public <T> Object execute(T... args) { Map<Object, Long> result = null; if (args != null && args.length > 0) { List<Map<Object, Long>> list = (List<Map<Object, Long>>) args[0]; result = new HashMap<Object, Long>(); for (Map<Object, Long> each : list) { for (Entry<Object, Long> e : each.entrySet()) { Object key = e.getKey(); Long val = e.getValue(); if (result.containsKey(key)) { val = (Long) JStormUtils.add(val, result.get(key)); } result.put(key, val); } } } return result; } }