Mercurial > dive4elements > river
diff flys-client/src/main/java/org/dive4elements/river/client/server/DoCollectionAction.java @ 5834:f507086aa94b
Repaired internal references.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 12:31:32 +0200 |
parents | flys-client/src/main/java/de/intevation/flys/client/server/DoCollectionAction.java@ab8eb2f544f2 |
children | 821a02bbfb4e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/org/dive4elements/river/client/server/DoCollectionAction.java Thu Apr 25 12:31:32 2013 +0200 @@ -0,0 +1,62 @@ +package de.intevation.flys.client.server; + +import org.w3c.dom.Document; + +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.artifacts.httpclient.exceptions.ConnectionException; +import de.intevation.artifacts.httpclient.http.HttpClient; +import de.intevation.artifacts.httpclient.http.HttpClientImpl; +import de.intevation.artifacts.httpclient.http.response.DocumentResponseHandler; + +import de.intevation.flys.client.shared.exceptions.ServerException; +import de.intevation.flys.client.shared.model.Collection; + + +/** + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class DoCollectionAction extends RemoteServiceServlet { + + private static final Logger logger = + Logger.getLogger(DoCollectionAction.class); + + + public static final String XPATH_RESULT = "/art:result/text()"; + public static final String OPERATION_FAILURE = "FAILED"; + public static final String FAILURE_EXCEPTION = "collection_action_failed"; + + + protected void doAction(Collection c, Document action, String url) + throws ServerException + { + logger.info("DoCollectionAction.doAction"); + + HttpClient client = new HttpClientImpl(url); + + try { + Document res = (Document) client.doCollectionAction( + action, c.identifier(), + new DocumentResponseHandler()); + + String result = XMLUtils.xpathString( + res, + XPATH_RESULT, + ArtifactNamespaceContext.INSTANCE); + + if (result == null || result.equals(OPERATION_FAILURE)) { + logger.error("Operation failed."); + throw new ServerException(FAILURE_EXCEPTION); + } + } + catch (ConnectionException ce) { + logger.error(ce, ce); + throw new ServerException(FAILURE_EXCEPTION); + } + } +}