/*
* $Id$
*
* Copyright 2008 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.testing;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.jamonapi.MonitorFactory;
/**
* Used as a simple print out of {@link MonitorFactory} results.
*
* @author Josh Moore, josh at glencoesoftware.com
* @since 3.0-Beta3
*/
public class Report {
static int LABEL = 0;
static int HITS = 1;
static int AVG = 2;
static int TOTAL = 3;
static int STDDEV = 4;
static int LASTVALUE = 5;
static int MIN = 6;
static int MAX = 7;
static int ACTIVE = 8;
static int AVGACTIVE = 9;
static int MAXACTIVE = 10;
static int FIRSTACCESS = 11;
static int LASTACCESS = 12;
String[] header;
Object[][] data;
/**
* Saves the current data from {@link MonitorFactory} and then resets all
* values.
*/
public Report() {
header = MonitorFactory.getHeader();
data = MonitorFactory.getData();
MonitorFactory.reset();
}
@Override
public String toString() {
if (header == null) {
return "====== No report =======";
}
int[] labels = new int[] { LABEL, AVG, MIN, MAX, TOTAL, HITS };
StringBuilder sb = new StringBuilder();
for (int l : labels) {
sb.append(header[l]);
for (int i = 0; i < 8 - header[l].length(); i++) {
sb.append(" ");
}
sb.append("\t");
}
sb.append("\n");
Map<String, String> ordering = new HashMap<String, String>();
for (int i = 0; i < data.length; i++) {
StringBuilder line = new StringBuilder();
for (int l : labels) {
Object d = data[i][l];
if (d instanceof Double) {
line.append(String.format("%3.2e\t", (Double) d));
} else {
line.append(d + "\t");
}
}
line.append("\n");
ordering.put((String) data[i][LABEL], line.toString());
}
List<String> keys = new ArrayList<String>(ordering.keySet());
Collections.sort(keys);
for (String key : keys) {
sb.append(ordering.get(key));
}
return sb.toString();
}
}