From 79d860cee7f74c6770de6623a18dc66728b47c7b Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Sat, 23 Sep 2017 12:42:22 +0200 Subject: [PATCH] make computation of mean value optional --- .../pdb/plot/api/AggreateInternal.java | 5 ++++ .../lucares/pdb/plot/api/PlotSettings.java | 12 ++++++++- .../recommind/logs/GnuplotFileGenerator.java | 26 +++++++++++++++++-- .../recommind/logs/GnuplotSettings.java | 10 +++++++ .../org/lucares/recommind/logs/Plotter.java | 1 + .../pdbui/PlotSettingsTransformer.java | 11 ++++++++ .../org/lucares/pdbui/domain/Aggregate.java | 5 ++++ .../org/lucares/pdbui/domain/PlotRequest.java | 10 +++++++ .../src/main/resources/resources/js/search.js | 1 + pdb-ui/src/main/resources/templates/main.html | 8 +++++- 10 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggreateInternal.java create mode 100644 pdb-ui/src/main/java/org/lucares/pdbui/domain/Aggregate.java diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggreateInternal.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggreateInternal.java new file mode 100644 index 0000000..25cdebe --- /dev/null +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggreateInternal.java @@ -0,0 +1,5 @@ +package org.lucares.pdb.plot.api; + +public enum AggreateInternal { +NONE, MEAN +} diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/PlotSettings.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/PlotSettings.java index bb9bd68..6bb5d39 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/PlotSettings.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/PlotSettings.java @@ -32,6 +32,8 @@ public class PlotSettings { private AxisScale yAxisScale; + private AggreateInternal aggregate; + public String getQuery() { return query; } @@ -156,6 +158,14 @@ public class PlotSettings { public String toString() { return "PlotSettings [query=" + query + ", height=" + height + ", width=" + width + ", groupBy=" + groupBy + ", limitBy=" + limitBy + ", limit=" + limit + ", dateFrom=" + dateFrom + ", dateRange=" + dateRange - + ", axisScale=" + yAxisScale + "]"; + + ", axisScale=" + yAxisScale + ", aggregate="+aggregate+"]"; + } + + public void setAggregate(AggreateInternal aggregate) { + this.aggregate = aggregate; + } + + public AggreateInternal getAggregate() { + return aggregate; } } diff --git a/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotFileGenerator.java b/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotFileGenerator.java index a1c60f0..0de09c2 100644 --- a/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotFileGenerator.java +++ b/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotFileGenerator.java @@ -2,6 +2,7 @@ package org.lucares.recommind.logs; import java.util.Collection; +import org.lucares.pdb.plot.api.AggreateInternal; import org.lucares.pdb.plot.api.AxisScale; public class GnuplotFileGenerator { @@ -13,7 +14,20 @@ public class GnuplotFileGenerator { appendfln(result, "set terminal %s noenhanced size %d,%d", settings.getTerminal(), settings.getWidth(), settings.getHeight()); + + appendfln(result, "set datafile separator \"%s\"", settings.getDatafileSeparator()); + + int count = 1; + if (settings.getAggregate() != AggreateInternal.NONE) + { + for (final DataSeries dataSerie : dataSeries) { + + appendfln(result, "stats '%s' using 2 prefix \"A%d\"", dataSerie.getDataFile(),count); + count++; + } + } + appendfln(result, "set timefmt '%s'", settings.getTimefmt()); appendfln(result, "set xdata time"); @@ -21,7 +35,8 @@ public class GnuplotFileGenerator { appendfln(result, "set xlabel \"%s\"", settings.getXlabel()); appendfln(result, "set xtics rotate by %d", settings.getRotateXAxisLabel()); appendfln(result, "set xrange [\"%s\":\"%s\"]", settings.getDateFrom(), settings.getDateTo()); - + appendfln(result, "set yrange [\"1\":]"); + appendfln(result, "set ylabel \"%s\"", settings.getYlabel()); if (settings.getYAxisScale() == AxisScale.LOG10) { appendfln(result, "set logscale y"); @@ -29,12 +44,19 @@ public class GnuplotFileGenerator { appendfln(result, "set logscale y 2"); } + appendfln(result, "set grid"); appendfln(result, "set output \"%s\"", settings.getOutput().toAbsolutePath().toString().replace("\\", "/")); appendf(result, "plot "); - + + count = 1; for (final DataSeries dataSerie : dataSeries) { appendfln(result, "'%s' using 1:2 title '%s' with points, \\", dataSerie.getDataFile(), dataSerie.getTitle()); + if (settings.getAggregate() == AggreateInternal.MEAN) { + appendfln(result, "A%d_mean title '%s Mean', \\", count, dataSerie.getTitle(), + dataSerie.getTitle()); + } + count++; } return result.toString(); diff --git a/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotSettings.java b/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotSettings.java index 82bdcac..7f8e0c5 100644 --- a/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotSettings.java +++ b/pdb-plotting/src/main/java/org/lucares/recommind/logs/GnuplotSettings.java @@ -2,6 +2,7 @@ package org.lucares.recommind.logs; import java.nio.file.Path; +import org.lucares.pdb.plot.api.AggreateInternal; import org.lucares.pdb.plot.api.AxisScale; public class GnuplotSettings { @@ -30,6 +31,7 @@ public class GnuplotSettings { private AxisScale yAxisScale; private String dateFrom; private String dateTo; + private AggreateInternal aggregate; public GnuplotSettings(final Path output) { this.output = output; @@ -135,6 +137,14 @@ public class GnuplotSettings { return dateTo; } + public void setAggregate(AggreateInternal aggregate) { + this.aggregate = aggregate; + } + + public AggreateInternal getAggregate() { + return aggregate; + } + // plot 'sample.txt' using 1:2 title 'Bytes' with linespoints 2 } diff --git a/pdb-plotting/src/main/java/org/lucares/recommind/logs/Plotter.java b/pdb-plotting/src/main/java/org/lucares/recommind/logs/Plotter.java index 19a0713..4d4f729 100644 --- a/pdb-plotting/src/main/java/org/lucares/recommind/logs/Plotter.java +++ b/pdb-plotting/src/main/java/org/lucares/recommind/logs/Plotter.java @@ -116,6 +116,7 @@ public class Plotter { defineXAxis(gnuplotSettings, plotSettings.dateFrom(), plotSettings.dateTo()); gnuplotSettings.setYAxisScale(plotSettings.getYAxisScale()); + gnuplotSettings.setAggregate(plotSettings.getAggregate()); gnuplot.plot(gnuplotSettings, dataSeries); return new PlotResult(outputFile.getFileName(), dataSeries); diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/PlotSettingsTransformer.java b/pdb-ui/src/main/java/org/lucares/pdbui/PlotSettingsTransformer.java index d5bbab7..4ce4448 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/PlotSettingsTransformer.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/PlotSettingsTransformer.java @@ -1,8 +1,10 @@ package org.lucares.pdbui; +import org.lucares.pdb.plot.api.AggreateInternal; import org.lucares.pdb.plot.api.AxisScale; import org.lucares.pdb.plot.api.Limit; import org.lucares.pdb.plot.api.PlotSettings; +import org.lucares.pdbui.domain.Aggregate; import org.lucares.pdbui.domain.LimitBy; import org.lucares.pdbui.domain.PlotRequest; import org.lucares.pdbui.domain.YAxis; @@ -21,10 +23,19 @@ class PlotSettingsTransformer { result.setDateFrom(request.getDateFrom()); result.setDateRange(request.getDateRange()); result.setYAxisScale(toAxisScale(request.getAxisScale())); + result.setAggregate(toAggregateInternal(request.getAggregate())); return result; } + private static AggreateInternal toAggregateInternal(Aggregate aggregate) { + switch (aggregate) { + case NONE:return AggreateInternal.NONE; + case MEAN:return AggreateInternal.MEAN; + } + throw new IllegalStateException("unhandled enum: " + aggregate); + } + private static AxisScale toAxisScale(final YAxis yAxis) { switch (yAxis) { case LINEAR: diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/domain/Aggregate.java b/pdb-ui/src/main/java/org/lucares/pdbui/domain/Aggregate.java new file mode 100644 index 0000000..3e15b08 --- /dev/null +++ b/pdb-ui/src/main/java/org/lucares/pdbui/domain/Aggregate.java @@ -0,0 +1,5 @@ +package org.lucares.pdbui.domain; + +public enum Aggregate { + NONE, MEAN +} diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotRequest.java b/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotRequest.java index 2ce8741..ec0d249 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotRequest.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotRequest.java @@ -20,6 +20,8 @@ public class PlotRequest { private String dateFrom; private String dateRange; + + private Aggregate aggregate = Aggregate.NONE; public String getQuery() { return query; @@ -100,4 +102,12 @@ public class PlotRequest { public void setAxisScale(final YAxis yAxis) { this.yAxis = yAxis; } + + public void setAggregate(Aggregate aggregate) { + this.aggregate = aggregate; + } + + public Aggregate getAggregate() { + return aggregate; + } } diff --git a/pdb-ui/src/main/resources/resources/js/search.js b/pdb-ui/src/main/resources/resources/js/search.js index fec4f78..945d1e6 100644 --- a/pdb-ui/src/main/resources/resources/js/search.js +++ b/pdb-ui/src/main/resources/resources/js/search.js @@ -182,6 +182,7 @@ function plot(event){ request['dateFrom'] = $('#search-date-from').val(); request['dateRange'] = $('#search-date-range').val(); request['axisScale'] = $('#search-y-axis-scale').val(); + request['aggregate'] = $('#show-aggregate').val(); var success = function(response){ diff --git a/pdb-ui/src/main/resources/templates/main.html b/pdb-ui/src/main/resources/templates/main.html index 8473e6d..7b279ad 100644 --- a/pdb-ui/src/main/resources/templates/main.html +++ b/pdb-ui/src/main/resources/templates/main.html @@ -47,13 +47,19 @@