src/main/java/jetbrains/buildServer/investigationsAutoAssigner/persistent/Statistics.java (54 lines of code) (raw):

package jetbrains.buildServer.investigationsAutoAssigner.persistent; import java.util.HashMap; import java.util.Map; import jetbrains.buildServer.investigationsAutoAssigner.common.Constants; class Statistics implements Cloneable { private final String version; private final Map<StatisticsValuesEnum, Integer> values; public String getVersion() { return version; } int get(StatisticsValuesEnum statisticsKey) { return values.getOrDefault(statisticsKey, 0); } void increment(StatisticsValuesEnum statisticsKey) { increase(statisticsKey, 1); } void increase(StatisticsValuesEnum statisticsKey, int delta) { int previousValue = values.getOrDefault(statisticsKey, 0); values.put(statisticsKey, previousValue + delta); } Statistics() { version = Constants.STATISTICS_FILE_VERSION; values = new HashMap<>(); } private Statistics(String version, Map<StatisticsValuesEnum, Integer> values) { this.version = version; this.values = new HashMap<>(values); } @Override public boolean equals(final Object obj) { if (!(obj instanceof Statistics)) { return false; } Statistics another = (Statistics)obj; return version.equals(another.version) && values.equals(another.values); } @Override public String toString() { return String.format("version: %s, shownButtonsCount: %s, clickedButtonsCount: %s, " + "assignedInvestigationsCount: %s, wrongInvestigationsCount: %s, " + "buildWithSuggestionsCount: %s, savedSuggestionsCount: %s", version, get(StatisticsValuesEnum.shownButtonsCount), get(StatisticsValuesEnum.clickedButtonsCount), get(StatisticsValuesEnum.assignedInvestigationsCount), get(StatisticsValuesEnum.wrongInvestigationsCount), get(StatisticsValuesEnum.buildWithSuggestionsCount), get(StatisticsValuesEnum.savedSuggestionsCount)); } @Override protected Statistics clone() { return new Statistics(version, values); } }