ingo@141: /* ingo@141: * Copyright (c) 2011 by Intevation GmbH ingo@141: * ingo@141: * This program is free software under the LGPL (>=v2.1) ingo@141: * Read the file LGPL.txt coming with the software for details ingo@141: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@141: */ ingo@141: package de.intevation.artifactdatabase.rest; ingo@141: ingo@141: import de.intevation.artifacts.ArtifactDatabase; ingo@141: import de.intevation.artifacts.ArtifactDatabaseException; ingo@141: ingo@141: import org.apache.log4j.Logger; ingo@141: ingo@141: import org.restlet.data.MediaType; ingo@141: import org.restlet.data.Status; ingo@141: import org.restlet.ext.xml.DomRepresentation; ingo@141: import org.restlet.representation.EmptyRepresentation; ingo@141: import org.restlet.representation.Representation; ingo@141: import org.restlet.Request; ingo@141: import org.restlet.resource.ResourceException; ingo@141: import org.restlet.Response; ingo@141: ingo@141: ingo@141: /** ingo@141: * A Rest resource that lists the collections of a specific user provided by ingo@141: * the artifact database. ingo@141: * ingo@141: * @author Ingo Weinzierl ingo@141: */ ingo@141: public class ListCollectionsResource ingo@141: extends BaseResource ingo@141: { ingo@141: /** The logger that is used in this class.*/ ingo@141: private static Logger logger = ingo@141: Logger.getLogger(ListCollectionsResource.class); ingo@141: ingo@141: /** server URL where to reach the resource.*/ ingo@141: public static final String PATH = "/list-collections/{ownerid}"; ingo@141: ingo@141: ingo@141: @Override ingo@141: protected Representation innerGet() ingo@141: throws ResourceException ingo@141: { ingo@141: Request request = getRequest(); ingo@141: ingo@141: String ownerId = (String) request.getAttributes().get("ownerid"); ingo@141: ingo@141: ArtifactDatabase db = getArtifactDatabase(); ingo@141: ingo@141: try { ingo@141: logger.info("List collections owned by " + ownerId); ingo@141: ingo@141: return new DomRepresentation( ingo@141: MediaType.APPLICATION_XML, ingo@141: db.listCollections(ownerId, getCallMeta())); ingo@141: } ingo@141: catch (ArtifactDatabaseException adbe) { ingo@141: logger.warn(adbe.getLocalizedMessage(), adbe); ingo@141: ingo@141: Response response = getResponse(); ingo@141: response.setStatus( ingo@141: Status.CLIENT_ERROR_NOT_FOUND, adbe.getMessage()); ingo@141: return new EmptyRepresentation(); ingo@141: } ingo@141: } ingo@141: } ingo@141: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :