view flys-client/src/main/java/de/intevation/flys/client/server/MetaDataServiceImpl.java @ 1259:54365104835c 2.5

merged flys-backend/2.5
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:18 +0200
parents a1a5dc2b9e34
children ab8eb2f544f2
line wrap: on
line source
package de.intevation.flys.client.server;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

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;

public class MetaDataServiceImpl
extends      RemoteServiceServlet
implements   MetaDataService
{
    public static final String ERROR_NO_META_DATA_FOUND =
        "error_no_meta_data_found";

    @Override
    public DataCageTree getMetaData(
        String url,
        String locale,
        String artifactId,
        String userId,
        String outs,
        String parameters
    ) throws ServerException
    {
        System.out.println("MetaDataService.getMetaData");

        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);

        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 :

http://dive4elements.wald.intevation.org