package org.jboss.windup.reporting.service; import com.tinkerpop.blueprints.Vertex; import java.util.HashMap; import java.util.Map; /** * This implementation holds a Map, and for each vertex, it increases the key * that is determined from the vertex by supplied implementation of vertexToKey({@link Vertex}). * * @author <a href="http://ondra.zizka.cz/">Ondrej Zizka, zizka@seznam.cz</a> */ abstract class MapSumEffortAccumulatorFunction<T> implements EffortAccumulatorFunction { private final Map<T, Integer> results; /** * Create a new instance of {@link MapSumEffortAccumulatorFunction} with no starting values. */ public MapSumEffortAccumulatorFunction() { this(new HashMap<T, Integer>()); } /** * Creates a new instance of the accumulator with the given baseline values. */ public MapSumEffortAccumulatorFunction(Map<T, Integer> results) { this.results = results; } @Override public void accumulate(Vertex effortReportVertex) { T key = vertexToKey(effortReportVertex); if (!results.containsKey(key)) results.put(key, 1); else results.put(key, results.get(key) + 1); } /** * Gets the current results. */ public Map<T, Integer> getResults() { return results; } /** * This extracts the accumulator key from the provided {@link Vertex}. For example, this might be "Severity" * or the number of effort points, depending upon what data is being accumulated. */ public abstract T vertexToKey(Vertex vertex); }