ingo@100: /* ingo@100: * Copyright (c) 2010 by Intevation GmbH ingo@100: * ingo@100: * This program is free software under the LGPL (>=v2.1) ingo@100: * Read the file LGPL.txt coming with the software for details ingo@100: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@100: */ ingo@100: ingo@79: package de.intevation.artifactdatabase.rest; ingo@79: ingo@79: import de.intevation.artifacts.ArtifactDatabase; ingo@79: import de.intevation.artifacts.ArtifactDatabaseException; ingo@79: ingo@79: import org.apache.log4j.Logger; ingo@79: ingo@101: import org.restlet.Request; ingo@101: import org.restlet.Response; ingo@101: ingo@79: import org.restlet.data.MediaType; ingo@79: import org.restlet.data.Status; ingo@79: ingo@79: import org.restlet.ext.xml.DomRepresentation; ingo@79: ingo@79: import org.restlet.representation.EmptyRepresentation; ingo@79: import org.restlet.representation.Representation; ingo@79: ingo@79: import org.restlet.resource.ResourceException; ingo@79: ingo@79: /** sascha@88: * Resource to produce an external XML representation of a given sascha@88: * artifact to be import by ImportResource later on. sascha@88: * ingo@79: * @author Sascha L. Teichmann ingo@79: */ ingo@79: public class ExportResource ingo@79: extends BaseResource ingo@79: { ingo@79: private static Logger logger = Logger.getLogger(ExportResource.class); ingo@79: sascha@88: /** sascha@88: * server URL where to reach the resource. sascha@88: */ ingo@79: public static final String PATH = "/export/{uuid}"; ingo@79: sascha@89: @Override ingo@79: protected Representation innerGet() ingo@79: throws ResourceException ingo@79: { ingo@79: Request request = getRequest(); ingo@79: ingo@79: String identifier = (String)request.getAttributes().get("uuid"); ingo@79: ingo@79: if (logger.isDebugEnabled()) { ingo@79: logger.debug("looking for artifact id '" + identifier + "'"); ingo@79: } ingo@79: ingo@79: ArtifactDatabase db = (ArtifactDatabase)getContext() ingo@79: .getAttributes().get("database"); ingo@79: ingo@79: try { ingo@79: return new DomRepresentation( ingo@79: MediaType.APPLICATION_XML, ingo@79: db.exportArtifact(identifier, getCallMeta())); ingo@79: } ingo@79: catch (ArtifactDatabaseException adbe) { ingo@79: logger.warn(adbe.getLocalizedMessage(), adbe); ingo@79: Response response = getResponse(); ingo@79: response.setStatus( ingo@79: Status.CLIENT_ERROR_NOT_FOUND, adbe.getMessage()); ingo@79: return new EmptyRepresentation(); ingo@79: } ingo@79: } ingo@79: } ingo@79: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :