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@80: package de.intevation.artifactdatabase.rest; ingo@80: ingo@80: import de.intevation.artifacts.ArtifactDatabase; ingo@80: import de.intevation.artifacts.ArtifactDatabaseException; ingo@80: ingo@80: import java.io.IOException; ingo@80: ingo@80: import org.apache.log4j.Logger; ingo@80: ingo@80: import org.restlet.data.MediaType; ingo@80: import org.restlet.data.Request; ingo@80: import org.restlet.data.Response; ingo@80: import org.restlet.data.Status; ingo@80: ingo@80: import org.restlet.ext.xml.DomRepresentation; ingo@80: ingo@80: import org.restlet.representation.EmptyRepresentation; ingo@80: import org.restlet.representation.Representation; ingo@80: ingo@80: import org.w3c.dom.Document; ingo@80: ingo@80: /** sascha@88: * Resource to import an XML document containg an artifact produced by sascha@88: * the ExportResource. sascha@88: * ingo@80: * @author Sascha L. Teichmann ingo@80: */ ingo@80: public class ImportResource ingo@80: extends BaseResource ingo@80: { ingo@80: private static Logger logger = Logger.getLogger(ImportResource.class); ingo@80: sascha@88: /** sascha@88: * server URL where to reach the resource. sascha@88: */ ingo@80: public static final String PATH = "/import"; ingo@80: sascha@89: @Override ingo@80: protected Representation innerPost(Representation requestRepr) { ingo@80: ingo@80: Document inputDocument = null; ingo@80: try { ingo@80: DomRepresentation input = new DomRepresentation(requestRepr); ingo@80: input.setNamespaceAware(true); ingo@80: inputDocument = input.getDocument(); ingo@80: } ingo@80: catch (IOException ioe) { ingo@80: logger.error(ioe.getMessage()); ingo@80: Response response = getResponse(); ingo@80: response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST, ioe); ingo@80: return new EmptyRepresentation(); ingo@80: } ingo@80: ingo@80: Request request = getRequest(); ingo@80: ingo@80: ArtifactDatabase db = (ArtifactDatabase)getContext() ingo@80: .getAttributes().get("database"); ingo@80: ingo@80: try { ingo@80: return new DomRepresentation( ingo@80: MediaType.APPLICATION_XML, ingo@80: db.importArtifact(inputDocument, getCallMeta())); ingo@80: } ingo@80: catch (ArtifactDatabaseException adbe) { ingo@80: logger.warn(adbe.getLocalizedMessage(), adbe); ingo@80: Response response = getResponse(); ingo@80: response.setStatus( ingo@80: Status.CLIENT_ERROR_NOT_FOUND, adbe.getMessage()); ingo@80: return new EmptyRepresentation(); ingo@80: } ingo@80: } ingo@80: } ingo@80: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :