package org.gcube.gcat.rest; import javax.ws.rs.DELETE; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; //import javax.ws.rs.NotAuthorizedException; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.xml.ws.WebServiceException; //import org.gcube.common.authorization.control.annotations.AuthorizationControl; import org.gcube.gcat.annotation.PURGE; import org.gcube.gcat.api.GCatConstants; //import org.gcube.gcat.api.roles.Role; import org.gcube.gcat.persistence.ckan.CKANPackageTrash; import com.webcohesion.enunciate.metadata.rs.ResourceGroup; import com.webcohesion.enunciate.metadata.rs.ResourceLabel; /** * @author Luca Frosini (ISTI - CNR) */ @Path(Trash.TRASH) @ResourceGroup("Item Related APIs") @ResourceLabel("Trash APIs") public class Trash extends BaseREST implements org.gcube.gcat.api.interfaces.Trash { @GET @Produces(GCatConstants.APPLICATION_JSON_CHARSET_UTF_8) @Override // @AuthorizationControl(allowedRoles={Role.CATALOGUE_EDITOR, Role.CATALOGUE_ADMIN, Role.CATALOGUE_MANAGER}, exception=NotAuthorizedException.class) public String list(@QueryParam(GCatConstants.OWN_ONLY_QUERY_PARAMETER) @DefaultValue("true") Boolean ownOnly) throws WebServiceException { CKANPackageTrash ckanPackageTrash = new CKANPackageTrash(); ckanPackageTrash.setOwnOnly(ownOnly); return ckanPackageTrash.list(); } @DELETE @Override // @AuthorizationControl(allowedRoles={Role.CATALOGUE_EDITOR, Role.CATALOGUE_ADMIN, Role.CATALOGUE_MANAGER}, exception=NotAuthorizedException.class) public Response empty(@QueryParam(GCatConstants.OWN_ONLY_QUERY_PARAMETER) @DefaultValue("true") Boolean ownOnly) throws WebServiceException { Thread thread = new Thread(new Runnable() { @Override public void run() { CKANPackageTrash ckanPackageTrash = new CKANPackageTrash(); ckanPackageTrash.setOwnOnly(ownOnly); ckanPackageTrash.empty(); } }); thread.start(); return Response.status(Status.ACCEPTED).build(); } @PURGE // @AuthorizationControl(allowedRoles={Role.CATALOGUE_EDITOR, Role.CATALOGUE_ADMIN, Role.CATALOGUE_MANAGER}, exception=NotAuthorizedException.class) public Response emptyViaPurge(@QueryParam(GCatConstants.OWN_ONLY_QUERY_PARAMETER) @DefaultValue("true") Boolean ownOnly) throws WebServiceException { return empty(ownOnly); } }