Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/process/SQRelationProcessor.java @ 8154:4ee2763a6172
Removed obsolete imports.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 29 Aug 2014 11:03:38 +0200 |
parents | b5cba2690347 |
children | e4606eae8ea5 |
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 |
7990
e3f2d8c006fb
Add meta data to chart series in sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
7240
diff
changeset
|
11 import java.util.Map; |
e3f2d8c006fb
Add meta data to chart series in sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
7240
diff
changeset
|
12 |
7240
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
13 import org.apache.log4j.Logger; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
14 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
15 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
16 import org.dive4elements.artifacts.CallContext; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
17 import org.dive4elements.river.exports.DiagramGenerator; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 import org.dive4elements.river.jfree.StyledXYSeries; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 import org.dive4elements.river.themes.ThemeDocument; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 import org.dive4elements.river.artifacts.model.FacetTypes; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
21 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
22 import org.dive4elements.river.jfree.JFreeUtil; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
23 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
24 import org.dive4elements.river.artifacts.model.sq.SQ; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
25 import org.dive4elements.river.artifacts.model.sq.SQFunction; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
26 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
27 public class SQRelationProcessor extends DefaultProcessor { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
28 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
29 public static final String I18N_AXIS_LABEL = |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
30 "chart.sq_relation.yaxis.label"; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
31 public static final String I18N_AXIS_LABEL_DEFAULT = |
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 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
34 private final static Logger logger = |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
35 Logger.getLogger(SQRelationProcessor.class); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
36 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
37 @Override |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
38 public void doOut( |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
39 DiagramGenerator generator, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
40 ArtifactAndFacet bundle, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
41 ThemeDocument theme, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
42 boolean visible) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
43 CallContext context = generator.getCallContext(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
44 String facetName = bundle.getFacetName(); |
7990
e3f2d8c006fb
Add meta data to chart series in sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
7240
diff
changeset
|
45 StyledXYSeries series; |
7240
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
46 Object data = bundle.getData(context); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
47 String desc = bundle.getFacetDescription(); |
7990
e3f2d8c006fb
Add meta data to chart series in sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
7240
diff
changeset
|
48 Map<String, String> metaData = |
e3f2d8c006fb
Add meta data to chart series in sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
7240
diff
changeset
|
49 bundle.getFacet().getMetaData(bundle.getArtifact(), context); |
7240
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
50 if (data == null) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
51 // Check has been here before so we keep it but |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
52 // this should never happen. |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
53 logger.error("Data is null for facet: " + facetName); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
54 return; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
55 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
56 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
57 if (FacetTypes.IS.SQ_CURVE(facetName)) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
58 SQFunction func = (SQFunction) data; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
59 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
60 series = JFreeUtil.sampleFunction2DPositive( |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
61 func.getFunction(), |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
62 theme, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
63 desc, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
64 500, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
65 Math.max(func.getMinQ(), 0.01), |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
66 Math.max(func.getMaxQ(), 0.02)); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
67 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
68 } else if (FacetTypes.IS.SQ_MEASUREMENT(facetName) || |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
69 FacetTypes.IS.SQ_OUTLIER(facetName)) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
70 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
71 SQ[] sqs = (SQ[]) data; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
72 series = new StyledXYSeries(desc, theme); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
73 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
74 for (SQ sq: sqs) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
75 double q = sq.getQ(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
76 double s = sq.getS(); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
77 if (s > 0d && q > 0d) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
78 series.add(q, s, false); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
79 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
80 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
81 } else { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
82 logger.error("Could not handle: " + facetName); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
83 return; |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
84 } |
7990
e3f2d8c006fb
Add meta data to chart series in sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
7240
diff
changeset
|
85 series.putMetaData(metaData, bundle.getArtifact(), context); |
7240
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
86 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
87 if (logger.isDebugEnabled()) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
88 logger.debug("Series '" + desc + "' has " |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
89 + series.getItemCount() + " items."); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
90 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
91 logger.debug(" -> min x = " + series.getMinX()); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
92 logger.debug(" -> max x = " + series.getMaxX()); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
93 logger.debug(" -> min y = " + series.getMinY()); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
94 logger.debug(" -> max y = " + series.getMaxY()); |
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 generator.addAxisSeries(series, axisName, visible); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
98 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
99 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
100 @Override |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
101 public boolean canHandle(String facettype) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
102 return FacetTypes.IS.SQ_CURVE(facettype) || |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
103 FacetTypes.IS.SQ_MEASUREMENT(facettype) || |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
104 FacetTypes.IS.SQ_OUTLIER(facettype); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
105 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
106 |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
107 @Override |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
108 public String getAxisLabel(DiagramGenerator generator) { |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
109 return generator.msg( |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
110 I18N_AXIS_LABEL, |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
111 I18N_AXIS_LABEL_DEFAULT); |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
112 } |
bb4a6b0077cf
Add SQRelation Processor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
113 } |