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);

http://dive4elements.wald.intevation.org