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 :

http://dive4elements.wald.intevation.org