diff --git a/spring-security-rest-full/src/main/java/org/baeldung/web/metric/MetricService.java b/spring-security-rest-full/src/main/java/org/baeldung/web/metric/MetricService.java index 1ac1eefed8..df633e492f 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/web/metric/MetricService.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/web/metric/MetricService.java @@ -3,6 +3,7 @@ package org.baeldung.web.metric; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; +import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -11,9 +12,9 @@ import org.springframework.stereotype.Service; @Service public class MetricService { - private HashMap> metricMap; - private HashMap statusMetric; - private HashMap> timeMap; + private Map> metricMap; + private Map statusMetric; + private Map> timeMap; private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); public MetricService() { @@ -23,12 +24,54 @@ public class MetricService { timeMap = new HashMap>(); } + // API + public void increaseCount(final String request, final int status) { increaseMainMetric(request, status); increaseStatusMetric(status); updateTimeMap(status); } + public String getFullMetric() { + return metricMap.entrySet().toString(); + } + + public String getStatusMetric() { + return statusMetric.entrySet().toString(); + } + + public Object[][] getGraphData() { + final int colCount = statusMetric.keySet().size() + 1; + final Set allStatus = statusMetric.keySet(); + final int rowCount = timeMap.keySet().size() + 1; + + final Object[][] result = new Object[rowCount][colCount]; + result[0][0] = "Time"; + + int j = 1; + for (final int status : allStatus) { + result[0][j] = status; + j++; + } + int i = 1; + HashMap tempMap; + for (final Entry> entry : timeMap.entrySet()) { + result[i][0] = entry.getKey(); + tempMap = entry.getValue(); + for (j = 1; j < colCount; j++) { + result[i][j] = tempMap.get(result[0][j]); + if (result[i][j] == null) { + result[i][j] = 0; + } + } + i++; + } + + return result; + } + + // NON-API + private void increaseMainMetric(final String request, final int status) { HashMap statusMap = metricMap.get(request); if (statusMap == null) { @@ -71,41 +114,4 @@ public class MetricService { timeMap.put(time, statusMap); } - public String getFullMetric() { - return metricMap.entrySet().toString(); - } - - public String getStatusMetric() { - return statusMetric.entrySet().toString(); - } - - public Object[][] getGraphData(){ - final int colCount = statusMetric.keySet().size()+1; - final Set allStatus = statusMetric.keySet(); - final int rowCount = timeMap.keySet().size()+1; - - final Object[][] result = new Object[rowCount][colCount]; - result[0][0] = "Time"; - - int j = 1; - for (final int status : allStatus) { - result[0][j] = status; - j++; - } - int i = 1; - HashMap tempMap; - for (final Entry> entry : timeMap.entrySet()) { - result[i][0] = entry.getKey(); - tempMap = entry.getValue(); - for (j = 1; j < colCount; j++) { - result[i][j] = tempMap.get(result[0][j]); - if (result[i][j] == null) { - result[i][j] = 0; - } - } - i++; - } - - return result; - } }