annotate gwt-client/src/main/java/org/dive4elements/river/client/server/meta/Converter.java @ 5861:172338b1407f

GWT client: Added copyright header.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 14:30:15 +0200
parents 5aa05a7a34b7
children ea9eef426962
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.server.meta;
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import org.w3c.dom.Document;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 import org.w3c.dom.Element;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import org.w3c.dom.Node;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import org.w3c.dom.NodeList;
813
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
15 import org.w3c.dom.Attr;
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
16 import org.w3c.dom.NamedNodeMap;
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
17
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 892
diff changeset
18 import org.apache.log4j.Logger;
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
20 import org.dive4elements.river.client.shared.model.DataCageTree;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
21 import org.dive4elements.river.client.shared.model.DataCageNode;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
22 import org.dive4elements.river.client.shared.model.AttrList;
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 import java.util.ArrayList;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 import java.util.Map;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 import java.util.HashMap;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
28 import org.dive4elements.artifacts.common.utils.XMLUtils;
812
70b728a9f4e8 Meta data service: Create correct request document now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 522
diff changeset
29
3474
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
30 /**
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
31 * Converts document parts (meta-data xml) to datacagenodes/trees,
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
32 * which are shown in datacage widgets.
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
33 */
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 public class Converter
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 892
diff changeset
36 private static final Logger logger = Logger.getLogger(Converter.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 892
diff changeset
37
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 892
diff changeset
38
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 public interface NodeConverter
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 {
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 DataCageNode convert(Element node, Converter converter);
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 } // interface NodeConverter
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 public static class NameConverter implements NodeConverter {
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 public DataCageNode convert(Element node, Converter converter) {
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 821
diff changeset
47 //System.err.println("NameConverter called");
813
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
48 DataCageNode out = new DataCageNode(
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
49 node.getAttribute("name"),
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
50 toAttrList(node.getAttributes()));
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 converter.convertChildren(out, node);
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 return out;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 }
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 } // class NameConverter
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 public static class I18NConverter implements NodeConverter {
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 public DataCageNode convert(Element node, Converter converter) {
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 821
diff changeset
58 //System.err.println("I18NConverter called");
892
63b258bf365c Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 822
diff changeset
59
63b258bf365c Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 822
diff changeset
60 String name = node.getLocalName();
63b258bf365c Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 822
diff changeset
61 String desc = node.hasAttribute("description")
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 821
diff changeset
62 ? node.getAttribute("description")
892
63b258bf365c Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 822
diff changeset
63 : "${" + name + "}";
63b258bf365c Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 822
diff changeset
64
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 DataCageNode out =
892
63b258bf365c Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 822
diff changeset
66 new DataCageNode(name, desc, toAttrList(node.getAttributes()));
63b258bf365c Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 822
diff changeset
67
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68 converter.convertChildren(out, node);
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 return out;
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70 }
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71 } // I18NConverter
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72
3475
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
73 private static Map<String, NodeConverter> converters = new HashMap<String, NodeConverter>();
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1367
diff changeset
75 public static final NodeConverter NAME_CONVERTER = new NameConverter();
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1367
diff changeset
76 public static final NodeConverter I18N_CONVERTER = new I18NConverter();
812
70b728a9f4e8 Meta data service: Create correct request document now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 522
diff changeset
77
3474
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
78 static {
812
70b728a9f4e8 Meta data service: Create correct request document now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 522
diff changeset
79 converters.put("river", NAME_CONVERTER);
70b728a9f4e8 Meta data service: Create correct request document now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 522
diff changeset
80 converters.put("gauge", NAME_CONVERTER);
70b728a9f4e8 Meta data service: Create correct request document now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 522
diff changeset
81 converters.put("historical", NAME_CONVERTER);
70b728a9f4e8 Meta data service: Create correct request document now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 522
diff changeset
82 converters.put("column", NAME_CONVERTER);
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 }
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84
3475
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
85
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
86 /** Trivial constructor. */
3474
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
87 public Converter() {
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
88 }
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
89
3475
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
90
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91 public DataCageTree convert(Document document) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 892
diff changeset
92 logger.debug("convert called");
4352
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
93
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
94 if (logger.isDebugEnabled()) {
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
95 logger.debug(XMLUtils.toString(document));
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
96 }
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 ArrayList<DataCageNode> roots = new ArrayList<DataCageNode>();
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 NodeList nodes = document.getChildNodes();
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100 for (int i = 0, N = nodes.getLength(); i < N; ++i) {
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 Node node = nodes.item(i);
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 if (node.getNodeType() == Node.ELEMENT_NODE) {
4352
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
103 Element ele = (Element)node;
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
104 roots.add(convertElement(ele));
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 }
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106 }
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 return roots.isEmpty()
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 ? new DataCageTree()
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109 : new DataCageTree(roots.get(0));
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 }
813
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
111
3475
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
112 protected void convertChildren(DataCageNode parent, Element sub) {
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
113 //System.err.println("convertChildren called");
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
114 NodeList children = sub.getChildNodes();
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
115 for (int i = 0, N = children.getLength(); i < N; ++i) {
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
116 Node child = children.item(i);
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
117 if (child.getNodeType() == Node.ELEMENT_NODE) {
4352
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
118 Element childele = (Element)child;
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
119 parent.addChild(convertElement(childele));
3475
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
120
4352
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
121 if (childele.hasAttribute("description"))
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
122 logger.debug("nwd: " + childele.getAttribute("description"));
3475
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
123 }
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
124 } // for all children
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
125 }
9b29facddbd1 Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3474
diff changeset
126
4352
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
127 private DataCageNode convertElement(Element element) {
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
128 String name = element.getLocalName();
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
129
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
130 logger.debug("search for name: " + name);
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
131
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
132 NodeConverter converter = converters.get(name);
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
133 if (converter == null) {
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
134 converter = I18N_CONVERTER;
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
135 }
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
136 return converter.convert(element, this);
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
137
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
138 }
823c8afa1335 Refactor Converter to use common code
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3483
diff changeset
139
3483
b21840188264 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3475
diff changeset
140
3474
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
141 /**
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
142 * Creates key/value pairs from Nodes Attributes.
4b8b9b2ac873 Doc added, uses static map in converter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
143 */
813
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
144 public static AttrList toAttrList(NamedNodeMap nodeMap) {
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
145 if (nodeMap == null) {
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
146 return null;
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
147 }
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
148 int N = nodeMap.getLength();
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
149
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
150 if (N == 0) {
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
151 return null;
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
152 }
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
153
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
154 AttrList result = new AttrList(N);
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
155
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
156 for (int i = 0; i < N; ++i) {
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
157 Node node = nodeMap.item(i);
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
158 if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 821
diff changeset
159 Attr attr = (Attr)node;
813
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
160 String key = attr.getName();
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
161 String value = attr.getValue();
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
162 result.add(key, value);
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
163 }
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
164 }
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
165
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
166 return result;
57ea5af8a967 Meta data service converter: transfer attributes to client, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
167 }
286
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
168 }
0fa8bf8a2295 Datacage: Better converter for incoming XML tree
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
169 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org