package fitnesse.plugins.slimcoverage; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; public class SlimScenarioUsagePer { private final String groupName; private final Map<String, AtomicInteger> usage = new LinkedHashMap<>(); private final List<String> overriddenScenarios = new ArrayList<>(); public SlimScenarioUsagePer(String groupName) { this.groupName = groupName; } public void addDefinition(String scenarioName) { if (usage.containsKey(scenarioName)) { overriddenScenarios.add(scenarioName); } else { addUsage(scenarioName, 0); } } public void addUsage(String scenarioName) { addUsage(scenarioName, 1); } public void addUsage(String scenarioName, Integer valueToAdd) { AtomicInteger currentValue = usage.get(scenarioName); if (currentValue == null) { currentValue = new AtomicInteger(0); usage.put(scenarioName, currentValue); } currentValue.getAndAdd(valueToAdd); } public Map<String, Integer> getUsage() { Map<String, Integer> result = new LinkedHashMap<>(); for (Map.Entry<String, AtomicInteger> entry : usage.entrySet()) { result.put(entry.getKey(), entry.getValue().intValue()); } return result; } public List<String> getOverriddenScenarios() { return overriddenScenarios; } @Override public String toString() { return groupName + ": " + usage; } public String getGroupName() { return groupName; } }