package org.sef4j.callstack.stattree.printers.value;
import java.io.PrintWriter;
import java.util.List;
import org.sef4j.callstack.stats.BasicTimeStatsLogHistogram;
import org.sef4j.callstack.stats.BasicTimeStatsSlotInfo;
import org.sef4j.core.helpers.proptree.printers.ValuePrinter;
/**
* ValuePrinter for BasicTimeStatsLogHistogram
* <BR/>
* print as
* <PRE>count0: 123, sum0: 2345, count1: 12, sum1: .... count9: 123, sum9:123456</PRE>
*/
public class BasicTimeStatsLogHistogramFieldValuePrinter implements ValuePrinter<BasicTimeStatsLogHistogram> {
public static final BasicTimeStatsLogHistogramFieldValuePrinter INSTANCE = new BasicTimeStatsLogHistogramFieldValuePrinter();
// ------------------------------------------------------------------------
public BasicTimeStatsLogHistogramFieldValuePrinter() {
}
// ------------------------------------------------------------------------
public void printValues(PrintWriter output, String name, List<BasicTimeStatsLogHistogram> values) {
for(BasicTimeStatsLogHistogram value : values) {
printValue(output, name, value);
}
}
@Override
public void printValue(PrintWriter output, String name, BasicTimeStatsLogHistogram value){
BasicTimeStatsSlotInfo[] timeStatsInfo = value.getSlotInfoCopy();
final int lenMinus1 = timeStatsInfo.length - 1;
for (int i = 0; i < lenMinus1; i++) {
printNth(output, timeStatsInfo[i], "count", "sum", i);
output.print(", ");
}
printNth(output, timeStatsInfo[lenMinus1], "count", "sum", lenMinus1);
// no trailing ", "
}
public static void printNth(PrintWriter output, BasicTimeStatsSlotInfo statsInfo, String countStatName, String sumStatName, int i) {
output.print(countStatName);
output.print(i);
output.print(": ");
output.print(statsInfo.getCount());
output.print(", ");
output.print(sumStatName);
output.print(i);
output.print(": ");
output.print(statsInfo.getSum());
}
}