comparison flys-client/src/main/java/de/intevation/flys/client/server/meta/Converter.java @ 813:57ea5af8a967

Meta data service converter: transfer attributes to client, too. flys-client/trunk@2469 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 08 Aug 2011 15:54:59 +0000
parents 70b728a9f4e8
children 56069d236afa
comparison
equal deleted inserted replaced
812:70b728a9f4e8 813:57ea5af8a967
2 2
3 import org.w3c.dom.Document; 3 import org.w3c.dom.Document;
4 import org.w3c.dom.Element; 4 import org.w3c.dom.Element;
5 import org.w3c.dom.Node; 5 import org.w3c.dom.Node;
6 import org.w3c.dom.NodeList; 6 import org.w3c.dom.NodeList;
7 import org.w3c.dom.Attr;
8 import org.w3c.dom.NamedNodeMap;
9
7 10
8 import de.intevation.flys.client.shared.model.DataCageTree; 11 import de.intevation.flys.client.shared.model.DataCageTree;
9 import de.intevation.flys.client.shared.model.DataCageNode; 12 import de.intevation.flys.client.shared.model.DataCageNode;
13 import de.intevation.flys.client.shared.model.AttrList;
10 14
11 import java.util.ArrayList; 15 import java.util.ArrayList;
12 import java.util.Map; 16 import java.util.Map;
13 import java.util.HashMap; 17 import java.util.HashMap;
14 18
23 } // interface NodeConverter 27 } // interface NodeConverter
24 28
25 public static class NameConverter implements NodeConverter { 29 public static class NameConverter implements NodeConverter {
26 public DataCageNode convert(Element node, Converter converter) { 30 public DataCageNode convert(Element node, Converter converter) {
27 System.err.println("NameConverter called"); 31 System.err.println("NameConverter called");
28 DataCageNode out = new DataCageNode(node.getAttribute("name")); 32 DataCageNode out = new DataCageNode(
33 node.getAttribute("name"),
34 toAttrList(node.getAttributes()));
29 converter.convertChildren(out, node); 35 converter.convertChildren(out, node);
30 return out; 36 return out;
31 } 37 }
32 } // class NameConverter 38 } // class NameConverter
33 39
34 public static class I18NConverter implements NodeConverter { 40 public static class I18NConverter implements NodeConverter {
35 public DataCageNode convert(Element node, Converter converter) { 41 public DataCageNode convert(Element node, Converter converter) {
36 System.err.println("I18NConverter called"); 42 System.err.println("I18NConverter called");
37 DataCageNode out = 43 DataCageNode out =
38 new DataCageNode("${" + node.getLocalName() + "}"); 44 new DataCageNode(
45 "${" + node.getLocalName() + "}",
46 toAttrList(node.getAttributes()));
39 converter.convertChildren(out, node); 47 converter.convertChildren(out, node);
40 return out; 48 return out;
41 } 49 }
42 } // I18NConverter 50 } // I18NConverter
43 51
97 } 105 }
98 return roots.isEmpty() 106 return roots.isEmpty()
99 ? new DataCageTree() 107 ? new DataCageTree()
100 : new DataCageTree(roots.get(0)); 108 : new DataCageTree(roots.get(0));
101 } 109 }
110
111 public static AttrList toAttrList(NamedNodeMap nodeMap) {
112 if (nodeMap == null) {
113 return null;
114 }
115 int N = nodeMap.getLength();
116
117 if (N == 0) {
118 return null;
119 }
120
121 AttrList result = new AttrList(N);
122
123 for (int i = 0; i < N; ++i) {
124 Node node = nodeMap.item(i);
125 if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
126 Attr attr = (Attr)node;
127 String key = attr.getName();
128 String value = attr.getValue();
129 result.add(key, value);
130 }
131 }
132
133 return result;
134 }
102 } 135 }
103 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 136 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org