From 3913019df3c31d3b409bb047fd01185abe90765b Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 22 Mar 2024 16:22:22 +0100 Subject: [PATCH] updated send notification checks --- .../service/rest/ProfiledDocuments.java | 100 +++++++++++------- 1 file changed, 59 insertions(+), 41 deletions(-) diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ProfiledDocuments.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ProfiledDocuments.java index 7f716ce..c36182e 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ProfiledDocuments.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ProfiledDocuments.java @@ -24,6 +24,8 @@ 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.access.Access; import org.gcube.application.geoportal.common.model.document.accounting.AccountingInfo; +import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation; +import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation.Status; 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.RegisterFileSetRequest; @@ -115,16 +117,20 @@ public class ProfiledDocuments { } }.execute().getResult(); - // notifying the Event.PROJECT_CREATED; - ItemObserved item = new ItemObserved(); - EventManager.Event event = Event.PROJECT_CREATED; - AccountingInfo user = UserUtils.getCurrent().asInfo(); - item.setUserCaller(user.getUser()); - item.setContext(user.getContext()); - item.setEvent(event); - item.setProject(theNewProject); - log.info("By notifying event ({}, ID {})", event, item.getProjectId()); - eventManager.notify(event, item); + Status status = theNewProject.getLifecycleInformation().getLastOperationStatus(); + // IF last operation status is not ERROR, notify PROJECT_CREATED event + if (status != null && !status.equals(LifecycleInformation.Status.ERROR)) { + // notifying the Event.PROJECT_CREATED; + ItemObserved item = new ItemObserved(); + EventManager.Event event = Event.PROJECT_CREATED; + AccountingInfo user = UserUtils.getCurrent().asInfo(); + item.setUserCaller(user.getUser()); + item.setContext(user.getContext()); + item.setEvent(event); + item.setProject(theNewProject); + log.info("By notifying event ({}, ID {})", event, item.getProjectId()); + eventManager.notify(event, item); + } return theNewProject; } @@ -149,15 +155,20 @@ public class ProfiledDocuments { } }.execute().getResult(); - ItemObserved item = new ItemObserved(); - EventManager.Event event = Event.PROJECT_UPDATED; - AccountingInfo user = UserUtils.getCurrent().asInfo(); - item.setUserCaller(user.getUser()); - item.setContext(user.getContext()); - item.setEvent(event); - item.setProject(theUpdatedProject); - log.info("By notifying event ({}, ID {})", event, item.getProjectId()); - eventManager.notify(event, item); + Status status = theUpdatedProject.getLifecycleInformation().getLastOperationStatus(); + // IF last operation status is not ERROR, notify PROJECT_UPDATED event + if (status != null && !status.equals(LifecycleInformation.Status.ERROR)) { + + ItemObserved item = new ItemObserved(); + EventManager.Event event = Event.PROJECT_UPDATED; + AccountingInfo user = UserUtils.getCurrent().asInfo(); + item.setUserCaller(user.getUser()); + item.setContext(user.getContext()); + item.setEvent(event); + item.setProject(theUpdatedProject); + log.info("By notifying event ({}, ID {})", event, item.getProjectId()); + eventManager.notify(event, item); + } return theUpdatedProject; } @@ -206,19 +217,22 @@ public class ProfiledDocuments { } }.execute().getResult(); - ItemObserved item = new ItemObserved(); - EventManager.Event event = Event.PROJECT_DELETED; - AccountingInfo user = UserUtils.getCurrent().asInfo(); - item.setUserCaller(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); - log.info("By notifying event ({}, ID {})", event, item.getProjectId()); - eventManager.notify(event, item); + // IF deleted, notify PROJECT_DELETED event + if (deleted) { + ItemObserved item = new ItemObserved(); + EventManager.Event event = Event.PROJECT_DELETED; + AccountingInfo user = UserUtils.getCurrent().asInfo(); + item.setUserCaller(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); + log.info("By notifying event ({}, ID {})", event, item.getProjectId()); + eventManager.notify(event, item); + } return deleted; } @@ -298,15 +312,19 @@ public class ProfiledDocuments { } }.execute().getResult(); - ItemObserved item = new ItemObserved(); - EventManager.Event event = Event.LIFECYCLE_STEP_PERFORMED; - AccountingInfo user = UserUtils.getCurrent().asInfo(); - item.setUserCaller(user.getUser()); - item.setContext(user.getContext()); - item.setEvent(event); - item.setProject(theProject); - log.info("By notifying event ({}, ID {})", event, item.getProjectId()); - eventManager.notify(event, item); + Status status = theProject.getLifecycleInformation().getLastOperationStatus(); + // IF last operation status is not ERROR, notify LIFECYCLE_STEP_PERFORMED event + if (status != null && !status.equals(LifecycleInformation.Status.ERROR)) { + ItemObserved item = new ItemObserved(); + EventManager.Event event = Event.LIFECYCLE_STEP_PERFORMED; + AccountingInfo user = UserUtils.getCurrent().asInfo(); + item.setUserCaller(user.getUser()); + item.setContext(user.getContext()); + item.setEvent(event); + item.setProject(theProject); + log.info("By notifying event ({}, ID {})", event, item.getProjectId()); + eventManager.notify(event, item); + } return theProject; }