comparison flys-client/src/main/java/de/intevation/flys/client/server/meta/Converter.java @ 4352:823c8afa1335

Refactor Converter to use common code
author Björn Ricks <bjoern.ricks@intevation.de>
date Thu, 01 Nov 2012 14:49:43 +0100
parents b21840188264
children
comparison
equal deleted inserted replaced
4351:cb1655e87ce6 4352:823c8afa1335
80 } 80 }
81 81
82 82
83 public DataCageTree convert(Document document) { 83 public DataCageTree convert(Document document) {
84 logger.debug("convert called"); 84 logger.debug("convert called");
85 //System.err.println(XMLUtils.toString(document)); 85
86 if (logger.isDebugEnabled()) {
87 logger.debug(XMLUtils.toString(document));
88 }
86 89
87 ArrayList<DataCageNode> roots = new ArrayList<DataCageNode>(); 90 ArrayList<DataCageNode> roots = new ArrayList<DataCageNode>();
88 NodeList nodes = document.getChildNodes(); 91 NodeList nodes = document.getChildNodes();
89 for (int i = 0, N = nodes.getLength(); i < N; ++i) { 92 for (int i = 0, N = nodes.getLength(); i < N; ++i) {
90 Node node = nodes.item(i); 93 Node node = nodes.item(i);
91 if (node.getNodeType() == Node.ELEMENT_NODE) { 94 if (node.getNodeType() == Node.ELEMENT_NODE) {
92 logger.debug("search for name: " + node.getLocalName()); 95 Element ele = (Element)node;
93 NodeConverter converter = converters.get(node.getLocalName()); 96 roots.add(convertElement(ele));
94 if (converter == null) {
95 converter = I18N_CONVERTER;
96 }
97 roots.add(converter.convert((Element)node, this));
98 } 97 }
99 } 98 }
100 return roots.isEmpty() 99 return roots.isEmpty()
101 ? new DataCageTree() 100 ? new DataCageTree()
102 : new DataCageTree(roots.get(0)); 101 : new DataCageTree(roots.get(0));
106 //System.err.println("convertChildren called"); 105 //System.err.println("convertChildren called");
107 NodeList children = sub.getChildNodes(); 106 NodeList children = sub.getChildNodes();
108 for (int i = 0, N = children.getLength(); i < N; ++i) { 107 for (int i = 0, N = children.getLength(); i < N; ++i) {
109 Node child = children.item(i); 108 Node child = children.item(i);
110 if (child.getNodeType() == Node.ELEMENT_NODE) { 109 if (child.getNodeType() == Node.ELEMENT_NODE) {
111 String name = child.getLocalName(); 110 Element childele = (Element)child;
112 NodeConverter converter = converters.get(name); 111 parent.addChild(convertElement(childele));
113 if (converter == null) {
114 converter = I18N_CONVERTER;
115 }
116 DataCageNode son = converter.convert(
117 (Element)child, this);
118 parent.addChild(son);
119 112
120 if (((Element)child).hasAttribute("description")) 113 if (childele.hasAttribute("description"))
121 logger.debug("nwd: " + ((Element)child).getAttribute("description")); 114 logger.debug("nwd: " + childele.getAttribute("description"));
122 } 115 }
123 } // for all children 116 } // for all children
117 }
118
119 private DataCageNode convertElement(Element element) {
120 String name = element.getLocalName();
121
122 logger.debug("search for name: " + name);
123
124 NodeConverter converter = converters.get(name);
125 if (converter == null) {
126 converter = I18N_CONVERTER;
127 }
128 return converter.convert(element, this);
129
124 } 130 }
125 131
126 132
127 /** 133 /**
128 * Creates key/value pairs from Nodes Attributes. 134 * Creates key/value pairs from Nodes Attributes.

http://dive4elements.wald.intevation.org