annotate artifacts/src/main/java/org/dive4elements/river/exports/process/AnnotationProcessor.java @ 8472:3f505fba522f

(issue1772) Use 0.001km tolarance instead of 0.1 to find matching km. There is no sense to use a define here. I will not write static final double NULLPOINTNULLNULLONE=0.001 if i just want to use that value and not any other value which may make sense in some other place. Using hardcoded values can have its merits and makes the code easier to read.
author Andre Heinecke <andre.heinecke@intevation.de>
date Tue, 18 Nov 2014 15:24:40 +0100
parents e4606eae8ea5
children 1cc7653ca84f 0a5239a1e46e
rev   line source
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
3 *
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
7 */
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
8
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.exports.process;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
10
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11 import org.apache.log4j.Logger;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14 import org.dive4elements.artifacts.CallContext;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
15 import org.dive4elements.river.artifacts.model.FacetTypes;
7067
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
16 import org.dive4elements.river.exports.DiagramGenerator;
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 import org.dive4elements.river.exports.XYChartGenerator;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
18 import org.dive4elements.river.jfree.RiverAnnotation;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19 import org.dive4elements.river.themes.ThemeDocument;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
21 /**
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
22 * Add data to chart/generator.
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
23 *
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
24 */
7057
1011a40ee79c Add Default Processor implementation and make processors inherit it.
Andre Heinecke <aheinecke@intevation.de>
parents: 7050
diff changeset
25 public class AnnotationProcessor extends DefaultProcessor {
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7161
diff changeset
27 /** Private log. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7161
diff changeset
28 private static final Logger log =
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29 Logger.getLogger(AnnotationProcessor.class);
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 @Override
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32 public void doOut(
7067
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
33 DiagramGenerator generator,
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
34 ArtifactAndFacet bundle,
7067
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
35 ThemeDocument theme,
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
36 boolean visible) {
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
37 if (!visible) {
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
38 // Nothing to do
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
39 return;
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
40 }
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
41 CallContext context = generator.getCallContext();
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
42 if (!(bundle.getData(context) instanceof RiverAnnotation)) {
7067
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
43 // Just a bit defensive should not happen
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7161
diff changeset
44 log.error("Incompatible facet in doOut");
7067
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
45 return;
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
46 }
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
47 RiverAnnotation ra = (RiverAnnotation)bundle.getData(context);
7067
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
48 ra.setTheme(theme);
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
49 ra.setLabel(bundle.getFacetDescription());
7067
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
50 generator.addAnnotations(ra);
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
51 }
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
52
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
53 @Override
eb24d5203d17 Add second doOut implementations to work with diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7057
diff changeset
54 public void doOut(
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55 XYChartGenerator generator,
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
56 ArtifactAndFacet bundle,
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 ThemeDocument theme,
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
58 boolean visible,
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
59 int index)
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60 {
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 if (!visible) {
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
62 // Nothing to do
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
63 return;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
64 }
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 CallContext context = generator.getCallContext();
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
66 if (!(bundle.getData(context) instanceof RiverAnnotation)) {
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67 // Just a bit defensive should not happen
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7161
diff changeset
68 log.error("Incompatible facet in doOut");
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69 return;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
70 }
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
71 RiverAnnotation ra = (RiverAnnotation)bundle.getData(context);
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
72 ra.setTheme(theme);
7075
253d80af5b7f More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents: 7067
diff changeset
73 ra.setLabel(bundle.getFacetDescription());
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
74 generator.addAnnotations(ra);
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
75 }
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
76
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
77 @Override
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
78 public boolean canHandle(String facetType) {
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
79 if (facetType == null) {
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
80 return false;
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
81 }
7129
7fc41a235f47 Also handle bed height annotations
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
82 return facetType.equals(FacetTypes.LONGITUDINAL_ANNOTATION) ||
7161
b7b839557282 Handle flow velocity annotation in annoation processor
Andre Heinecke <aheinecke@intevation.de>
parents: 7129
diff changeset
83 facetType.equals(FacetTypes.MIDDLE_BED_HEIGHT_ANNOTATION) ||
b7b839557282 Handle flow velocity annotation in annoation processor
Andre Heinecke <aheinecke@intevation.de>
parents: 7129
diff changeset
84 facetType.equals(FacetTypes.FLOW_VELOCITY_ANNOTATION);
7050
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
85 }
25a5ce8abfef Add annotationProcessor
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
86 }

http://dive4elements.wald.intevation.org