Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/meta/Converter.java Mon Aug 08 14:49:14 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/meta/Converter.java Mon Aug 08 15:54:59 2011 +0000 @@ -4,9 +4,13 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import org.w3c.dom.Attr; +import org.w3c.dom.NamedNodeMap; + import de.intevation.flys.client.shared.model.DataCageTree; import de.intevation.flys.client.shared.model.DataCageNode; +import de.intevation.flys.client.shared.model.AttrList; import java.util.ArrayList; import java.util.Map; @@ -25,7 +29,9 @@ public static class NameConverter implements NodeConverter { public DataCageNode convert(Element node, Converter converter) { System.err.println("NameConverter called"); - DataCageNode out = new DataCageNode(node.getAttribute("name")); + DataCageNode out = new DataCageNode( + node.getAttribute("name"), + toAttrList(node.getAttributes())); converter.convertChildren(out, node); return out; } @@ -35,7 +41,9 @@ public DataCageNode convert(Element node, Converter converter) { System.err.println("I18NConverter called"); DataCageNode out = - new DataCageNode("${" + node.getLocalName() + "}"); + new DataCageNode( + "${" + node.getLocalName() + "}", + toAttrList(node.getAttributes())); converter.convertChildren(out, node); return out; } @@ -99,5 +107,30 @@ ? new DataCageTree() : new DataCageTree(roots.get(0)); } + + public static AttrList toAttrList(NamedNodeMap nodeMap) { + if (nodeMap == null) { + return null; + } + int N = nodeMap.getLength(); + + if (N == 0) { + return null; + } + + AttrList result = new AttrList(N); + + for (int i = 0; i < N; ++i) { + Node node = nodeMap.item(i); + if (node.getNodeType() == Node.ATTRIBUTE_NODE) { + Attr attr = (Attr)node; + String key = attr.getName(); + String value = attr.getValue(); + result.add(key, value); + } + } + + return result; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :