Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/MetaDataServiceImpl.java @ 286:0fa8bf8a2295
Datacage: Better converter for incoming XML tree
flys-client/trunk@1916 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 13 May 2011 09:06:13 +0000 |
parents | f33af25b7490 |
children | 2e02db03e576 |
comparison
equal
deleted
inserted
replaced
285:3e99953bac8d | 286:0fa8bf8a2295 |
---|---|
23 import de.intevation.artifacts.httpclient.http.HttpClient; | 23 import de.intevation.artifacts.httpclient.http.HttpClient; |
24 import de.intevation.artifacts.httpclient.http.HttpClientImpl; | 24 import de.intevation.artifacts.httpclient.http.HttpClientImpl; |
25 | 25 |
26 import de.intevation.flys.client.shared.model.DataCageTree; | 26 import de.intevation.flys.client.shared.model.DataCageTree; |
27 import de.intevation.flys.client.shared.model.DataCageNode; | 27 import de.intevation.flys.client.shared.model.DataCageNode; |
28 | |
29 import de.intevation.flys.client.server.meta.Converter; | |
28 | 30 |
29 public class MetaDataServiceImpl | 31 public class MetaDataServiceImpl |
30 extends RemoteServiceServlet | 32 extends RemoteServiceServlet |
31 implements MetaDataService | 33 implements MetaDataService |
32 { | 34 { |
52 doc.appendChild(riverEl); | 54 doc.appendChild(riverEl); |
53 | 55 |
54 HttpClient client = new HttpClientImpl(url, locale); | 56 HttpClient client = new HttpClientImpl(url, locale); |
55 | 57 |
56 try { | 58 try { |
57 return convert(client.callService(url, "metadata", doc)); | 59 Converter converter = new Converter(); |
60 return converter.convert(client.callService(url, "metadata", doc)); | |
58 } | 61 } |
59 catch (ConnectionException ce) { | 62 catch (ConnectionException ce) { |
60 System.err.println(ce.getLocalizedMessage()); | 63 System.err.println(ce.getLocalizedMessage()); |
61 } | 64 } |
62 | 65 |
63 throw new ServerException(ERROR_NO_META_DATA_FOUND); | 66 throw new ServerException(ERROR_NO_META_DATA_FOUND); |
64 } | 67 } |
65 | |
66 protected static DataCageNode convert(Node node) { | |
67 String name = node.getLocalName(); | |
68 DataCageNode dvn = new DataCageNode(name); | |
69 NodeList children = node.getChildNodes(); | |
70 for (int i = 0, N = children.getLength(); i < N; ++i) { | |
71 dvn.addChild(convert(children.item(i))); | |
72 } | |
73 return dvn; | |
74 } | |
75 | |
76 protected static DataCageTree convert(Document document) { | |
77 ArrayList<DataCageNode> roots = new ArrayList<DataCageNode>(); | |
78 NodeList nodes = document.getChildNodes(); | |
79 for (int i = 0, N = nodes.getLength(); i < N; ++i) { | |
80 Node node = nodes.item(i); | |
81 if (node.getNodeType() == Node.ELEMENT_NODE) { | |
82 roots.add(convert(nodes.item(i))); | |
83 } | |
84 } | |
85 return new DataCageTree(roots.get(0)); | |
86 } | |
87 } | 68 } |
88 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 69 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |