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; } }