annotate artifacts/src/main/java/org/dive4elements/river/exports/DiagramAttributes.java @ 7040:f3cdc620b666 generator-refactoring

Added first version of diagram attribute parser.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 18 Sep 2013 16:20:59 +0200
parents
children 599d3c48474c
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;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12 import java.util.List;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
13
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
14 import org.w3c.dom.Element;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 import org.w3c.dom.NodeList;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17 import org.dive4elements.river.exports.process.Processor;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
18
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19 import org.apache.log4j.Logger;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
20
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
21 public class DiagramAttributes
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
22 {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23 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
24
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 public class AxisAttributes {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26 // TODO: More Attributes
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27 private String name;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
29 public AxisAttributes() {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
30 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32 public AxisAttributes(String name) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
33 this.name = name;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
35
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
36 public String getName() {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
37 return name;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
38 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
39 } // class AxisAttributes
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
40
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
41 public class AxisProcessor {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
42 private Processor processor;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43 private String axisName;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 public AxisProcessor() {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
48 public AxisProcessor(Processor processor, String axisName) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49 this.processor = processor;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50 this.axisName = axisName;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
51 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
52
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 public Processor getProcessor() {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 return processor;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57 public getAxisName() {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 return axisName;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 } // class AxisProcessor
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
61
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
62 private List<AxisAttributes> axesAttrs;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
63 private List<AxisProcessor> axesProcessors;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
64
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
65 public DiagramAttributes() {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
66 axesAttrs = new ArrayList<AxisAttributes>(5);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
67 axesProcessors = new ArrayList<AxisProcessor>(5);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
68 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
69
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
70 public DiagramAttributes(Element config) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
71 this();
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
72 parseAxis(config);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
73 parseProcessors(config);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
74 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
75
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
76 private void parseAxis(Element config) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
77 NodeList axisNodes = config.getElementsByTagName("axis");
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
78
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
79 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
80 Element axisElement = (Element)axisNodes.item(i);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
81 String name = axisElement.getAttribute("name").trim();
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
82 if (!name.isEmpty()) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
83 axesAttrs.add(new AxisAttributes(name));
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
84 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
85 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
86 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
87
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
88 public List<AxisProcessor> getAxesProcessors() {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
89 return axesProcessors;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
90 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
91
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
92 private void parseProcessors(Element config) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
93 NodeList processorNodes = config.getElementsByTagName("processor");
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
94
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
95 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
96 Element processorElement = (Element)processorNodes.item(i);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
97 String className = processorElement.getAttribute("class").trim();
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
98 String axisName = processorElement.getAttribute("axis").trim();
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
99 if (className.isEmpty() || axisName.isEmpty()) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
100 continue;
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
101 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
102
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
103 try {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
104 Processor processor =
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
105 (Processor)Class.forName(className).newInstance();
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
106 axesProcessors.add(new AxisProcessor(processor, axisName));
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
107 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
108 catch (ClassNotFoundException cnfe) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
109 log.error(cnfe, cnfe);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
110 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
111 catch (InstantiationException ie) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
112 log.error(ie, ie);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
113 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
114 catch (IllegalAccessException ia) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
115 log.error(ia, ia);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
116 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
117 catch (ClassCastException cce) {
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
118 log.error(cce, cce);
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
119 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
120 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
121 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
122 }
f3cdc620b666 Added first version of diagram attribute parser.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
123 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org