long duration = ((Transaction) message).getDurationInMicros();
matrix.incCount();
matrix.setTotalTime(matrix.getTotalTime() + duration);
Map<String, Ratio> ratios = new HashMap<String, Ratio>();
ratios.put("Call", new Ratio());
ratios.put("SQL", new Ratio());
ratios.put("Cache", new Ratio());
processTransaction(tree, (Transaction) message, ratios);
for (Entry<String, Ratio> entry : ratios.entrySet()) {
String type = entry.getKey();
Ratio ratio = entry.getValue();
int count = ratio.getTotalCount();
long time = ratio.getTotalTime();
Ratio real = matrix.findOrCreateRatio(type);
if (real.getMin() > count || real.getMin() == 0) {
real.setMin(count);
}
if (real.getMax() < count) {
real.setMax(count);
real.setUrl(tree.getMessageId());
}
real.setTotalCount(real.getTotalCount() + count);
real.setTotalTime(real.getTotalTime() + time);
}
if (matrix.getUrl() == null) {
matrix.setUrl(tree.getMessageId());
}
}