Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/services/FixingsKMChartService.java @ 9415:9744ce3c3853
Rework of fixanalysis computation and dWt and WQ facets. Got rid of strange remapping and bitshifting code by explicitely saving the column information and using it in the facets.
The facets also put the valid station range into their xml-metadata
author | gernotbelger |
---|---|
date | Thu, 16 Aug 2018 16:27:53 +0200 |
parents | 740d65e4aa14 |
children |
comparison
equal
deleted
inserted
replaced
9414:096f151a0a9f | 9415:9744ce3c3853 |
---|---|
24 import org.apache.log4j.Logger; | 24 import org.apache.log4j.Logger; |
25 import org.dive4elements.artifactdatabase.DefaultService; | 25 import org.dive4elements.artifactdatabase.DefaultService; |
26 import org.dive4elements.artifacts.CallMeta; | 26 import org.dive4elements.artifacts.CallMeta; |
27 import org.dive4elements.artifacts.GlobalContext; | 27 import org.dive4elements.artifacts.GlobalContext; |
28 import org.dive4elements.artifacts.Service; | 28 import org.dive4elements.artifacts.Service; |
29 import org.dive4elements.river.artifacts.model.FixingsColumn; | |
30 import org.dive4elements.river.artifacts.model.FixingsColumnFactory; | |
31 import org.dive4elements.river.artifacts.model.FixingsFilterBuilder; | |
32 import org.dive4elements.river.artifacts.model.FixingsOverview; | |
33 import org.dive4elements.river.artifacts.model.FixingsOverview.Fixing; | |
34 import org.dive4elements.river.artifacts.model.FixingsOverviewFactory; | |
35 import org.dive4elements.river.artifacts.model.GaugeFinder; | 29 import org.dive4elements.river.artifacts.model.GaugeFinder; |
36 import org.dive4elements.river.artifacts.model.GaugeFinderFactory; | 30 import org.dive4elements.river.artifacts.model.GaugeFinderFactory; |
37 import org.dive4elements.river.artifacts.model.GaugeRange; | 31 import org.dive4elements.river.artifacts.model.GaugeRange; |
32 import org.dive4elements.river.artifacts.model.fixings.FixingColumn; | |
33 import org.dive4elements.river.artifacts.model.fixings.FixingColumnData; | |
34 import org.dive4elements.river.artifacts.model.fixings.FixingsColumnFactory; | |
35 import org.dive4elements.river.artifacts.model.fixings.FixingsFilterBuilder; | |
36 import org.dive4elements.river.artifacts.model.fixings.FixingsOverview; | |
37 import org.dive4elements.river.artifacts.model.fixings.FixingsOverviewFactory; | |
38 import org.dive4elements.river.artifacts.model.fixings.QWI; | 38 import org.dive4elements.river.artifacts.model.fixings.QWI; |
39 import org.dive4elements.river.artifacts.resources.Resources; | 39 import org.dive4elements.river.artifacts.resources.Resources; |
40 import org.dive4elements.river.backend.SessionHolder; | 40 import org.dive4elements.river.backend.SessionHolder; |
41 import org.dive4elements.river.jfree.ShapeRenderer; | 41 import org.dive4elements.river.jfree.ShapeRenderer; |
42 import org.dive4elements.river.utils.Formatter; | 42 import org.dive4elements.river.utils.Formatter; |
142 return empty(); | 142 return empty(); |
143 } | 143 } |
144 | 144 |
145 final FixingsFilterBuilder ffb = new FixingsFilterBuilder(input); | 145 final FixingsFilterBuilder ffb = new FixingsFilterBuilder(input); |
146 | 146 |
147 final List<Fixing.Column> columns = overview.filter(ffb.getRange(), ffb.getFilter()); | 147 final List<FixingColumn> columns = overview.filter(ffb.getRange(), ffb.getFilter()); |
148 | 148 |
149 final List<Pair<Fixing.Column, FixingsColumn>> cols = new ArrayList<>(); | 149 final List<Pair<FixingColumn, FixingColumnData>> cols = new ArrayList<>(); |
150 | 150 |
151 for (final Fixing.Column col : columns) { | 151 for (final FixingColumn col : columns) { |
152 final FixingsColumn data = FixingsColumnFactory.INSTANCE.getColumnData(col); | 152 final FixingColumnData data = FixingsColumnFactory.INSTANCE.getColumnData(col); |
153 if (data != null) { | 153 if (data != null) { |
154 cols.add(new Pair<>(col, data)); | 154 cols.add(new Pair<>(col, data)); |
155 } | 155 } |
156 } | 156 } |
157 | 157 |
174 } | 174 } |
175 | 175 |
176 return new Output(out.toByteArray(), "image/" + format); | 176 return new Output(out.toByteArray(), "image/" + format); |
177 } | 177 } |
178 | 178 |
179 protected static JFreeChart createChart(final List<Pair<Fixing.Column, FixingsColumn>> cols, final String river, final double km, final CallMeta callMeta) { | 179 protected static JFreeChart createChart(final List<Pair<FixingColumn, FixingColumnData>> cols, final String river, final double km, final CallMeta callMeta) { |
180 final String labelFormat = Resources.getMsg(callMeta, I18N_CHART_LABEL_DATE, DEFAULT_CHART_LABEL_DATE); | 180 final String labelFormat = Resources.getMsg(callMeta, I18N_CHART_LABEL_DATE, DEFAULT_CHART_LABEL_DATE); |
181 | 181 |
182 final QWSeriesCollection.LabelGenerator lg = new QWSeriesCollection.DateFormatLabelGenerator(labelFormat); | 182 final QWSeriesCollection.LabelGenerator lg = new QWSeriesCollection.DateFormatLabelGenerator(labelFormat); |
183 | 183 |
184 final QWSeriesCollection dataset = new QWSeriesCollection(lg); | 184 final QWSeriesCollection dataset = new QWSeriesCollection(lg); |
185 | 185 |
186 final double[] w = new double[1]; | 186 final double[] w = new double[1]; |
187 for (final Pair<Fixing.Column, FixingsColumn> col : cols) { | 187 for (final Pair<FixingColumn, FixingColumnData> col : cols) { |
188 final boolean interpolated = !col.getB().getW(km, w); | 188 final boolean interpolated = !col.getB().getW(km, w); |
189 final double q = col.getB().getQ(km); | 189 final double q = col.getB().getQ(km); |
190 if (!Double.isNaN(w[0]) && !Double.isNaN(q)) { | 190 if (!Double.isNaN(w[0]) && !Double.isNaN(q)) { |
191 final QWI qw = new QWI(q, w[0], col.getA().getDescription(), col.getA().getStartTime(), interpolated, 0); | 191 final QWI qw = new QWI(q, w[0], col.getA().getStartTime(), interpolated); |
192 dataset.add(qw); | 192 dataset.add(qw); |
193 } | 193 } |
194 } | 194 } |
195 | 195 |
196 final String title = Resources.format(callMeta, I18N_CHART_TITLE, DEFAULT_CHART_TITLE, river, km); | 196 final String title = Resources.format(callMeta, I18N_CHART_TITLE, DEFAULT_CHART_TITLE, river, km); |