Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.util.Map;
import java.util.Set;

import org.baeldung.metric.MetricService;
import org.baeldung.metric.IMetricService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
Expand All @@ -24,7 +24,7 @@
public class MyController {

@Autowired
private MetricService metricService;
private IMetricService metricService;

@RequestMapping("/")
public String init(Map<String, Object> model, Principal principal) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.baeldung.metric;

public interface IMetricService {

void increaseCount(final int status);

Object[][] getGraphData();
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
public class MetricFilter implements Filter {

@Autowired
private MetricService metricService;
private IMetricService metricService;

@Override
public void init(final FilterConfig config) throws ServletException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,16 @@
import org.springframework.stereotype.Service;

@Service
public class MetricService {
public class MetricService implements IMetricService {

@Autowired
private MetricRepository repo;

@Autowired
private CounterService counter;

private ArrayList<ArrayList<Integer>> statusMetric;
private List<ArrayList<Integer>> statusMetric;
private List<String> statusList;

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");

public MetricService() {
Expand All @@ -32,35 +31,19 @@ public MetricService() {
statusList = new ArrayList<String>();
}

// API

public void increaseCount(final int status) {
counter.increment("status." + status);
if (!statusList.contains("counter.status." + status)) {
statusList.add("counter.status." + status);
}
}

@Scheduled(fixedDelay = 60000)
private void exportMetrics() {
Metric<?> metric;
ArrayList<Integer> statusCount = new ArrayList<Integer>();
for (String status : statusList) {
metric = repo.findOne(status);
if (metric != null) {
statusCount.add(metric.getValue().intValue());
repo.reset(status);
} else {
statusCount.add(0);
}

}
statusMetric.add(statusCount);
}

public Object[][] getGraphData() {
Date current = new Date();
int colCount = statusList.size() + 1;
int rowCount = statusMetric.size() + 1;

Object[][] result = new Object[rowCount][colCount];
result[0][0] = "Time";

Expand All @@ -70,7 +53,7 @@ public Object[][] getGraphData() {
j++;
}

ArrayList<Integer> temp;
List<Integer> temp;
for (int i = 1; i < rowCount; i++) {
temp = statusMetric.get(i - 1);
result[i][0] = dateFormat.format(new Date(current.getTime() - (60000 * (rowCount - i))));
Expand All @@ -82,8 +65,25 @@ public Object[][] getGraphData() {
j++;
}
}

return result;
}

// Non - API

@Scheduled(fixedDelay = 60000)
private void exportMetrics() {
Metric<?> metric;
ArrayList<Integer> statusCount = new ArrayList<Integer>();
for (String status : statusList) {
metric = repo.findOne(status);
if (metric != null) {
statusCount.add(metric.getValue().intValue());
repo.reset(status);
} else {
statusCount.add(0);
}

}
statusMetric.add(statusCount);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.baeldung.web.metric.MetricService;
import org.baeldung.web.metric.IMetricService;
import org.baeldung.web.util.LinkUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
Expand All @@ -20,7 +20,7 @@
public class RootController {

@Autowired
private MetricService metricService;
private IMetricService metricService;

public RootController() {
super();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.baeldung.web.metric;

public interface IMetricService {

void increaseCount(final String request, final int status);

String getFullMetric();

String getStatusMetric();

Object[][] getGraphData();
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import org.springframework.stereotype.Service;

@Service
public class MetricService {
public class MetricService implements IMetricService {

private Map<String, HashMap<Integer, Integer>> metricMap;
private Map<Integer, Integer> statusMetric;
Expand All @@ -26,20 +26,24 @@ public MetricService() {

// API

@Override
public void increaseCount(final String request, final int status) {
increaseMainMetric(request, status);
increaseStatusMetric(status);
updateTimeMap(status);
}

@Override
public String getFullMetric() {
return metricMap.entrySet().toString();
}

@Override
public String getStatusMetric() {
return statusMetric.entrySet().toString();
}

@Override
public Object[][] getGraphData() {
final int colCount = statusMetric.keySet().size() + 1;
final Set<Integer> allStatus = statusMetric.keySet();
Expand All @@ -54,7 +58,7 @@ public Object[][] getGraphData() {
j++;
}
int i = 1;
HashMap<Integer, Integer> tempMap;
Map<Integer, Integer> tempMap;
for (final Entry<String, HashMap<Integer, Integer>> entry : timeMap.entrySet()) {
result[i][0] = entry.getKey();
tempMap = entry.getValue();
Expand Down