package qubexplorer.server;
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.sonar.wsclient.services.Rule;
import qubexplorer.Severity;
import qubexplorer.Summary;
/**
*
* @author Victor
*/
public class SimpleSummary implements Summary {
private final Map<Severity, Map<Rule, Integer>> countsBySeverity = new EnumMap<>(Severity.class);
public SimpleSummary() {
for (Severity severity : Severity.values()) {
Map<Rule, Integer> counts = new HashMap<>();
countsBySeverity.put(severity, counts);
}
}
@Override
public int getCount(Severity severity) {
Map<Rule, Integer> map = countsBySeverity.get(severity);
if (map == null) {
return 0;
} else {
int sum = 0;
for (Integer i : map.values()) {
sum += i;
}
return sum;
}
}
public Map<Rule, Integer> getRuleCounts(Severity severity) {
if (countsBySeverity.containsKey(severity)) {
return countsBySeverity.get(severity);
} else {
return new HashMap<>();
}
}
@Override
public int getCount(Rule rule) {
int count = 0;
for (Map<Rule, Integer> countByRule : countsBySeverity.values()) {
if (countByRule.containsKey(rule)) {
count = countByRule.get(rule);
break;
}
}
return count;
}
@Override
public int getCount() {
int suma = 0;
for (Map<Rule, Integer> map : countsBySeverity.values()) {
for (Integer integer : map.values()) {
suma += integer;
}
}
return suma;
}
@Override
public Set<Rule> getRules(Severity severity) {
if (countsBySeverity.containsKey(severity)) {
return countsBySeverity.get(severity).keySet();
} else {
return Collections.emptySet();
}
}
public void increment(Severity severity, Rule rule, int increment) {
Map<Rule, Integer> countByRule = countsBySeverity.get(severity);
Integer count = countByRule.get(rule);
if (count == null) {
count = 1;
} else {
count = count + 1;
}
countByRule.put(rule, count);
}
}