Integrated EventManager and notifies
This commit is contained in:
parent
a39f8cc8d6
commit
6a4babd6ea
|
@ -15,10 +15,15 @@ import javax.ws.rs.core.MediaType;
|
||||||
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.cms.implementations.ImplementationProvider;
|
import org.gcube.application.cms.implementations.ImplementationProvider;
|
||||||
|
import org.gcube.application.cms.implementations.utils.UserUtils;
|
||||||
|
import org.gcube.application.cms.plugins.events.EventManager;
|
||||||
|
import org.gcube.application.cms.plugins.events.EventManager.Event;
|
||||||
|
import org.gcube.application.cms.plugins.events.ItemObserved;
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.document.access.Access;
|
import org.gcube.application.geoportal.common.model.document.access.Access;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.accounting.AccountingInfo;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
|
@ -38,8 +43,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
* The Class ProfiledDocuments.
|
* The Class ProfiledDocuments.
|
||||||
*
|
*
|
||||||
* @author created by Fabio Sinibaldi
|
* @author created by Fabio Sinibaldi
|
||||||
* @author new manager/developer and mantainer - Francesco Mangiacrapa at ISTI-CNR
|
* @author new manager/developer and mantainer - Francesco Mangiacrapa at
|
||||||
* francesco.mangiacrapa@isti.cnr.it
|
* ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
*
|
*
|
||||||
* Apr 18, 2023
|
* Apr 18, 2023
|
||||||
*/
|
*/
|
||||||
|
@ -51,6 +56,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
public class ProfiledDocuments {
|
public class ProfiledDocuments {
|
||||||
|
|
||||||
private ProfiledMongoManager manager;
|
private ProfiledMongoManager manager;
|
||||||
|
private EventManager eventManager = EventManager.getInstance(); // as singleton
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new profiled documents.
|
* Instantiates a new profiled documents.
|
||||||
|
@ -99,7 +105,7 @@ public class ProfiledDocuments {
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public Project createNew(Document d) {
|
public Project createNew(Document d) {
|
||||||
return new GuardedMethod<Project>() {
|
Project theNewProject = new GuardedMethod<Project>() {
|
||||||
@Override
|
@Override
|
||||||
protected Project run() throws Exception, WebApplicationException {
|
protected Project run() throws Exception, WebApplicationException {
|
||||||
log.info("Creating new Project ({})", manager.getUseCaseDescriptor().getId());
|
log.info("Creating new Project ({})", manager.getUseCaseDescriptor().getId());
|
||||||
|
@ -108,6 +114,18 @@ public class ProfiledDocuments {
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
}.execute().getResult();
|
}.execute().getResult();
|
||||||
|
|
||||||
|
// notifying the Event.PROJECT_CREATED;
|
||||||
|
ItemObserved<Project> item = new ItemObserved<Project>();
|
||||||
|
EventManager.Event event = Event.PROJECT_CREATED;
|
||||||
|
AccountingInfo user = UserUtils.getCurrent().asInfo();
|
||||||
|
item.setCaller(user.getUser());
|
||||||
|
item.setContext(user.getContext());
|
||||||
|
item.setEvent(event);
|
||||||
|
item.setProject(theNewProject);
|
||||||
|
eventManager.notify(event, item);
|
||||||
|
|
||||||
|
return theNewProject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -122,13 +140,24 @@ public class ProfiledDocuments {
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public Project update(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String documentId, Document d) {
|
public Project update(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String documentId, Document d) {
|
||||||
return new GuardedMethod<Project>() {
|
Project theUpdatedProject = new GuardedMethod<Project>() {
|
||||||
@Override
|
@Override
|
||||||
protected Project run() throws Exception, WebApplicationException {
|
protected Project run() throws Exception, WebApplicationException {
|
||||||
log.info("Updating Project ({}, ID {})", manager.getUseCaseDescriptor().getId(), documentId);
|
log.info("Updating Project ({}, ID {})", manager.getUseCaseDescriptor().getId(), documentId);
|
||||||
return manager.update(documentId, d);
|
return manager.update(documentId, d);
|
||||||
}
|
}
|
||||||
}.execute().getResult();
|
}.execute().getResult();
|
||||||
|
|
||||||
|
ItemObserved<Project> item = new ItemObserved<Project>();
|
||||||
|
EventManager.Event event = Event.PROJECT_UPDATED;
|
||||||
|
AccountingInfo user = UserUtils.getCurrent().asInfo();
|
||||||
|
item.setCaller(user.getUser());
|
||||||
|
item.setContext(user.getContext());
|
||||||
|
item.setEvent(event);
|
||||||
|
item.setProject(theUpdatedProject);
|
||||||
|
eventManager.notify(event, item);
|
||||||
|
|
||||||
|
return theUpdatedProject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,7 +194,7 @@ public class ProfiledDocuments {
|
||||||
@Path("{" + InterfaceConstants.Parameters.PROJECT_ID + "}")
|
@Path("{" + InterfaceConstants.Parameters.PROJECT_ID + "}")
|
||||||
public Boolean delete(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
public Boolean delete(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
@DefaultValue("false") @QueryParam(InterfaceConstants.Parameters.FORCE) Boolean force) {
|
@DefaultValue("false") @QueryParam(InterfaceConstants.Parameters.FORCE) Boolean force) {
|
||||||
return new GuardedMethod<Boolean>() {
|
Boolean deleted = new GuardedMethod<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
protected Boolean run() throws Exception, WebApplicationException {
|
protected Boolean run() throws Exception, WebApplicationException {
|
||||||
log.info("Deleting Project ({}, ID {}). Force is {}", manager.getUseCaseDescriptor().getId(), id,
|
log.info("Deleting Project ({}, ID {}). Force is {}", manager.getUseCaseDescriptor().getId(), id,
|
||||||
|
@ -174,6 +203,21 @@ public class ProfiledDocuments {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}.execute().getResult();
|
}.execute().getResult();
|
||||||
|
|
||||||
|
ItemObserved<Project> item = new ItemObserved<Project>();
|
||||||
|
EventManager.Event event = Event.PROJECT_DELETED;
|
||||||
|
AccountingInfo user = UserUtils.getCurrent().asInfo();
|
||||||
|
item.setCaller(user.getUser());
|
||||||
|
item.setContext(user.getContext());
|
||||||
|
item.setEvent(event);
|
||||||
|
// Referencing delete project
|
||||||
|
Project deletedProject = new Project();
|
||||||
|
deletedProject.setId(id);
|
||||||
|
deletedProject.setProfileID(manager.getUseCaseDescriptor().getId());
|
||||||
|
item.setProject(deletedProject);
|
||||||
|
eventManager.notify(event, item);
|
||||||
|
|
||||||
|
return deleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -217,7 +261,8 @@ public class ProfiledDocuments {
|
||||||
@Path("/" + InterfaceConstants.Methods.DELETE_FILES_PATH + "/{" + InterfaceConstants.Parameters.PROJECT_ID + "}")
|
@Path("/" + InterfaceConstants.Methods.DELETE_FILES_PATH + "/{" + InterfaceConstants.Parameters.PROJECT_ID + "}")
|
||||||
public Project deleteFileSet(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
public Project deleteFileSet(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
@DefaultValue("false") @QueryParam(InterfaceConstants.Parameters.FORCE) Boolean force,
|
@DefaultValue("false") @QueryParam(InterfaceConstants.Parameters.FORCE) Boolean force,
|
||||||
@DefaultValue("false") @QueryParam(InterfaceConstants.Parameters.IGNORE_ERRORS) Boolean ignore_errors, String path) {
|
@DefaultValue("false") @QueryParam(InterfaceConstants.Parameters.IGNORE_ERRORS) Boolean ignore_errors,
|
||||||
|
String path) {
|
||||||
return new GuardedMethod<Project>() {
|
return new GuardedMethod<Project>() {
|
||||||
@Override
|
@Override
|
||||||
protected Project run() throws Exception, WebApplicationException {
|
protected Project run() throws Exception, WebApplicationException {
|
||||||
|
@ -241,7 +286,7 @@ public class ProfiledDocuments {
|
||||||
@Path("/" + InterfaceConstants.Methods.STEP + "/{" + InterfaceConstants.Parameters.PROJECT_ID + "}")
|
@Path("/" + InterfaceConstants.Methods.STEP + "/{" + InterfaceConstants.Parameters.PROJECT_ID + "}")
|
||||||
public Project performStep(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
public Project performStep(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
StepExecutionRequest request) {
|
StepExecutionRequest request) {
|
||||||
return new GuardedMethod<Project>() {
|
Project theProject = new GuardedMethod<Project>() {
|
||||||
@Override
|
@Override
|
||||||
protected Project run() throws Exception, WebApplicationException {
|
protected Project run() throws Exception, WebApplicationException {
|
||||||
log.info("Executing step {} on Project ({},ID,{}) with options {}", request.getStepID(),
|
log.info("Executing step {} on Project ({},ID,{}) with options {}", request.getStepID(),
|
||||||
|
@ -249,6 +294,17 @@ public class ProfiledDocuments {
|
||||||
return manager.performStep(id, request.getStepID(), request.getOptions());
|
return manager.performStep(id, request.getStepID(), request.getOptions());
|
||||||
}
|
}
|
||||||
}.execute().getResult();
|
}.execute().getResult();
|
||||||
|
|
||||||
|
ItemObserved<Project> item = new ItemObserved<Project>();
|
||||||
|
EventManager.Event event = Event.LIFECYCLE_STEP_PERFORMED;
|
||||||
|
AccountingInfo user = UserUtils.getCurrent().asInfo();
|
||||||
|
item.setCaller(user.getUser());
|
||||||
|
item.setContext(user.getContext());
|
||||||
|
item.setEvent(event);
|
||||||
|
item.setProject(theProject);
|
||||||
|
eventManager.notify(event, item);
|
||||||
|
|
||||||
|
return theProject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue