Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/collections/AttributeParser.java @ 3191:ef0db530c341
Removed some expensive XPath usage.
flys-artifacts/trunk@4807 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 27 Jun 2012 09:16:28 +0000 |
parents | e57816cf41d5 |
children |
comparison
equal
deleted
inserted
replaced
3190:49fe2ed03c12 | 3191:ef0db530c341 |
---|---|
118 | 118 |
119 parseSettings(out, name); | 119 parseSettings(out, name); |
120 parseItems(out, name); | 120 parseItems(out, name); |
121 } | 121 } |
122 | 122 |
123 private static final Node getChild(Element element, String name) { | |
124 NodeList children = element.getChildNodes(); | |
125 for (int i = 0, N = children.getLength(); i < N; ++i) { | |
126 Node child = children.item(i); | |
127 if (child.getNodeType() == Node.ELEMENT_NODE | |
128 && child.getLocalName().equals(name)) { | |
129 return child; | |
130 } | |
131 } | |
132 return null; | |
133 } | |
134 | |
123 | 135 |
124 protected void parseSettings(Node out, String outname) { | 136 protected void parseSettings(Node out, String outname) { |
125 Node settingsNode = (Node) XMLUtils.xpath( | 137 Node settingsNode = getChild((Element)out, "settings"); |
126 out, "settings", | |
127 XPathConstants.NODE, | |
128 null); | |
129 | 138 |
130 if (settingsNode == null) { | 139 if (settingsNode == null) { |
131 logger.debug("No Settings found for Output '" + outname + "'"); | 140 logger.debug("No Settings found for Output '" + outname + "'"); |
132 return; | 141 return; |
133 } | 142 } |
136 attribute.setSettings(outname, settings); | 145 attribute.setSettings(outname, settings); |
137 } | 146 } |
138 | 147 |
139 | 148 |
140 protected void parseItems(Node out, String outname) { | 149 protected void parseItems(Node out, String outname) { |
141 NodeList themes = (NodeList) XMLUtils.xpath( | 150 String uri = ArtifactNamespaceContext.NAMESPACE_URI; |
142 out, "art:facet", | 151 Element element = (Element)out; |
143 XPathConstants.NODESET, | |
144 ArtifactNamespaceContext.INSTANCE); | |
145 | 152 |
146 int num = themes != null ? themes.getLength() : 0; | 153 NodeList themes = element.getElementsByTagNameNS(uri, "facet"); |
154 | |
155 int num = themes.getLength(); | |
147 | 156 |
148 logger.debug("Output has " + num + " themes."); | 157 logger.debug("Output has " + num + " themes."); |
149 | 158 |
150 String uri = ArtifactNamespaceContext.NAMESPACE_URI; | |
151 | |
152 for (int i = 0; i < num; i++) { | 159 for (int i = 0; i < num; i++) { |
153 Element theme = (Element) themes.item(i); | 160 Element theme = (Element) themes.item(i); |
154 | 161 if (theme.getParentNode() == out) { |
155 attribute.addFacet(outname, new ManagedDomFacet(theme)); | 162 attribute.addFacet(outname, new ManagedDomFacet(theme)); |
163 } | |
156 } | 164 } |
157 } | 165 } |
158 } | 166 } |
159 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 167 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |