package net.i2p.stat;
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
public class SimpleStatDumper {
private final static Log _log = new Log(SimpleStatDumper.class);
public static void dumpStats(I2PAppContext context, int logLevel) {
if (!_log.shouldLog(logLevel)) return;
StringBuilder buf = new StringBuilder(4 * 1024);
dumpFrequencies(context, buf);
dumpRates(context, buf);
_log.log(logLevel, buf.toString());
}
private static void dumpFrequencies(I2PAppContext ctx, StringBuilder buf) {
Set<String> frequencies = new TreeSet<String>(ctx.statManager().getFrequencyNames());
for (String name : frequencies) {
FrequencyStat freq = ctx.statManager().getFrequency(name);
buf.append('\n');
buf.append(freq.getGroupName()).append('.').append(freq.getName()).append(": ")
.append(freq.getDescription()).append('\n');
long periods[] = freq.getPeriods();
Arrays.sort(periods);
for (int i = 0; i < periods.length; i++) {
buf.append('\t').append(periods[i]).append(':');
Frequency curFreq = freq.getFrequency(periods[i]);
buf.append(" average interval: ").append(curFreq.getAverageInterval());
buf.append(" min average interval: ").append(curFreq.getMinAverageInterval());
buf.append('\n');
}
}
}
private static void dumpRates(I2PAppContext ctx, StringBuilder buf) {
Set<String> rates = new TreeSet<String>(ctx.statManager().getRateNames());
for (String name : rates) {
RateStat rate = ctx.statManager().getRate(name);
buf.append('\n');
buf.append(rate.getGroupName()).append('.').append(rate.getName()).append(": ")
.append(rate.getDescription()).append('\n');
long periods[] = rate.getPeriods();
Arrays.sort(periods);
for (int i = 0; i < periods.length; i++) {
buf.append('\t').append(periods[i]).append(':');
Rate curRate = rate.getRate(periods[i]);
dumpRate(curRate, buf);
buf.append('\n');
}
}
}
static void dumpRate(Rate curRate, StringBuilder buf) {
buf.append(curRate.toString());
}
}