Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/MetaDataServiceImpl.java @ 278:f33af25b7490
Datacage: transport rpc result to ui.
flys-client/trunk@1905 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 11 May 2011 16:38:54 +0000 |
parents | f4c8ce11df33 |
children | 0fa8bf8a2295 |
comparison
equal
deleted
inserted
replaced
277:50b88b641be6 | 278:f33af25b7490 |
---|---|
21 import de.intevation.artifacts.httpclient.exceptions.ConnectionException; | 21 import de.intevation.artifacts.httpclient.exceptions.ConnectionException; |
22 | 22 |
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; | |
27 import de.intevation.flys.client.shared.model.DataCageNode; | |
28 | |
26 public class MetaDataServiceImpl | 29 public class MetaDataServiceImpl |
27 extends RemoteServiceServlet | 30 extends RemoteServiceServlet |
28 implements MetaDataService | 31 implements MetaDataService |
29 { | 32 { |
30 public static final String ERROR_NO_META_DATA_FOUND = | 33 public static final String ERROR_NO_META_DATA_FOUND = |
31 "error_no_meta_data_found"; | 34 "error_no_meta_data_found"; |
32 | 35 |
33 public List getMetaData(String url, String locale, String river) | 36 public DataCageTree getMetaData(String url, String locale, String river) |
34 throws ServerException | 37 throws ServerException |
35 { | 38 { |
36 System.out.println("MetaDataService.getDistanceInfo"); | 39 System.out.println("MetaDataService.getDistanceInfo"); |
37 | 40 |
38 Document doc = XMLUtils.newDocument(); | 41 Document doc = XMLUtils.newDocument(); |
49 doc.appendChild(riverEl); | 52 doc.appendChild(riverEl); |
50 | 53 |
51 HttpClient client = new HttpClientImpl(url, locale); | 54 HttpClient client = new HttpClientImpl(url, locale); |
52 | 55 |
53 try { | 56 try { |
54 Document result = client.callService(url, "metadata", doc); | 57 return convert(client.callService(url, "metadata", doc)); |
55 | |
56 return new ArrayList(); | |
57 } | 58 } |
58 catch (ConnectionException ce) { | 59 catch (ConnectionException ce) { |
59 System.err.println(ce.getLocalizedMessage()); | 60 System.err.println(ce.getLocalizedMessage()); |
60 } | 61 } |
61 | 62 |
62 throw new ServerException(ERROR_NO_META_DATA_FOUND); | 63 throw new ServerException(ERROR_NO_META_DATA_FOUND); |
63 } | 64 } |
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 } | |
64 } | 87 } |
65 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 88 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |