annotate artifacts/src/main/java/org/dive4elements/river/exports/process/SedimentLoadProcessor.java @ 8098:09725b65955a

Add new and simplyfied SedimentLoadFacet The SedimentLoadFacet is intended to work with the Measurement stations. It uses the same mechanismn to access the Mesurement station values as the calculation does. SedimentLoadLS values need a different facet that will come soon.
author Andre Heinecke <andre.heinecke@intevation.de>
date Fri, 15 Aug 2014 18:27:19 +0200
parents 963ede7b32bb
children ca072278ad02
rev   line source
7685
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
3 *
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
7 */
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
8
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.exports.process;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
10
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11 import java.util.Set;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13 import org.apache.log4j.Logger;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14 import org.jfree.data.xy.XYSeries;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
15
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 import org.dive4elements.artifacts.CallContext;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
18 import org.dive4elements.river.artifacts.model.FacetTypes;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19 import org.dive4elements.river.exports.DiagramGenerator;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20 import org.dive4elements.river.exports.StyledSeriesBuilder;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
21 import org.dive4elements.river.jfree.StyledXYSeries;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
22 import org.dive4elements.river.themes.ThemeDocument;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
23
8024
963ede7b32bb Renamed SedimentLoad to SedimentLoadLSData to make place for SedimentLoad in backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7685
diff changeset
24 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadLSData;
7685
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
25 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFraction;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
27 // Base class for SedimantLoad$UNITProcessors
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
28 public class SedimentLoadProcessor extends DefaultProcessor
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29 {
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30 private final static Logger logger =
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 Logger.getLogger(SedimentLoadProcessor.class);
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
33 @Override
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
34 public void doOut(
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
35 DiagramGenerator generator,
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
36 ArtifactAndFacet bundle,
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
37 ThemeDocument theme,
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
38 boolean visible) {
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
39 logger.debug("doOut " + bundle.getFacetName());
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
40 CallContext context = generator.getCallContext();
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
41 XYSeries series = new StyledXYSeries(bundle.getFacetDescription(),
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
42 false, // Handle NaN
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
43 theme);
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
44 Object data = bundle.getData(context);
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
45 String facetName = bundle.getFacetName();
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
46 double [][] points;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
47
8098
09725b65955a Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8024
diff changeset
48 logger.debug("Do out for: " + facetName);
7685
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
49 if (FacetTypes.IS.SEDIMENT_LOAD_M3A(facetName) ||
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
50 FacetTypes.IS.SEDIMENT_LOAD_TA(facetName)) {
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
51 points = (double[][]) data;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 } else if (FacetTypes.IS.SEDIMENT_LOAD_UNKNOWN(facetName)) {
8024
963ede7b32bb Renamed SedimentLoad to SedimentLoadLSData to make place for SedimentLoad in backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7685
diff changeset
53 SedimentLoadLSData load = (SedimentLoadLSData) data;
7685
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
54 Set<Double> kms = load.getKms();
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55 points = new double[2][kms.size()];
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
56 int counter = 0;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 for (Double km: kms) {
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
58 SedimentLoadFraction fraction = load.getFraction(km);
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
59 points[0][counter] = km;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60 points[1][counter] = fraction.getUnknown();
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 counter++;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
62 }
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
63 } else {
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
64 logger.error("Unknown facet name: " + facetName);
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 return;
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
66 }
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
68 StyledSeriesBuilder.addPoints(series, points, false); // Keep NaN
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
70 generator.addAxisSeries(series, axisName, visible);
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 }
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
72 }
270946b97539 (issue1614) Handle NaN in Styled Series created by SedimentLoadProcessors
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
73

http://dive4elements.wald.intevation.org