package org.sef4j.callstack.export.influxdb.jsonprinters;
import java.io.PrintWriter;
import org.sef4j.callstack.stats.BasicTimeStatsLogHistogram;
import org.sef4j.callstack.stats.BasicTimeStatsSlotInfo;
import org.sef4j.core.helpers.ext.influxdb.AbstractInfluxDBValuePrinter;
/**
* InfluxDB serie json row value formater for BasicTimeStatsLogHistogram
* <PRE>
* {
* "name": "metric1",
* "columns":[ "count0", "sum0", "count1", "sum1" .... "count9", "sum9" ],
* "points":[
* [ 12, 3456, 123, 4563, ... 123, 456546 ]
* ]
* }</PRE>
*/
public class BasicTimeStatsLogHistogramInfluxDBPrinter extends AbstractInfluxDBValuePrinter<BasicTimeStatsLogHistogram> {
public static final BasicTimeStatsLogHistogramInfluxDBPrinter INSTANCE = new BasicTimeStatsLogHistogramInfluxDBPrinter(false);
// ------------------------------------------------------------------------
public BasicTimeStatsLogHistogramInfluxDBPrinter(boolean printIndented) {
super(printIndented);
}
// ------------------------------------------------------------------------
@Override
public void printColumnNames(PrintWriter output) {
printColumnNames(output, "count", "sum");
}
@Override
public void printPointValues(PrintWriter output, BasicTimeStatsLogHistogram point) {
BasicTimeStatsSlotInfo[] timeStatsInfo = point.getSlotInfoCopy();
final int lenMinus1 = BasicTimeStatsLogHistogram.SLOT_LEN - 1;
for (int i = 0; i < lenMinus1; i++) {
printNthValue(output, timeStatsInfo[i]);
output.print(", ");
}
printNthValue(output, timeStatsInfo[lenMinus1]); // no trailing ", "
}
public static void printColumnNames(PrintWriter output, String countName, String sumName) {
final int lenMinus1 = BasicTimeStatsLogHistogram.SLOT_LEN - 1;
for (int i = 0; i < lenMinus1; i++) {
printNthColumnNames(output, i, countName, sumName);
output.print(", ");
}
printNthColumnNames(output, lenMinus1, countName, sumName); // no trailing ", "
}
public static void printNthColumnNames(PrintWriter output, int i, String countName, String sumName) {
output.print("\"" + countName + i + "\", \"" + sumName + i + "\"");
}
public static void printNthValue(PrintWriter output, BasicTimeStatsSlotInfo slot) {
output.print(slot.getCount());
output.print(", ");
output.print(slot.getSum());
}
}