Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/MetaDataServiceImpl.java Wed May 11 15:33:54 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/MetaDataServiceImpl.java Wed May 11 16:38:54 2011 +0000 @@ -23,6 +23,9 @@ import de.intevation.artifacts.httpclient.http.HttpClient; import de.intevation.artifacts.httpclient.http.HttpClientImpl; +import de.intevation.flys.client.shared.model.DataCageTree; +import de.intevation.flys.client.shared.model.DataCageNode; + public class MetaDataServiceImpl extends RemoteServiceServlet implements MetaDataService @@ -30,7 +33,7 @@ public static final String ERROR_NO_META_DATA_FOUND = "error_no_meta_data_found"; - public List getMetaData(String url, String locale, String river) + public DataCageTree getMetaData(String url, String locale, String river) throws ServerException { System.out.println("MetaDataService.getDistanceInfo"); @@ -51,9 +54,7 @@ HttpClient client = new HttpClientImpl(url, locale); try { - Document result = client.callService(url, "metadata", doc); - - return new ArrayList(); + return convert(client.callService(url, "metadata", doc)); } catch (ConnectionException ce) { System.err.println(ce.getLocalizedMessage()); @@ -61,5 +62,27 @@ throw new ServerException(ERROR_NO_META_DATA_FOUND); } + + protected static DataCageNode convert(Node node) { + String name = node.getLocalName(); + DataCageNode dvn = new DataCageNode(name); + NodeList children = node.getChildNodes(); + for (int i = 0, N = children.getLength(); i < N; ++i) { + dvn.addChild(convert(children.item(i))); + } + return dvn; + } + + protected static DataCageTree convert(Document document) { + ArrayList<DataCageNode> roots = new ArrayList<DataCageNode>(); + NodeList nodes = document.getChildNodes(); + for (int i = 0, N = nodes.getLength(); i < N; ++i) { + Node node = nodes.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE) { + roots.add(convert(nodes.item(i))); + } + } + return new DataCageTree(roots.get(0)); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :