You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gcube-cms-suite/concessioni-lifecycle/src/main/java/org/gcube/application/cms/concessioni/plugins/ConcessioniLifeCycleManager...

106 lines
4.1 KiB
Java

package org.gcube.application.cms.concessioni.plugins;
import lombok.extern.slf4j.Slf4j;
import org.gcube.application.cms.Serialization;
import org.gcube.application.cms.custom.gna.concessioni.model.ProfiledConcessione;
import org.gcube.application.cms.plugins.LifecycleManager;
import org.gcube.application.cms.plugins.faults.InitializationException;
import org.gcube.application.cms.plugins.faults.ShutDownException;
import org.gcube.application.cms.plugins.faults.StepException;
import org.gcube.application.cms.plugins.model.PluginDescriptor;
import org.gcube.application.cms.plugins.reports.ExecutionReport;
import org.gcube.application.cms.plugins.reports.InitializationReport;
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
import org.gcube.application.geoportal.common.model.document.ComparableVersion;
import org.gcube.application.geoportal.common.model.document.LifecycleInformation;
import org.gcube.application.geoportal.common.model.document.ProfiledDocument;
@Slf4j
public class ConcessioniLifeCycleManager implements LifecycleManager {
private static final PluginDescriptor DESCRIPTOR=new PluginDescriptor("GNA-CONCESSIONI-LC", PluginDescriptor.BaseTypes.LIFECYCLE_MANAGER);
static {
DESCRIPTOR.setDescription("GNA Concessioni. This plugin supports custom lifecycle management for the GNA Concessioni UseCase.");
DESCRIPTOR.setVersion(new ComparableVersion("1.0.0"));
}
@Override
public InitializationReport initInContext() throws InitializationException {
return null;
}
@Override
public InitializationReport init() throws InitializationException {
return null;
}
@Override
public void shutdown() throws ShutDownException {
}
@Override
public ExecutionReport performStep(StepExecutionRequest request) throws StepException {
log.info("Serving Request {}",request);
ExecutionReport report=new ExecutionReport();
LifecycleInformation info=new LifecycleInformation();
info.setPhase(request.getStep());
info.setLastOperationStatus(LifecycleInformation.Status.OK);
report.setRequest(request);
report.setResult(request.getDocument());
try {
switch (request.getStep()) {
case StepExecutionRequest.Steps.ON_INIT_DOCUMENT:
// Set Defaults as for on update
case StepExecutionRequest.Steps.ON_UPDATE_DOCUMENT: {
log.debug("Setting default values..");
report.setResult(setDefaults(request.getDocument()));
break;
}
case StepExecutionRequest.Steps.ON_MATERIALIZE_DOCUMENT: {
break;
}
case StepExecutionRequest.Steps.ON_DEMATERIALIZE_DOCUMENT: {
break;
}
case StepExecutionRequest.Steps.ON_DEINDEX_DOCUMENT: {
break;
}
case StepExecutionRequest.Steps.ON_INDEX_DOCUMENT: {
break;
}
case StepExecutionRequest.Steps.ON_DELETE_DOCUMENT: {
break;
}
default:
throw new StepException("Invalid Step " + request.getStep());
}
}catch (StepException e){
throw e;
}catch (Throwable t){
log.error("Unable to perform step "+request.getStep(),t);
report.getResult().getLifecycleInformation().setLastOperationStatus(LifecycleInformation.Status.ERROR);
report.getResult().getLifecycleInformation().addErrorMessage("Unable to execute Step "+request.getStep()+". Error was "+t.getMessage());
}
return report;
}
@Override
public PluginDescriptor getDescriptor() {
return DESCRIPTOR;
}
// STATIC ROUTINES
private static final ProfiledDocument setDefaults(ProfiledDocument document){
ProfiledConcessione c=Serialization.convert(document,ProfiledConcessione.class);
c.setDefaults();
return c;
}
}