first implementation of the UnPublish step
This commit is contained in:
parent
038bfe26ba
commit
fa90d62eca
|
@ -1,9 +1,13 @@
|
||||||
# Changelog for org.gcube.application.cms.ckan-plugin
|
# Changelog for org.gcube.application.cms.ckan-plugin
|
||||||
|
|
||||||
|
## [v1.1.0-SNAPSHOT] - 2023-02-23
|
||||||
|
|
||||||
|
- [#24570] Integrated the UnPublish operation
|
||||||
|
|
||||||
## [v1.0.1] - 2023-01-10
|
## [v1.0.1] - 2023-01-10
|
||||||
- Pom updates
|
- Pom updates
|
||||||
|
|
||||||
- ## [v1.0.0] - 2022-02-24
|
## [v1.0.0] - 2022-02-24
|
||||||
- First release
|
- First release
|
||||||
|
|
||||||
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>default-lc-managers</artifactId>
|
<artifactId>default-lc-managers</artifactId>
|
||||||
<version>1.0.1</version>
|
<version>1.1.0-SNAPSHOT</version>
|
||||||
<name>gCube CMS - Default LC Managers</name>
|
<name>gCube CMS - Default LC Managers</name>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,22 @@
|
||||||
package org.gcube.application.cms.plugins.implementations;
|
package org.gcube.application.cms.plugins.implementations;
|
||||||
|
|
||||||
import lombok.Setter;
|
import java.util.HashMap;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.application.cms.implementations.ProjectAccess;
|
import org.gcube.application.cms.implementations.ProjectAccess;
|
||||||
import org.gcube.application.cms.implementations.utils.UserUtils;
|
import org.gcube.application.cms.implementations.utils.UserUtils;
|
||||||
import org.gcube.application.cms.plugins.LifecycleManager;
|
import org.gcube.application.cms.plugins.LifecycleManager;
|
||||||
import org.gcube.application.cms.plugins.PluginManagerInterface;
|
import org.gcube.application.cms.plugins.PluginManagerInterface;
|
||||||
import org.gcube.application.cms.plugins.faults.*;
|
import org.gcube.application.cms.plugins.faults.EventException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.InitializationException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.InsufficientPrivileges;
|
||||||
|
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.InvalidProfileException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.MaterializationException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.ShutDownException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.StepException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.UnrecognizedEventException;
|
||||||
|
import org.gcube.application.cms.plugins.faults.UnrecognizedStepException;
|
||||||
import org.gcube.application.cms.plugins.implementations.executions.GuardedEventManager;
|
import org.gcube.application.cms.plugins.implementations.executions.GuardedEventManager;
|
||||||
import org.gcube.application.cms.plugins.implementations.executions.GuardedStepExecution;
|
import org.gcube.application.cms.plugins.implementations.executions.GuardedStepExecution;
|
||||||
import org.gcube.application.cms.plugins.reports.EventExecutionReport;
|
import org.gcube.application.cms.plugins.reports.EventExecutionReport;
|
||||||
|
@ -25,10 +35,9 @@ import org.gcube.application.geoportal.common.model.plugins.OperationDescriptor;
|
||||||
import org.gcube.application.geoportal.common.model.plugins.PluginDescriptor;
|
import org.gcube.application.geoportal.common.model.plugins.PluginDescriptor;
|
||||||
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.useCaseDescriptor.HandlerDeclaration;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
||||||
import org.gcube.application.geoportal.common.utils.ContextUtils;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import lombok.Setter;
|
||||||
import java.util.Map;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class AbstractLifeCycleManager extends AbstractPlugin implements LifecycleManager {
|
public abstract class AbstractLifeCycleManager extends AbstractPlugin implements LifecycleManager {
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package org.gcube.application.cms.plugins.implementations;
|
package org.gcube.application.cms.plugins.implementations;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.application.cms.plugins.Plugin;
|
import org.gcube.application.cms.plugins.Plugin;
|
||||||
import org.gcube.application.cms.plugins.faults.InvalidProfileException;
|
import org.gcube.application.cms.plugins.faults.InvalidProfileException;
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public abstract class AbstractPlugin implements Plugin {
|
public abstract class AbstractPlugin implements Plugin {
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.gcube.application.cms.plugins.implementations;
|
package org.gcube.application.cms.plugins.implementations;
|
||||||
|
|
||||||
import com.vdurmont.semver4j.Semver;
|
import java.util.Collections;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.cms.plugins.IndexerPluginInterface;
|
import org.gcube.application.cms.plugins.IndexerPluginInterface;
|
||||||
import org.gcube.application.cms.plugins.LifecycleManager;
|
import org.gcube.application.cms.plugins.LifecycleManager;
|
||||||
|
@ -20,14 +20,16 @@ import org.gcube.application.geoportal.common.model.plugins.OperationDescriptor;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.common.utils.Files;
|
import org.gcube.application.geoportal.common.utils.Files;
|
||||||
|
|
||||||
import java.util.Collections;
|
import com.vdurmont.semver4j.Semver;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class Default3PhaseManager extends SimpleLifeCycleManager implements LifecycleManager {
|
public class Default3PhaseManager extends SimpleLifeCycleManager implements LifecycleManager {
|
||||||
|
|
||||||
protected static class Phases {
|
protected static class Phases {
|
||||||
public static final String PENDING_APPROVAL="Pending Approval";
|
public static final String PENDING_APPROVAL="Pending Approval";
|
||||||
public static final String PUBLISHED="Published";
|
public static final String PUBLISHED=SimpleLifeCycleManager.Phases.PUBLISHED;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,6 +94,9 @@ public class Default3PhaseManager extends SimpleLifeCycleManager implements Life
|
||||||
return executeReject(theReport);
|
return executeReject(theReport);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Updated by Francesco
|
||||||
|
setStep(super.unPublishStep());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Default3PhaseManager() {
|
public Default3PhaseManager() {
|
||||||
|
|
|
@ -1,16 +1,23 @@
|
||||||
package org.gcube.application.cms.plugins.implementations;
|
package org.gcube.application.cms.plugins.implementations;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import java.util.HashMap;
|
||||||
import lombok.*;
|
import java.util.List;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
||||||
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.useCaseDescriptor.HandlerDeclaration;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ToString
|
@ToString
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package org.gcube.application.cms.plugins.implementations;
|
package org.gcube.application.cms.plugins.implementations;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.cms.plugins.IndexerPluginInterface;
|
import org.gcube.application.cms.plugins.IndexerPluginInterface;
|
||||||
import org.gcube.application.cms.plugins.LifecycleManager;
|
import org.gcube.application.cms.plugins.LifecycleManager;
|
||||||
|
@ -10,7 +13,12 @@ import org.gcube.application.cms.plugins.faults.IndexingException;
|
||||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||||
import org.gcube.application.cms.plugins.faults.MaterializationException;
|
import org.gcube.application.cms.plugins.faults.MaterializationException;
|
||||||
import org.gcube.application.cms.plugins.implementations.executions.GuardedStepExecution;
|
import org.gcube.application.cms.plugins.implementations.executions.GuardedStepExecution;
|
||||||
import org.gcube.application.cms.plugins.reports.*;
|
import org.gcube.application.cms.plugins.reports.DocumentHandlingReport;
|
||||||
|
import org.gcube.application.cms.plugins.reports.EventExecutionReport;
|
||||||
|
import org.gcube.application.cms.plugins.reports.IndexDocumentReport;
|
||||||
|
import org.gcube.application.cms.plugins.reports.MaterializationReport;
|
||||||
|
import org.gcube.application.cms.plugins.reports.Report;
|
||||||
|
import org.gcube.application.cms.plugins.reports.StepExecutionReport;
|
||||||
import org.gcube.application.cms.plugins.requests.BaseExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.BaseExecutionRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.BaseRequest;
|
import org.gcube.application.cms.plugins.requests.BaseRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
||||||
|
@ -28,9 +36,7 @@ import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDec
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||||
import org.gcube.application.geoportal.common.utils.Files;
|
import org.gcube.application.geoportal.common.utils.Files;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class SimpleLifeCycleManager extends AbstractLifeCycleManager implements LifecycleManager {
|
public class SimpleLifeCycleManager extends AbstractLifeCycleManager implements LifecycleManager {
|
||||||
|
@ -41,14 +47,22 @@ public class SimpleLifeCycleManager extends AbstractLifeCycleManager implements
|
||||||
public SimpleLifeCycleManager() {
|
public SimpleLifeCycleManager() {
|
||||||
DESCRIPTOR.setId(PLUGIN_ID);
|
DESCRIPTOR.setId(PLUGIN_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Updated by Francesco
|
||||||
|
protected static class Phases {
|
||||||
|
public static final String PUBLISHED="Published";
|
||||||
|
public static final String UNPUBLISHED="UnPublished";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Updated by Francesco
|
||||||
private static class Steps {
|
private static class Steps {
|
||||||
public static final OperationDescriptor PUBLISH = new OperationDescriptor("PUBLISH","Materialize & index project");
|
public static final OperationDescriptor PUBLISH = new OperationDescriptor("PUBLISH","Materialize & index project");
|
||||||
|
public static final OperationDescriptor UNPUBLISH = new OperationDescriptor("UNPUBLISH","UnPublish the project. DeMaterialize and DeIndex the project");
|
||||||
|
|
||||||
static{
|
static{
|
||||||
PUBLISH.setAppliableToPhases(Collections.singletonList(LifecycleInformation.CommonPhases.DRAFT_PHASE));
|
PUBLISH.setAppliableToPhases(Collections.singletonList(LifecycleInformation.CommonPhases.DRAFT_PHASE));
|
||||||
|
UNPUBLISH.setAppliableToPhases(Collections.singletonList(Phases.PUBLISHED));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,11 +126,48 @@ public class SimpleLifeCycleManager extends AbstractLifeCycleManager implements
|
||||||
theReport = index(theReport,indexer,getPublicIndexParams(theReport.getTheRequest()));
|
theReport = index(theReport,indexer,getPublicIndexParams(theReport.getTheRequest()));
|
||||||
// setPhase
|
// setPhase
|
||||||
if(theReport.getToSetLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.OK))
|
if(theReport.getToSetLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.OK))
|
||||||
theReport.getToSetLifecycleInformation().setPhase("PUBLISHED");
|
//TODO CHANGED THE SET PHASE ID
|
||||||
|
//theReport.getToSetLifecycleInformation().setPhase("PUBLISHED");
|
||||||
|
theReport.getToSetLifecycleInformation().setPhase(Phases.PUBLISHED);
|
||||||
}
|
}
|
||||||
return theReport;
|
return theReport;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
setStep(unPublishStep());
|
||||||
|
}
|
||||||
|
|
||||||
|
//Updated by Francesco
|
||||||
|
protected GuardedStepExecution unPublishStep() {
|
||||||
|
|
||||||
|
return new GuardedStepExecution(Steps.UNPUBLISH) {
|
||||||
|
@Override
|
||||||
|
protected StepExecutionReport run() throws Exception {
|
||||||
|
|
||||||
|
//DeMaterialize
|
||||||
|
JSONPathWrapper wrapper = new JSONPathWrapper(theReport.getTheRequest().getDocument().getTheDocument().toJson());
|
||||||
|
for (String s : wrapper.getMatchingPaths("$..[?(@." + RegisteredFileSet.PAYLOADS + ")]")){
|
||||||
|
log.info("Requesting dematerialization for {} ",s);
|
||||||
|
for(MaterializationPlugin mat : getMaterializers(theReport.getTheRequest()))
|
||||||
|
theReport = deMaterialize(theReport,mat,new Document("fileSetPath",s));
|
||||||
|
if(!theReport.getToSetLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.OK))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//DeIndex
|
||||||
|
if(theReport.getToSetLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.OK)) {
|
||||||
|
for(IndexerPluginInterface indexer : getIndexers(theReport.getTheRequest())) {
|
||||||
|
log.info("Requesting deindexing for {} ",indexer.getDescriptor());
|
||||||
|
theReport = deIndex(theReport,indexer,getPublicIndexParams(theReport.getTheRequest()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(theReport.getToSetLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.OK))
|
||||||
|
theReport.getToSetLifecycleInformation().setPhase(LifecycleInformation.CommonPhases.DRAFT_PHASE);
|
||||||
|
|
||||||
|
|
||||||
|
return theReport;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void blockNonDraft(EventExecutionReport report) throws InvalidPluginRequestException {
|
protected void blockNonDraft(EventExecutionReport report) throws InvalidPluginRequestException {
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
package org.gcube.application.cms.plugins.implementations.executions;
|
package org.gcube.application.cms.plugins.implementations.executions;
|
||||||
|
|
||||||
import lombok.NonNull;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.gcube.application.cms.plugins.reports.EventExecutionReport;
|
import org.gcube.application.cms.plugins.reports.EventExecutionReport;
|
||||||
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||||
import org.gcube.application.geoportal.common.model.plugins.OperationDescriptor;
|
import org.gcube.application.geoportal.common.model.plugins.OperationDescriptor;
|
||||||
|
|
||||||
|
import lombok.NonNull;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class GuardedEventManager extends GuardedExecution<EventExecutionRequest,EventExecutionReport>{
|
public abstract class GuardedEventManager extends GuardedExecution<EventExecutionRequest,EventExecutionReport>{
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
package org.gcube.application.cms.plugins.implementations.executions;
|
package org.gcube.application.cms.plugins.implementations.executions;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NonNull;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.gcube.application.cms.plugins.faults.InsufficientPrivileges;
|
import org.gcube.application.cms.plugins.faults.InsufficientPrivileges;
|
||||||
import org.gcube.application.cms.plugins.faults.StepException;
|
import org.gcube.application.cms.plugins.faults.StepException;
|
||||||
import org.gcube.application.cms.plugins.reports.DocumentHandlingReport;
|
import org.gcube.application.cms.plugins.reports.DocumentHandlingReport;
|
||||||
|
@ -12,6 +8,11 @@ import org.gcube.application.geoportal.common.model.plugins.OperationDescriptor;
|
||||||
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.useCaseDescriptor.HandlerDeclaration;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NonNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
package org.gcube.application.cms.plugins.implementations.executions;
|
package org.gcube.application.cms.plugins.implementations.executions;
|
||||||
|
|
||||||
import org.gcube.application.cms.plugins.implementations.RoleManager;
|
|
||||||
import lombok.NonNull;
|
|
||||||
import org.gcube.application.cms.plugins.faults.InsufficientPrivileges;
|
import org.gcube.application.cms.plugins.faults.InsufficientPrivileges;
|
||||||
|
import org.gcube.application.cms.plugins.implementations.RoleManager;
|
||||||
import org.gcube.application.cms.plugins.reports.StepExecutionReport;
|
import org.gcube.application.cms.plugins.reports.StepExecutionReport;
|
||||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
||||||
import org.gcube.application.geoportal.common.model.plugins.OperationDescriptor;
|
import org.gcube.application.geoportal.common.model.plugins.OperationDescriptor;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
|
||||||
|
import lombok.NonNull;
|
||||||
|
|
||||||
public abstract class GuardedStepExecution extends GuardedExecution<StepExecutionRequest, StepExecutionReport>{
|
public abstract class GuardedStepExecution extends GuardedExecution<StepExecutionRequest, StepExecutionReport>{
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue