Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/DiagramAttributes.java @ 9590:3f0803009a8f
Punkt 3.2 Lineare Interpolation weglassen für Peilungen
author | gernotbelger |
---|---|
date | Thu, 10 Jan 2019 14:52:23 +0100 |
parents | 55e2155ab52d |
children |
rev | line source |
---|---|
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
3 * |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
7 */ |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
8 |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports; |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
10 |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
11 import java.util.ArrayList; |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
12 import java.util.Collection; |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
13 import java.util.Collections; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
14 import java.util.List; |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
15 |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
16 import org.w3c.dom.Element; |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
17 import org.w3c.dom.NodeList; |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
18 import org.dive4elements.river.exports.DiagramAttributes.AxisAttributes.TickUnits; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
19 import org.dive4elements.river.exports.process.Processor; |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
20 import org.jfree.chart.axis.NumberAxis; |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
21 import org.jfree.chart.axis.TickUnitSource; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
22 import org.apache.log4j.Logger; |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
23 |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
24 import org.dive4elements.artifacts.CallContext; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
25 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
26 import org.dive4elements.river.artifacts.resources.Resources; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
27 import org.dive4elements.river.artifacts.D4EArtifact; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
28 |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
29 import org.dive4elements.artifacts.common.utils.ElementConverter; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
30 |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
31 public class DiagramAttributes |
7227
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
32 implements ElementConverter, D4EArtifact.FacetFilter |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
33 { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
34 private static Logger log = Logger.getLogger(DiagramAttributes.class); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
35 |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
36 public interface Evaluator { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
37 Object evaluate(D4EArtifact artifact, CallContext context); |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
38 } // interface Evaluator |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
39 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
40 public static final Evaluator TRUE = new Evaluator() { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
41 @Override |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
42 public Object evaluate(D4EArtifact artifact, CallContext context) { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
43 return Boolean.TRUE; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
44 } |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
45 }; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
46 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
47 public static final Evaluator FALSE = new Evaluator() { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
48 @Override |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
49 public Object evaluate(D4EArtifact artifact, CallContext context) { |
7166 | 50 return Boolean.FALSE; |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
51 } |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
52 }; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
53 |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
54 public class Instance { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
55 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
56 private List<Processor> processors; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
57 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
58 public Instance() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
59 processors = createProcessors(); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
60 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
61 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
62 private List<Processor> createProcessors() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
63 List<Processor> processors = |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
64 new ArrayList<Processor>(axesProcessors.size()); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
65 for (AxisProcessor ap: axesProcessors) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
66 Processor pr = ap.createProcessor(); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
67 if (pr != null) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
68 processors.add(pr); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
69 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
70 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
71 return processors; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
72 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
73 |
7122
038a04e001d7
Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents:
7099
diff
changeset
|
74 public List<Processor> getProcessorsForAxisName(String axisName) { |
038a04e001d7
Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents:
7099
diff
changeset
|
75 List<Processor> retval = new ArrayList<Processor>(5); |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
76 for (Processor pr: processors) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
77 String aName = pr.getAxisName(); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
78 if (aName != null && axisName.equals(aName)) { |
7122
038a04e001d7
Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents:
7099
diff
changeset
|
79 retval.add(pr); |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
80 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
81 } |
7122
038a04e001d7
Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents:
7099
diff
changeset
|
82 return retval; |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
83 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
84 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
85 public List<Processor> getProcessors() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
86 return processors; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
87 } |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
88 |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
89 public Collection<ChartExtender> getExtenders() { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
90 return DiagramAttributes.this.getExtenders(); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
91 } |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
92 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
93 public Title getTitle() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
94 return DiagramAttributes.this.getTitle(); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
95 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
96 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
97 public Title getSubtitle() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
98 return DiagramAttributes.this.getSubtitle(); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
99 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
100 |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
101 public DomainAxisAttributes getDomainAxis() { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
102 return DiagramAttributes.this.getDomainAxis(); |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
103 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
104 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
105 public int getAxisIndex(String axisName) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
106 return DiagramAttributes.this.getAxisIndex(axisName); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
107 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
108 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
109 public String getAxisName(int index) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
110 return DiagramAttributes.this.getAxisName(index); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
111 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
112 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
113 public List<AxisAttributes> getAxesAttributes() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
114 return DiagramAttributes.this.getAxesAttributes(); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
115 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
116 } // class Instance |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
117 |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
118 public static class AxisAttributes { |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
119 |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
120 /** Possible point of extension in order to support different tick units per axis.*/ |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
121 public static enum TickUnits { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
122 standard { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
123 @Override |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
124 public TickUnitSource createTickUnits() { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
125 return NumberAxis.createStandardTickUnits(); |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
126 } |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
127 }, integer { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
128 @Override |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
129 public TickUnitSource createTickUnits() { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
130 return NumberAxis.createIntegerTickUnits(); |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
131 } |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
132 }; |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
133 |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
134 public abstract TickUnitSource createTickUnits(); |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
135 } |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
136 |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
137 private final String name; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
138 private final boolean isLeftAlign; // TODO: Remove! |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
139 private final boolean forceAlign; // TODO: Remove! |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
140 private final boolean includeZero; // TODO: Use Evaluator |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
141 |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
142 private final Evaluator isInverted; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
143 private final Evaluator isLog; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
144 private final double lowerMargin; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
145 private final double upperMargin; |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
146 private TickUnits tickUnits; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
147 |
7049
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
148 public AxisAttributes( |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
149 String name, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
150 boolean isLeftAlign, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
151 boolean forceAlign, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
152 boolean includeZero, |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
153 Evaluator isInverted, |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
154 Evaluator isLog, |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
155 TickUnits tickUnits, |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
156 double lowerMargin, |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
157 double upperMargin |
7049
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
158 ) { |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
159 this.name = name; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
160 this.isLeftAlign = isLeftAlign; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
161 this.forceAlign = forceAlign; |
7062
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
162 this.includeZero = includeZero; |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
163 this.isInverted = isInverted; |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
164 this.isLog = isLog; |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
165 this.tickUnits = tickUnits; |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
166 this.lowerMargin = lowerMargin; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
167 this.upperMargin = upperMargin; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
168 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
169 |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
170 public String getName() { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
171 return name; |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
172 } |
7049
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
173 |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
174 public boolean isLeftAlign() { |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
175 return isLeftAlign; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
176 } |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
177 |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
178 public boolean forceAlign() { |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
179 return forceAlign; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
180 } |
7062
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
181 |
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
182 public boolean includeZero() { |
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
183 return includeZero; |
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
184 } |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
185 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
186 public Evaluator isInverted() { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
187 return isInverted; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
188 } |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
189 |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
190 public Evaluator isLog() { |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
191 return isLog; |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
192 } |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
193 |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
194 public double getLowerMargin() { |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
195 return this.lowerMargin; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
196 } |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
197 |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
198 public double getUpperMargin() { |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
199 return this.upperMargin; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
200 } |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
201 |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
202 public TickUnits getTickUnits() { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
203 return this.tickUnits; |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
204 } |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
205 } // class AxisAttributes |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
206 |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
207 public class DomainAxisAttributes extends AxisAttributes { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
208 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
209 private Title title; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
210 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
211 public DomainAxisAttributes( |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
212 String name, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
213 boolean isLeftAlign, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
214 boolean forceAlign, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
215 boolean includeZero, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
216 Evaluator isInverted, |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
217 Evaluator isLog, |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
218 Title title |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
219 ) { |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
220 super(name, isLeftAlign, forceAlign, includeZero, isInverted, |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
221 isLog, TickUnits.standard, 0.0, 0.0); |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
222 this.title = title; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
223 } |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
224 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
225 public Title getTitle() { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
226 return title; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
227 } |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
228 } // class DomainAxisAttributes |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
229 |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
230 public static class AxisProcessor { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
231 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
232 private Class<Processor> processorClass; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
233 private String axisName; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
234 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
235 public AxisProcessor(Class<Processor> processorClass, String axisName) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
236 this.processorClass = processorClass; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
237 this.axisName = axisName; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
238 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
239 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
240 public Processor createProcessor() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
241 try { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
242 Processor pr = processorClass.newInstance(); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
243 pr.setAxisName(axisName); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
244 return pr; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
245 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
246 catch (InstantiationException ie) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
247 log.error(ie, ie); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
248 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
249 catch (IllegalAccessException iae) { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
250 log.error(iae, iae); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
251 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
252 return null; |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
253 } |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
254 |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
255 } // class AxisProcessor |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
256 |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
257 public abstract static class ConvertEvaluator |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
258 implements Evaluator |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
259 { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
260 protected String key; |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
261 protected String type; |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
262 |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
263 public ConvertEvaluator() { |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
264 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
265 |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
266 public ConvertEvaluator(String key, String type) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
267 this.key = key; |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
268 this.type = type; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
269 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
270 |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
271 protected Object convert(Object value) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
272 if (value == null || type == null || type.isEmpty()) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
273 return value; |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
274 } |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
275 if (value instanceof String) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
276 String v = (String)value; |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
277 if ("double".equals(type)) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
278 return Double.valueOf(v); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
279 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
280 if ("int".equals(type)) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
281 return Integer.valueOf(v); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
282 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
283 if ("string".equals(type)) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
284 return v; |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
285 } |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
286 } |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
287 // TODO: Support more types |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
288 return value; |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
289 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
290 } // class ConvertEvaluator |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
291 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
292 public static class ContextEvaluator extends ConvertEvaluator { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
293 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
294 public ContextEvaluator() { |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
295 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
296 |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
297 public ContextEvaluator(String key, String type) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
298 super(key, type); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
299 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
300 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
301 @Override |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
302 public Object evaluate(D4EArtifact artifact, CallContext context) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
303 return convert(context.getContextValue(key)); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
304 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
305 } // class ContextEvaluator |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
306 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
307 public static class ArtifactEvaluator extends ConvertEvaluator { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
308 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
309 public ArtifactEvaluator() { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
310 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
311 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
312 public ArtifactEvaluator(String key, String type) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
313 super(key, type); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
314 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
315 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
316 @Override |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
317 public Object evaluate(D4EArtifact artifact, CallContext context) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
318 return convert(artifact.getDataAsString(key)); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
319 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
320 } // class ContextEvaluator |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
321 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
322 public static class StringEvaluator implements Evaluator { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
323 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
324 private String value; |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
325 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
326 public StringEvaluator() { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
327 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
328 public StringEvaluator(String value) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
329 this.value = value; |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
330 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
331 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
332 @Override |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
333 public Object evaluate(D4EArtifact artifact, CallContext context) { |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
334 return value; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
335 } |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
336 } // class StringEvaluator |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
337 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
338 public static class Title { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
339 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
340 private String key; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
341 private String def; |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
342 private List<Evaluator> arguments; |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
343 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
344 public Title() { |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
345 arguments = new ArrayList<Evaluator>(5); |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
346 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
347 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
348 public Title(String key) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
349 this(key, key); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
350 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
351 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
352 public Title(String key, String def) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
353 this(); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
354 this.key = key; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
355 this.def = def; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
356 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
357 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
358 public String getKey() { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
359 return key; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
360 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
361 |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
362 public void addArgument(Evaluator argument) { |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
363 arguments.add(argument); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
364 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
365 |
7060
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
366 public String evaluate(D4EArtifact artifact, CallContext context) { |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
367 if (key == null || key.isEmpty()) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
368 return def; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
369 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
370 Object [] args = new Object[arguments.size()]; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
371 for (int i = 0; i < args.length; ++i) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
372 args[i] = arguments.get(i).evaluate(artifact, context); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
373 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
374 return Resources.getMsg(context.getMeta(), key, def, args); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
375 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
376 } // class Title |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
377 |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
378 private List<AxisAttributes> axesAttrs; |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
379 private List<AxisProcessor> axesProcessors; |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
380 private List<ChartExtender> extenders = new ArrayList<>(); |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
381 |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
382 private Title title; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
383 private Title subtitle; |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
384 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
385 private DomainAxisAttributes domainAxis; |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
386 |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
387 public DiagramAttributes() { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
388 axesAttrs = new ArrayList<AxisAttributes>(5); |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
389 axesProcessors = new ArrayList<AxisProcessor>(5); |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
390 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
391 |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
392 @Override |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
393 public Object convert(Element config) { |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
394 parseAxis(config); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
395 parseProcessors(config); |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
396 parseTitle(config); |
7049
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
397 parseSubtitle(config); |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
398 parseDomainAxis(config); |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
399 parseExtenders(config); |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
400 return this; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
401 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
402 |
7060
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
403 public List<AxisAttributes> getAxesAttributes() { |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
404 return axesAttrs; |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
405 } |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
406 |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
407 private void parseAxis(Element config) { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
408 NodeList axisNodes = config.getElementsByTagName("axis"); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
409 |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
410 for (int i = 0, N = axisNodes.getLength(); i < N; ++i) { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
411 Element axisElement = (Element)axisNodes.item(i); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
412 String name = axisElement.getAttribute("name").trim(); |
7049
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
413 String align = axisElement.getAttribute("align").trim(); |
7062
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
414 String includeZero = |
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
415 axisElement.getAttribute("include-zero").trim(); |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
416 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
417 String isInverted = axisElement.getAttribute("inverted"); |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
418 String isLog = axisElement.getAttribute("logarithmic"); |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
419 |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
420 final TickUnits tickUnits = parseTickUnits(axisElement); |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
421 |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
422 final double lowerMargin = parseDouble( axisElement.getAttribute("lowerMargin"), 0.0 ); |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
423 final double upperMargin = parseDouble( axisElement.getAttribute("upperMargin"), 0.0 ); |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
424 |
7049
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
425 if (name.isEmpty()) { |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
426 continue; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
427 } |
7049
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
428 boolean isleftAlign = false; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
429 boolean forceAlign = false; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
430 for (String part: align.split("[\\s,]")) { |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
431 part = part.trim(); |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
432 if ("left" .equals(part)) isleftAlign = true; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
433 else if ("right".equals(part)) isleftAlign = false; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
434 else if ("force".equals(part)) forceAlign = true; |
165ea04b1545
Added alignment rules for diagrams.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7048
diff
changeset
|
435 } |
7062
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
436 |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
437 |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
438 Evaluator isInvertedE = parseEvaluator(isInverted, FALSE); |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
439 |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
440 Evaluator isLogE = parseEvaluator(isLog, FALSE); |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
441 |
7062
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
442 axesAttrs.add(new AxisAttributes( |
4310c612a986
Added 'include-zero' attribute to <axis> tag in diagram configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7061
diff
changeset
|
443 name, isleftAlign, forceAlign, |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
444 includeZero.equals("true"), |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
445 isInvertedE, isLogE, tickUnits, |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
446 lowerMargin,upperMargin)); |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
447 } |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
448 } |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
449 |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
450 private TickUnits parseTickUnits(Element axisElement) { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
451 final String attribute = axisElement.getAttribute("tick-units"); |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
452 if( attribute == null || attribute.trim().isEmpty()) |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
453 return TickUnits.standard; |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
454 |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
455 try { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
456 return TickUnits.valueOf(attribute); |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
457 } |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
458 catch (Exception e) { |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
459 log.error(String.format("Invalid tick-units: %s", attribute), e); |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
460 return TickUnits.standard; |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
461 } |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
462 } |
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
463 |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
464 private static double parseDouble( final String text, final double defaultValue ) { |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
465 if( text == null || text.isEmpty() ) |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
466 return defaultValue; |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
467 |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
468 try { |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
469 return Double.parseDouble(text); |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
470 } |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
471 catch (final NumberFormatException e) { |
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
472 e.printStackTrace(); |
9283
55e2155ab52d
Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents:
8892
diff
changeset
|
473 log.error(String.format("Invalid double attribute: %s", text), e); |
8889
f87f435df856
Allow to configure lower and upper margin of a chart axis
gernotbelger
parents:
7241
diff
changeset
|
474 return defaultValue; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
475 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
476 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
477 |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
478 private static Evaluator createDynamicEvaluator( |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
479 String className, |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
480 Evaluator def |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
481 ) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
482 try { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
483 Class<Evaluator> clazz = (Class<Evaluator>)Class.forName(className); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
484 return clazz.newInstance(); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
485 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
486 catch (ClassNotFoundException cnfe) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
487 log.error(cnfe, cnfe); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
488 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
489 catch (InstantiationException ie) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
490 log.error(ie, ie); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
491 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
492 catch (IllegalAccessException iae) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
493 log.error(iae, iae); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
494 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
495 return def; |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
496 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
497 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
498 private static Evaluator parseEvaluator(String s, Evaluator def) { |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
499 if ((s = s.trim()).isEmpty()) return def; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
500 if ("true".equals(s)) return TRUE; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
501 if ("false".equals(s)) return FALSE; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
502 if (s.endsWith("()")) { |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
503 return createDynamicEvaluator( |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
504 s.substring(0, s.length()-2).trim(), |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
505 def); |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
506 } |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
507 return def; |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
508 } |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
509 |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
510 public List<AxisProcessor> getAxesProcessors() { |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
511 return axesProcessors; |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
512 } |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
513 |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
514 public Collection<ChartExtender> getExtenders() { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
515 return Collections.unmodifiableCollection(extenders); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
516 } |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
517 |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
518 public Title getTitle() { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
519 return title; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
520 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
521 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
522 public Title getSubtitle() { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
523 return subtitle; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
524 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
525 |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
526 public DomainAxisAttributes getDomainAxis() { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
527 return domainAxis; |
7061
4f6b3ba542de
Added domain axis title to diagram attributes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7060
diff
changeset
|
528 } |
4f6b3ba542de
Added domain axis title to diagram attributes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7060
diff
changeset
|
529 |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
530 private void parseProcessors(Element config) { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
531 NodeList processorNodes = config.getElementsByTagName("processor"); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
532 |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
533 for (int i = 0, N = processorNodes.getLength(); i < N; ++i) { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
534 Element processorElement = (Element)processorNodes.item(i); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
535 String className = processorElement.getAttribute("class").trim(); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
536 String axisName = processorElement.getAttribute("axis").trim(); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
537 if (className.isEmpty() || axisName.isEmpty()) { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
538 continue; |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
539 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
540 |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
541 try { |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
542 Class<Processor> processorClass = |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
543 (Class<Processor>)Class.forName(className); |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
544 axesProcessors.add(new AxisProcessor(processorClass, axisName)); |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
545 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
546 catch (ClassNotFoundException cnfe) { |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
547 log.error(cnfe, cnfe); |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
548 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
549 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
550 } |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
551 |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
552 private void parseExtenders(final Element config) { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
553 final NodeList processorNodes = config.getElementsByTagName("chartextender"); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
554 |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
555 for (int i = 0, N = processorNodes.getLength(); i < N; ++i) { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
556 final Element extenderElement = (Element)processorNodes.item(i); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
557 final String className = extenderElement.getAttribute("class").trim(); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
558 if (className.isEmpty() ) { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
559 log.error("chartextender missing 'class' attribute"); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
560 continue; |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
561 } |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
562 |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
563 try { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
564 final Class<?> protoclass = Class.forName(className); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
565 if( !ChartExtender.class.isAssignableFrom(protoclass) ) { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
566 log.error(String.format( "Chart extender must implement interface ChartExtender: %s", className) ); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
567 continue; |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
568 } |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
569 |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
570 final ChartExtender extender = (ChartExtender) protoclass.newInstance(); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
571 extenders.add(extender); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
572 } |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
573 catch (ClassNotFoundException | InstantiationException | IllegalAccessException cnfe) { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
574 log.error(String.format( "Failed to load or create chartextender class: %s", className ), cnfe); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
575 } |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
576 } |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8889
diff
changeset
|
577 } |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
578 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
579 private void parseTitle(Element config) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
580 title = extractTitle(config, "title"); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
581 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
582 |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
583 private void parseSubtitle(Element config) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
584 subtitle = extractTitle(config, "subtitle"); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
585 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
586 |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
587 private void parseDomainAxis(Element config) { |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
588 Title title = extractTitle(config, "domain-axis"); |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
589 String includeZero = ""; |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
590 String isInverted = ""; |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
591 String isLog = ""; |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
592 |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
593 NodeList dAlist = config.getElementsByTagName("domain-axis"); |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
594 if (dAlist.getLength() > 0) { |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
595 Element dAelement = (Element)dAlist.item(0); |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
596 |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
597 includeZero = dAelement.getAttribute("include-zero"); |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
598 isInverted = dAelement.getAttribute("inverted"); |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
599 isLog = dAelement.getAttribute("logarithmic"); |
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
600 } |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
601 |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
602 domainAxis = new DomainAxisAttributes( |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
603 "X", |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
604 false, |
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
605 false, |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
606 includeZero.equals("true"), |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
607 parseEvaluator(isInverted, FALSE), |
7241
32db4f89b65f
Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents:
7227
diff
changeset
|
608 parseEvaluator(isLog, FALSE), |
7143
053e39436ba3
Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7122
diff
changeset
|
609 title); |
7061
4f6b3ba542de
Added domain axis title to diagram attributes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7060
diff
changeset
|
610 } |
4f6b3ba542de
Added domain axis title to diagram attributes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7060
diff
changeset
|
611 |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
612 private static Title extractTitle(Element config, String tagName) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
613 NodeList titleNodes = config.getElementsByTagName(tagName); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
614 if (titleNodes.getLength() < 1) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
615 return null; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
616 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
617 Element titleElement = (Element)titleNodes.item(0); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
618 String key = titleElement.getAttribute("key"); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
619 String def = titleElement.getAttribute("default"); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
620 Title title = new Title(key, def); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
621 NodeList argumentNodes = titleElement.getElementsByTagName("arg"); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
622 for (int i = 0, N = argumentNodes.getLength(); i < N; ++i) { |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
623 Element argumentElement = (Element)argumentNodes.item(i); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
624 String expression = argumentElement.getAttribute("expr"); |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
625 String type = argumentElement.getAttribute("type"); |
7160
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
626 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
627 Evaluator ev = new StringEvaluator(expression); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
628 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
629 if (expression.endsWith("()")) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
630 ev = createDynamicEvaluator( |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
631 expression.substring(0, expression.length()-2).trim(), |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
632 ev); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
633 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
634 else if (expression.startsWith("artifact.")) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
635 ev = new ArtifactEvaluator( |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
636 expression.substring("artifact.".length()), type); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
637 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
638 else if (expression.startsWith("context.")) { |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
639 ev = new ContextEvaluator( |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
640 expression.substring("context.".length()), type); |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
641 } |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
642 |
f2ffa631c2ed
Diagram attributes: Use evaluators for title arguments, too. This makes it more consistent, powerful and a little bit faster.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7143
diff
changeset
|
643 title.addArgument(ev); |
7048
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
644 } |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
645 return title; |
a43137dfdcac
Simple interpolation logic for diagram titles and subtitles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7042
diff
changeset
|
646 } |
7060
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
647 |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
648 public int getAxisIndex(String axisName) { |
7061
4f6b3ba542de
Added domain axis title to diagram attributes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7060
diff
changeset
|
649 for (int i = axesAttrs.size()-1; i >= 0; --i) { |
7060
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
650 if (axesAttrs.get(i).getName().equals(axisName)) { |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
651 return i; |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
652 } |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
653 } |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
654 return -1; |
78ded33f5f5b
Some more accessors and typo fix
Andre Heinecke <aheinecke@intevation.de>
parents:
7059
diff
changeset
|
655 } |
7068
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7062
diff
changeset
|
656 |
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7062
diff
changeset
|
657 public String getAxisName(int index) { |
7099
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
658 return index < 0 || index >= axesAttrs.size() |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
659 ? "" // null? |
24f153ad1f40
Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7084
diff
changeset
|
660 : axesAttrs.get(index).getName(); |
7068
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7062
diff
changeset
|
661 } |
7227
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
662 |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
663 @Override |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
664 public boolean accept(String outName, String facetName) { |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
665 Instance instance = new Instance(); |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
666 for (Processor pr: instance.getProcessors()) { |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
667 if (pr.canHandle(facetName)) { |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
668 return true; |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
669 } |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
670 } |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
671 return false; |
744df5a03337
Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7166
diff
changeset
|
672 } |
7040
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
673 } |
f3cdc620b666
Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
674 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |