Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/MetaDataServiceImpl.java @ 5592:e4a59c795ff6
merged.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Mon, 08 Apr 2013 14:54:32 +0200 |
parents | 2dac0e5b927e |
children |
line wrap: on
line source
package de.intevation.flys.client.server; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.apache.log4j.Logger; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import de.intevation.artifacts.common.ArtifactNamespaceContext; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.flys.client.shared.exceptions.ServerException; import de.intevation.flys.client.client.services.MetaDataService; import de.intevation.artifacts.httpclient.exceptions.ConnectionException; 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.server.meta.Converter; /** * Service that returns certain meta-data from the backends data, polished to * inclusion into current project. */ public class MetaDataServiceImpl extends RemoteServiceServlet implements MetaDataService { /** Our very own logger. */ private static final Logger logger = Logger.getLogger(MetaDataServiceImpl.class); public static final String ERROR_NO_META_DATA_FOUND = "error_no_meta_data_found"; /** * @param locale needed for i18n. * @param artifactId ID of masterartifact (can be null) * @param userId can be null * @param outs can be null * @param parameters can be null or parameters like "load-system:true;key:value" */ @Override public DataCageTree getMetaData( String locale, String artifactId, String userId, String outs, String parameters ) throws ServerException { logger.info("MetaDataService.getMetaData"); // Create the query document. String url = getServletContext().getInitParameter("server-url"); Document doc = XMLUtils.newDocument(); XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( doc, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); Element meta = ec.create("meta"); if (artifactId != null) { Element artifactEl = ec.create("artifact-id"); artifactEl.setAttribute("value", artifactId); meta.appendChild(artifactEl); } if (userId != null) { Element userEl = ec.create("user-id"); userEl.setAttribute("value", userId); meta.appendChild(userEl); } if (outs != null) { Element outsEl = ec.create("outs"); outsEl.setAttribute("value", outs); meta.appendChild(outsEl); } if (parameters != null) { Element paramsEl = ec.create("parameters"); paramsEl.setAttribute("value", parameters); meta.appendChild(paramsEl); } doc.appendChild(meta); // Fire. HttpClient client = new HttpClientImpl(url, locale); try { Converter converter = new Converter(); return converter.convert(client.callService(url, "metadata", doc)); } catch (ConnectionException ce) { ce.printStackTrace(); } throw new ServerException(ERROR_NO_META_DATA_FOUND); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :