33import java .text .SimpleDateFormat ;
44import java .util .Date ;
55import java .util .HashMap ;
6+ import java .util .Map ;
67import java .util .Map .Entry ;
78import java .util .Set ;
89
1112@ Service
1213public class MetricService {
1314
14- private HashMap <String , HashMap <Integer , Integer >> metricMap ;
15- private HashMap <Integer , Integer > statusMetric ;
16- private HashMap <String , HashMap <Integer , Integer >> timeMap ;
15+ private Map <String , HashMap <Integer , Integer >> metricMap ;
16+ private Map <Integer , Integer > statusMetric ;
17+ private Map <String , HashMap <Integer , Integer >> timeMap ;
1718 private static final SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd HH:mm" );
1819
1920 public MetricService () {
@@ -23,12 +24,54 @@ public MetricService() {
2324 timeMap = new HashMap <String , HashMap <Integer , Integer >>();
2425 }
2526
27+ // API
28+
2629 public void increaseCount (final String request , final int status ) {
2730 increaseMainMetric (request , status );
2831 increaseStatusMetric (status );
2932 updateTimeMap (status );
3033 }
3134
35+ public String getFullMetric () {
36+ return metricMap .entrySet ().toString ();
37+ }
38+
39+ public String getStatusMetric () {
40+ return statusMetric .entrySet ().toString ();
41+ }
42+
43+ public Object [][] getGraphData () {
44+ final int colCount = statusMetric .keySet ().size () + 1 ;
45+ final Set <Integer > allStatus = statusMetric .keySet ();
46+ final int rowCount = timeMap .keySet ().size () + 1 ;
47+
48+ final Object [][] result = new Object [rowCount ][colCount ];
49+ result [0 ][0 ] = "Time" ;
50+
51+ int j = 1 ;
52+ for (final int status : allStatus ) {
53+ result [0 ][j ] = status ;
54+ j ++;
55+ }
56+ int i = 1 ;
57+ HashMap <Integer , Integer > tempMap ;
58+ for (final Entry <String , HashMap <Integer , Integer >> entry : timeMap .entrySet ()) {
59+ result [i ][0 ] = entry .getKey ();
60+ tempMap = entry .getValue ();
61+ for (j = 1 ; j < colCount ; j ++) {
62+ result [i ][j ] = tempMap .get (result [0 ][j ]);
63+ if (result [i ][j ] == null ) {
64+ result [i ][j ] = 0 ;
65+ }
66+ }
67+ i ++;
68+ }
69+
70+ return result ;
71+ }
72+
73+ // NON-API
74+
3275 private void increaseMainMetric (final String request , final int status ) {
3376 HashMap <Integer , Integer > statusMap = metricMap .get (request );
3477 if (statusMap == null ) {
@@ -71,41 +114,4 @@ private void updateTimeMap(final int status) {
71114 timeMap .put (time , statusMap );
72115 }
73116
74- public String getFullMetric () {
75- return metricMap .entrySet ().toString ();
76- }
77-
78- public String getStatusMetric () {
79- return statusMetric .entrySet ().toString ();
80- }
81-
82- public Object [][] getGraphData (){
83- final int colCount = statusMetric .keySet ().size ()+1 ;
84- final Set <Integer > allStatus = statusMetric .keySet ();
85- final int rowCount = timeMap .keySet ().size ()+1 ;
86-
87- final Object [][] result = new Object [rowCount ][colCount ];
88- result [0 ][0 ] = "Time" ;
89-
90- int j = 1 ;
91- for (final int status : allStatus ) {
92- result [0 ][j ] = status ;
93- j ++;
94- }
95- int i = 1 ;
96- HashMap <Integer , Integer > tempMap ;
97- for (final Entry <String , HashMap <Integer , Integer >> entry : timeMap .entrySet ()) {
98- result [i ][0 ] = entry .getKey ();
99- tempMap = entry .getValue ();
100- for (j = 1 ; j < colCount ; j ++) {
101- result [i ][j ] = tempMap .get (result [0 ][j ]);
102- if (result [i ][j ] == null ) {
103- result [i ][j ] = 0 ;
104- }
105- }
106- i ++;
107- }
108-
109- return result ;
110- }
111117}
0 commit comments