ProfiledDocument REST methods
This commit is contained in:
parent
b0e5d098c0
commit
2cdfcd2870
|
@ -7,6 +7,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.bson.Document;
|
||||||
import org.gcube.application.geoportal.common.faults.InvalidRequestException;
|
import org.gcube.application.geoportal.common.faults.InvalidRequestException;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
import org.gcube.application.geoportal.common.rest.TempFile;
|
import org.gcube.application.geoportal.common.rest.TempFile;
|
||||||
|
@ -19,7 +20,7 @@ public class AddSectionToConcessioneRequest {
|
||||||
|
|
||||||
private String destinationPath;
|
private String destinationPath;
|
||||||
private List<TempFile> streams;
|
private List<TempFile> streams;
|
||||||
|
private Document attributes;
|
||||||
|
|
||||||
public void validate()throws InvalidRequestException {
|
public void validate()throws InvalidRequestException {
|
||||||
Concessione.Paths.validate(destinationPath);
|
Concessione.Paths.validate(destinationPath);
|
||||||
|
|
|
@ -26,6 +26,7 @@ public class InterfaceConstants {
|
||||||
public static final String SEARCH_PATH="search";
|
public static final String SEARCH_PATH="search";
|
||||||
public static final String QUERY_PATH="query";
|
public static final String QUERY_PATH="query";
|
||||||
|
|
||||||
|
public static final String STEP="step";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class Parameters{
|
public static final class Parameters{
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package org.gcube.application.geoportal.common.rest;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.bson.Document;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
@XmlRootElement
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class StepExecutionRequest {
|
||||||
|
|
||||||
|
private String stepID;
|
||||||
|
private Document options;
|
||||||
|
}
|
|
@ -40,4 +40,5 @@ public interface MongoManagerI<T> {
|
||||||
public T performStep(String id, String step, Document options) throws IOException, StepException;
|
public T performStep(String id, String step, Document options) throws IOException, StepException;
|
||||||
|
|
||||||
public T registerFileSet(String id, String destination, Document attributes, List<TempFile> files) throws ConfigurationException, StorageHubException, StorageException, StepException, JsonProcessingException;
|
public T registerFileSet(String id, String destination, Document attributes, List<TempFile> files) throws ConfigurationException, StorageHubException, StorageException, StepException, JsonProcessingException;
|
||||||
|
public T deleteFileSet(String id, String destination, Boolean force) throws ConfigurationException, StorageHubException, StorageException, StepException, JsonProcessingException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ import static org.gcube.application.cms.Serialization.*;
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ProfiledMongoManager extends MongoManager implements MongoManagerI<ProfiledDocument>{
|
public class ProfiledMongoManager extends MongoManager implements MongoManagerI<ProfiledDocument>{
|
||||||
|
|
||||||
|
@Getter
|
||||||
Profile profile;
|
Profile profile;
|
||||||
MongoDatabase db=null;
|
MongoDatabase db=null;
|
||||||
|
|
||||||
|
@ -292,8 +292,10 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
return convert(replace(asDocument(doc),getCollectionName()),ProfiledDocument.class);
|
return convert(replace(asDocument(doc),getCollectionName()),ProfiledDocument.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProfiledDocument deleteFileSet(String id, String destination, Boolean force) throws ConfigurationException, StorageHubException, StorageException, StepException, JsonProcessingException {
|
||||||
|
throw new RuntimeException("Implement this");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// @Override
|
// @Override
|
||||||
|
|
|
@ -3,9 +3,13 @@ package org.gcube.application.geoportal.service.rest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.geoportal.common.model.document.ProfiledDocument;
|
import org.gcube.application.geoportal.common.model.document.ProfiledDocument;
|
||||||
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
|
import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
|
import org.gcube.application.geoportal.common.rest.StepExecutionRequest;
|
||||||
|
import org.gcube.application.geoportal.service.engine.mongo.ConcessioniMongoManager;
|
||||||
import org.gcube.application.geoportal.service.engine.mongo.ProfiledMongoManager;
|
import org.gcube.application.geoportal.service.engine.mongo.ProfiledMongoManager;
|
||||||
import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException;
|
import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException;
|
||||||
import org.gcube.application.cms.Serialization;
|
import org.gcube.application.cms.Serialization;
|
||||||
|
@ -20,7 +24,7 @@ public class ProfiledDocuments {
|
||||||
private ProfiledMongoManager manager;
|
private ProfiledMongoManager manager;
|
||||||
|
|
||||||
public ProfiledDocuments(@PathParam(InterfaceConstants.Parameters.PROFILE_ID) String profileID) throws ConfigurationException {
|
public ProfiledDocuments(@PathParam(InterfaceConstants.Parameters.PROFILE_ID) String profileID) throws ConfigurationException {
|
||||||
log.debug("Accessing profiles "+profileID);
|
log.info("Accessing profiles "+profileID);
|
||||||
manager=new GuardedMethod<ProfiledMongoManager>(){
|
manager=new GuardedMethod<ProfiledMongoManager>(){
|
||||||
@Override
|
@Override
|
||||||
protected ProfiledMongoManager run() throws Exception {
|
protected ProfiledMongoManager run() throws Exception {
|
||||||
|
@ -51,7 +55,101 @@ public class ProfiledDocuments {
|
||||||
return new GuardedMethod<ProfiledDocument>() {
|
return new GuardedMethod<ProfiledDocument>() {
|
||||||
@Override
|
@Override
|
||||||
protected ProfiledDocument run() throws Exception, WebApplicationException {
|
protected ProfiledDocument run() throws Exception, WebApplicationException {
|
||||||
return manager.registerNew(d);
|
log.info("Creating new ProfiledDocument ({})",manager.getProfile().getId());
|
||||||
|
ProfiledDocument toReturn= manager.registerNew(d);
|
||||||
|
log.info("Created new ProfiledDocument ({}, ID {})",manager.getProfile().getId(),toReturn.get_id());
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
|
}.execute().getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PUT
|
||||||
|
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public ProfiledDocument update(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String documentId, Document d) {
|
||||||
|
return new GuardedMethod<ProfiledDocument>() {
|
||||||
|
@Override
|
||||||
|
protected ProfiledDocument run() throws Exception, WebApplicationException {
|
||||||
|
log.info("Updating ProfiledDocument ({}, ID {})",manager.getProfile().getId(),documentId);
|
||||||
|
return manager.update(documentId,d);
|
||||||
|
}
|
||||||
|
}.execute().getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
||||||
|
public Boolean delete(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
|
@DefaultValue("false")
|
||||||
|
@QueryParam(InterfaceConstants.Parameters.FORCE) Boolean force) {
|
||||||
|
return new GuardedMethod<Boolean>() {
|
||||||
|
@Override
|
||||||
|
protected Boolean run() throws Exception, WebApplicationException {
|
||||||
|
log.info("Deleting ProfiledDocument ({}, ID {}). Force is {}",manager.getProfile().getId(),id,force);
|
||||||
|
manager.delete(id,force);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}.execute().getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Path("/"+InterfaceConstants.Methods.REGISTER_FILES_PATH+"/{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
||||||
|
public ProfiledDocument registerFileSet(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
|
AddSectionToConcessioneRequest request) {
|
||||||
|
return new GuardedMethod<ProfiledDocument>() {
|
||||||
|
@Override
|
||||||
|
protected ProfiledDocument run() throws Exception, WebApplicationException {
|
||||||
|
log.info("Registering {} file(s) for ProfiledDocument ({}, ID {}) at path {}",
|
||||||
|
request.getStreams().size(),
|
||||||
|
manager.getProfile().getId(),
|
||||||
|
id,request.getDestinationPath());
|
||||||
|
request.validate();
|
||||||
|
return manager.registerFileSet(id,request.getDestinationPath(),request.getAttributes(),request.getStreams());
|
||||||
|
}
|
||||||
|
}.execute().getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Path("/"+InterfaceConstants.Methods.DELETE_FILES_PATH+"/{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
||||||
|
public ProfiledDocument deleteFileSet(
|
||||||
|
@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
|
@DefaultValue("false")
|
||||||
|
@QueryParam(InterfaceConstants.Parameters.FORCE) Boolean force,
|
||||||
|
String path) {
|
||||||
|
return new GuardedMethod<ProfiledDocument>() {
|
||||||
|
@Override
|
||||||
|
protected ProfiledDocument run() throws Exception, WebApplicationException {
|
||||||
|
log.info("Deleting FileSet of ProfiledDocument ({}, ID {}) at path {}. Force is {}",
|
||||||
|
manager.getProfile().getId(),
|
||||||
|
id,path,force);
|
||||||
|
return manager.deleteFileSet(id,path,force);
|
||||||
|
}
|
||||||
|
}.execute().getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Path("/"+InterfaceConstants.Methods.STEP+"/{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
||||||
|
public ProfiledDocument performStep(
|
||||||
|
@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
|
StepExecutionRequest request) {
|
||||||
|
return new GuardedMethod<ProfiledDocument>() {
|
||||||
|
@Override
|
||||||
|
protected ProfiledDocument run() throws Exception, WebApplicationException {
|
||||||
|
log.info("Executing step {} on ProfiledDocument ({},ID,{}) with options {}",
|
||||||
|
request.getStepID(),
|
||||||
|
manager.getProfile().getId(),
|
||||||
|
id,request.getOptions());
|
||||||
|
return manager.performStep(id,request.getStepID(),request.getOptions());
|
||||||
}
|
}
|
||||||
}.execute().getResult();
|
}.execute().getResult();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue