Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/process/SQRelationProcessor.java @ 7510:01d1ed168b24
WOutProcessor: Reorder statements so that function-call-debug-msg comes first.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 01 Nov 2013 16:44:49 +0100 |
parents | bb4a6b0077cf |
children | e3f2d8c006fb |
rev | line source |
---|---|
7240
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
3 * |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
7 */ |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
8 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports.process; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
10 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
11 import org.apache.log4j.Logger; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
12 import org.jfree.data.xy.XYSeries; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
13 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
14 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
15 import org.dive4elements.artifacts.CallContext; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
16 import org.dive4elements.river.exports.DiagramGenerator; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
17 import org.dive4elements.river.jfree.StyledXYSeries; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 import org.dive4elements.river.themes.ThemeDocument; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 import org.dive4elements.river.artifacts.model.FacetTypes; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
21 import org.dive4elements.river.jfree.JFreeUtil; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
22 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
23 import org.dive4elements.river.artifacts.model.sq.SQ; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
24 import org.dive4elements.river.artifacts.model.sq.SQFunction; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
25 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
26 public class SQRelationProcessor extends DefaultProcessor { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
27 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
28 public static final String I18N_AXIS_LABEL = |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
29 "chart.sq_relation.yaxis.label"; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
30 public static final String I18N_AXIS_LABEL_DEFAULT = |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
31 ""; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
32 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
33 private final static Logger logger = |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
34 Logger.getLogger(SQRelationProcessor.class); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
35 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
36 @Override |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
37 public void doOut( |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
38 DiagramGenerator generator, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
39 ArtifactAndFacet bundle, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
40 ThemeDocument theme, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
41 boolean visible) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
42 CallContext context = generator.getCallContext(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
43 String facetName = bundle.getFacetName(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
44 XYSeries series; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
45 Object data = bundle.getData(context); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
46 String desc = bundle.getFacetDescription(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
47 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
48 if (data == null) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
49 // Check has been here before so we keep it but |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
50 // this should never happen. |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
51 logger.error("Data is null for facet: " + facetName); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
52 return; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
53 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
54 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
55 if (FacetTypes.IS.SQ_CURVE(facetName)) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
56 SQFunction func = (SQFunction) data; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
57 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
58 series = JFreeUtil.sampleFunction2DPositive( |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
59 func.getFunction(), |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
60 theme, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
61 desc, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
62 500, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
63 Math.max(func.getMinQ(), 0.01), |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
64 Math.max(func.getMaxQ(), 0.02)); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
65 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
66 } else if (FacetTypes.IS.SQ_MEASUREMENT(facetName) || |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
67 FacetTypes.IS.SQ_OUTLIER(facetName)) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
68 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
69 SQ[] sqs = (SQ[]) data; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
70 series = new StyledXYSeries(desc, theme); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
71 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
72 for (SQ sq: sqs) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
73 double q = sq.getQ(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
74 double s = sq.getS(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
75 if (s > 0d && q > 0d) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
76 series.add(q, s, false); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
77 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
78 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
79 } else { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
80 logger.error("Could not handle: " + facetName); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
81 return; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
82 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
83 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
84 if (logger.isDebugEnabled()) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
85 logger.debug("Series '" + desc + "' has " |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
86 + series.getItemCount() + " items."); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
87 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
88 logger.debug(" -> min x = " + series.getMinX()); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
89 logger.debug(" -> max x = " + series.getMaxX()); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
90 logger.debug(" -> min y = " + series.getMinY()); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
91 logger.debug(" -> max y = " + series.getMaxY()); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
92 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
93 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
94 generator.addAxisSeries(series, axisName, visible); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
95 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
96 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
97 @Override |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
98 public boolean canHandle(String facettype) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
99 return FacetTypes.IS.SQ_CURVE(facettype) || |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
100 FacetTypes.IS.SQ_MEASUREMENT(facettype) || |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
101 FacetTypes.IS.SQ_OUTLIER(facettype); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
102 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
103 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
104 @Override |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
105 public String getAxisLabel(DiagramGenerator generator) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
106 return generator.msg( |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
107 I18N_AXIS_LABEL, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
108 I18N_AXIS_LABEL_DEFAULT); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
109 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
110 } |