diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/LifecycleManager.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/LifecycleManager.java index 88f3adb..5777d12 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/LifecycleManager.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/LifecycleManager.java @@ -1,9 +1,11 @@ package org.gcube.application.cms.plugins; +import org.gcube.application.cms.plugins.faults.EventException; import org.gcube.application.cms.plugins.faults.StepException; -import org.gcube.application.cms.plugins.reports.ExecutionReport; +import org.gcube.application.cms.plugins.reports.EventExecutionReport; +import org.gcube.application.cms.plugins.reports.StepExecutionReport; +import org.gcube.application.cms.plugins.requests.EventExecutionRequest; import org.gcube.application.cms.plugins.requests.StepExecutionRequest; -import org.gcube.application.geoportal.common.model.document.ProfiledDocument; import org.gcube.application.geoportal.common.model.rest.Configuration; import org.gcube.application.geoportal.common.model.rest.ConfigurationException; @@ -12,7 +14,9 @@ public interface LifecycleManager extends InitializablePlugin{ // Lifecycle operations - public ExecutionReport performStep(StepExecutionRequest request)throws StepException; + public StepExecutionReport performStep(StepExecutionRequest request)throws StepException; public Configuration getCurrentConfiguration() throws ConfigurationException; + + public EventExecutionReport onEvent(EventExecutionRequest request) throws EventException; } diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/MaterializationPlugin.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/MaterializationPlugin.java new file mode 100644 index 0000000..47bbbf9 --- /dev/null +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/MaterializationPlugin.java @@ -0,0 +1,11 @@ +package org.gcube.application.cms.plugins; + +import org.gcube.application.cms.plugins.faults.MaterializationException; +import org.gcube.application.cms.plugins.reports.MaterializationReport; +import org.gcube.application.cms.plugins.requests.MaterializationRequest; + +public interface MaterializationPlugin extends InitializablePlugin{ + + public MaterializationReport materialize(MaterializationRequest request) throws MaterializationException; + +} diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/faults/EventException.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/faults/EventException.java new file mode 100644 index 0000000..f80cea8 --- /dev/null +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/faults/EventException.java @@ -0,0 +1,23 @@ +package org.gcube.application.cms.plugins.faults; + +public class EventException extends Exception{ + + public EventException() { + } + + public EventException(String message) { + super(message); + } + + public EventException(String message, Throwable cause) { + super(message, cause); + } + + public EventException(Throwable cause) { + super(cause); + } + + public EventException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/faults/MaterializationException.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/faults/MaterializationException.java new file mode 100644 index 0000000..b1127f9 --- /dev/null +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/faults/MaterializationException.java @@ -0,0 +1,23 @@ +package org.gcube.application.cms.plugins.faults; + +public class MaterializationException extends Exception { + + public MaterializationException() { + } + + public MaterializationException(String message) { + super(message); + } + + public MaterializationException(String message, Throwable cause) { + super(message, cause); + } + + public MaterializationException(Throwable cause) { + super(cause); + } + + public MaterializationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/EventExecutionReport.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/EventExecutionReport.java new file mode 100644 index 0000000..1a29078 --- /dev/null +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/EventExecutionReport.java @@ -0,0 +1,15 @@ +package org.gcube.application.cms.plugins.reports; + +import lombok.Data; +import org.bson.Document; +import org.gcube.application.cms.plugins.requests.EventExecutionRequest; +import org.gcube.application.geoportal.common.model.document.ProfiledDocument; +import org.gcube.application.geoportal.common.model.profile.Profile; + +@Data +public class EventExecutionReport { + + private EventExecutionRequest request; + private ProfiledDocument result; + +} diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/InitializationReport.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/InitializationReport.java index 58638ae..e951f22 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/InitializationReport.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/InitializationReport.java @@ -1,6 +1,6 @@ package org.gcube.application.cms.plugins.reports; -public class InitializationReport { +public class InitializationReport extends Report{ } diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/MaterializationReport.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/MaterializationReport.java new file mode 100644 index 0000000..1d409ba --- /dev/null +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/MaterializationReport.java @@ -0,0 +1,5 @@ +package org.gcube.application.cms.plugins.reports; + +public class MaterializationReport extends Report{ + +} diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/ExecutionReport.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/StepExecutionReport.java similarity index 56% rename from cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/ExecutionReport.java rename to cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/StepExecutionReport.java index dadbcd1..a6adeb8 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/ExecutionReport.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/reports/StepExecutionReport.java @@ -1,14 +1,20 @@ package org.gcube.application.cms.plugins.reports; import lombok.Data; +import org.gcube.application.cms.plugins.requests.EventExecutionRequest; import org.gcube.application.cms.plugins.requests.StepExecutionRequest; -import org.gcube.application.geoportal.common.model.document.LifecycleInformation; import org.gcube.application.geoportal.common.model.document.ProfiledDocument; +import java.util.List; + @Data -public class ExecutionReport { +public class StepExecutionReport { StepExecutionRequest request; ProfiledDocument result; + + List toTriggerEvents; + + List cascadeSteps; } diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/EventExecutionRequest.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/EventExecutionRequest.java new file mode 100644 index 0000000..a10efbf --- /dev/null +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/EventExecutionRequest.java @@ -0,0 +1,23 @@ +package org.gcube.application.cms.plugins.requests; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.bson.Document; +import org.gcube.application.geoportal.common.model.document.ProfiledDocument; +import org.gcube.application.geoportal.common.model.profile.Profile; + +@Data +public class EventExecutionRequest { + + public static class Events{ + public static final String ON_INIT_DOCUMENT="@@@INIT_DOCUMENT@@"; + public static final String ON_UPDATE_DOCUMENT="@@@UPDATE_DOCUMENT@@"; + public static final String ON_DELETE_DOCUMENT="@@@DELETE_DOCUMENT@@"; + } + + Profile profile; + ProfiledDocument document; + String event; + Document callParameters; + +} diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/MaterializationRequest.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/MaterializationRequest.java new file mode 100644 index 0000000..3d24730 --- /dev/null +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/MaterializationRequest.java @@ -0,0 +1,14 @@ +package org.gcube.application.cms.plugins.requests; + +import lombok.Data; +import org.bson.Document; +import org.gcube.application.geoportal.common.model.document.ProfiledDocument; +import org.gcube.application.geoportal.common.model.profile.Profile; + +@Data +public class MaterializationRequest { + + ProfiledDocument document; + Document parameters; + Profile profile; +} diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/StepExecutionRequest.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/StepExecutionRequest.java index 41fef59..2bcb157 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/StepExecutionRequest.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/StepExecutionRequest.java @@ -9,9 +9,6 @@ import org.gcube.application.geoportal.common.model.profile.Profile; public class StepExecutionRequest { public static class Steps{ - public static final String ON_INIT_DOCUMENT="@@@INIT_DOCUMENT@@"; - public static final String ON_UPDATE_DOCUMENT="@@@UPDATE_DOCUMENT@@"; - public static final String ON_DELETE_DOCUMENT="@@@DELETE_DOCUMENT@@"; public static final String ON_MATERIALIZE_DOCUMENT="@@@MATERIALIZE_DOCUMENT@@"; public static final String ON_DEMATERIALIZE_DOCUMENT="@@@DEMATERIALIZE_DOCUMENT@@";