use of org.spf4j.tsdb2.TimeSeries in project spf4j by zolyfarkas.
the class TimeSeriesDatabase method generateCharts.
/**
* Quantized recorders will have min, max avg charts and distribution charts generated. Counting recorders will have
* simple charts generated.
*
* @param startTimeMillis
* @param endTimeMillis
* @param width
* @param height
* @return
* @throws IOException
*/
@JmxExport(value = "generateChartsInterval", description = "generate charts for all measurements in specified interval")
public List<String> generateCharts(final long startTimeMillis, final long endTimeMillis, final int width, final int height) throws IOException {
try {
this.flush();
Collection<TSTable> columnsInfo = this.getTSTables();
List<String> result = new ArrayList<>(16);
for (TSTable info : columnsInfo) {
TimeSeries data = this.read(info.getTableName(), startTimeMillis, endTimeMillis);
if (data.getTimeStamps().length > 0) {
if (canGenerateMinMaxAvgCount(info)) {
result.add(generateMinMaxAvgCountChart(info, data, width, height));
}
if (canGenerateHeatChart(info)) {
result.add(generateHeatChart(info, data, width, height));
}
}
}
Multimap<String, TSTable> counters = getCounters(columnsInfo);
Map<String, Collection<TSTable>> asMap = counters.asMap();
for (Map.Entry<String, Collection<TSTable>> entry : asMap.entrySet()) {
Collection<TSTable> ltables = entry.getValue();
int l = ltables.size();
long[][] timestamps = new long[l][];
double[][] cdata = new double[l][];
double[][] cdata2 = new double[l][];
int i = 0;
String[] measurementNames = new String[cdata.length];
String[] measurementNames2 = new String[cdata2.length];
String uom1 = "count";
String uom2 = "";
for (TSTable colInfo : ltables) {
TimeSeries data = this.read(colInfo.getTableName(), startTimeMillis, endTimeMillis);
timestamps[i] = data.getTimeStamps();
final long[][] values = data.getValues();
cdata[i] = Arrays.getColumnAsDoubles(values, colInfo.getColumnIndex("count"));
cdata2[i] = Arrays.getColumnAsDoubles(values, colInfo.getColumnIndex("total"));
measurementNames[i] = colInfo.getTableName() + ".count";
measurementNames2[i] = colInfo.getTableName() + ".total";
uom2 = new String(colInfo.getTableMetaData(), StandardCharsets.UTF_8);
i++;
}
result.add(generateCountChart(entry.getKey(), timestamps, measurementNames, measurementNames2, uom1, uom2, cdata, cdata2, width, height));
}
return result;
} catch (IOException | RuntimeException ex) {
throw ex;
}
}
use of org.spf4j.tsdb2.TimeSeries in project spf4j by zolyfarkas.
the class TimeSeriesDatabase method createMinMaxAvgJFreeChart.
public JFreeChart createMinMaxAvgJFreeChart(final String tableName, final long startTime, final long endTime) throws IOException {
TSTable info = this.getTSTable(tableName);
TimeSeries data = this.read(tableName, startTime, endTime);
return createMinMaxAvgJFreeChart(data, info);
}
Aggregations