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 :

http://dive4elements.wald.intevation.org