106 lines
5.6 KiB
Java
106 lines
5.6 KiB
Java
package org.gcube.application.cms.concessioni.plugins;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.bson.BsonDocument;
|
|
import org.bson.BsonString;
|
|
import org.bson.BsonValue;
|
|
import org.bson.Document;
|
|
import org.gcube.application.cms.plugins.*;
|
|
import org.gcube.application.cms.plugins.faults.*;
|
|
import org.gcube.application.cms.plugins.implementations.Default3PhaseManager;
|
|
import org.gcube.application.cms.plugins.model.ComparableVersion;
|
|
import org.gcube.application.cms.plugins.reports.*;
|
|
import org.gcube.application.cms.plugins.requests.*;
|
|
import org.gcube.application.cms.serialization.Serialization;
|
|
import org.gcube.application.cms.custom.gna.concessioni.model.ProfiledConcessione;
|
|
import org.gcube.application.cms.plugins.model.PluginDescriptor;
|
|
import org.gcube.application.geoportal.common.model.document.*;
|
|
import org.gcube.application.geoportal.common.model.document.access.Access;
|
|
import org.gcube.application.geoportal.common.model.document.access.AccessPolicy;
|
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
|
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
|
import org.gcube.application.geoportal.common.model.document.lifecycle.TriggeredEvents;
|
|
import org.gcube.application.geoportal.common.model.legacy.report.ConstraintCheck;
|
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
|
import org.gcube.application.geoportal.common.utils.Files;
|
|
|
|
@Slf4j
|
|
/** Overrides 3 Phases lifecycle with override of default values
|
|
*
|
|
*/
|
|
public class ConcessioniLifeCycleManager extends Default3PhaseManager implements LifecycleManager {
|
|
|
|
|
|
public ConcessioniLifeCycleManager() {
|
|
DESCRIPTOR.setId("GNA-CONCESSIONI-LC");
|
|
|
|
DESCRIPTOR.setDescription("GNA Concessioni. This plugin supports custom lifecycle management for the GNA Concessioni UseCase.");
|
|
DESCRIPTOR.setVersion(new ComparableVersion("1.0.0"));
|
|
}
|
|
|
|
|
|
|
|
// STATIC ROUTINES
|
|
|
|
private static final Project setDefaults(Project document){
|
|
ProfiledConcessione c=Serialization.convert(document,ProfiledConcessione.class);
|
|
Document doc=c.getTheDocument();
|
|
doc.putIfAbsent(ProfiledConcessione.SOGGETTO,new String[]{"Research Excavation","Archaeology"});
|
|
|
|
doc.putIfAbsent(ProfiledConcessione.DSCRIZIONE_CONTENUTO,"Relazione di fine scavo e relativo abstract; selezione di immagini rappresentative;"
|
|
+ " posizionamento topografico dell'area indagata, pianta di fine scavo.");
|
|
|
|
// Super Section
|
|
c.getInfo().getAccess().setLicense(
|
|
ConstraintCheck.defaultFor(c.getInfo().getAccess().getLicense(), "CC0-1.0").evaluate());
|
|
|
|
|
|
//RELAZIONE
|
|
// TODO NB provare se object gia' presente sia usando Document che sub Object
|
|
doc.putIfAbsent(ProfiledConcessione.RELAZIONE_SCAVO,new Document());
|
|
Document rel=Serialization.convert(doc.get(ProfiledConcessione.RELAZIONE_SCAVO), Document.class);
|
|
|
|
rel.putIfAbsent(ProfiledConcessione.Sections.TITOLO,doc.getString(ProfiledConcessione.NOME)+" relazione di scavo");
|
|
rel.putIfAbsent(ProfiledConcessione.SOGGETTO,doc.get(ProfiledConcessione.SOGGETTO));
|
|
rel.putIfAbsent(RegisteredFileSet.CREATION_INFO,c.getInfo().getCreationInfo());
|
|
rel.putIfAbsent(RegisteredFileSet.ACCESS,c.getInfo().getAccess());
|
|
Access relAccess=Serialization.convert(rel.get(RegisteredFileSet.ACCESS),Access.class);
|
|
relAccess.setLicense(ConstraintCheck.defaultFor(relAccess.getLicense(),"CC-BY-4.0").evaluate());
|
|
relAccess.setPolicy(ConstraintCheck.defaultFor(relAccess.getPolicy(), AccessPolicy.OPEN).evaluate());
|
|
|
|
//ABSTRACT Relazione
|
|
doc.putIfAbsent(ProfiledConcessione.ABSTRACT_RELAZIONE,new Document());
|
|
Document abs=Serialization.convert(doc.get(ProfiledConcessione.ABSTRACT_RELAZIONE),Document.class);
|
|
abs.putIfAbsent(ProfiledConcessione.Sections.TITOLO,doc.getString(ProfiledConcessione.NOME)+" abstract relazione di scavo");
|
|
abs.putIfAbsent(RegisteredFileSet.CREATION_INFO,c.getInfo().getCreationInfo());
|
|
abs.putIfAbsent(RegisteredFileSet.ACCESS,c.getInfo().getAccess());
|
|
Access absAccess=Serialization.convert(abs.get(RegisteredFileSet.ACCESS),Access.class);
|
|
absAccess.setLicense(ConstraintCheck.defaultFor(absAccess.getLicense(),"CC-BY-4.0").evaluate());
|
|
absAccess.setPolicy(ConstraintCheck.defaultFor(absAccess.getPolicy(), AccessPolicy.OPEN).evaluate());
|
|
|
|
//TODO complete setDefaults
|
|
//IMMAGINI RAPPRESENTATIVE
|
|
|
|
|
|
if(doc.containsKey(ProfiledConcessione.IMMAGINI_RAPPRESENTATIVE)) {
|
|
for (BsonValue bsonValue : doc.toBsonDocument(null, null).
|
|
getArray(ProfiledConcessione.IMMAGINI_RAPPRESENTATIVE)) {
|
|
|
|
BsonDocument imgDocument = bsonValue.asDocument();
|
|
imgDocument.putIfAbsent(ProfiledConcessione.SOGGETTO,new BsonString(doc.getString(ProfiledConcessione.SOGGETTO)));
|
|
// imgDocument.putIfAbsent(RegisteredFileSet.CREATION_INFO,this.getInfo().getCreationInfo());
|
|
// imgDocument.putIfAbsent(RegisteredFileSet.CREATION_INFO,new BsonDocument(new Document()));
|
|
// imgDocument.putIfAbsent(RegisteredFileSet.ACCESS,this.getInfo().getAccess());
|
|
// Access absAccess=rel.get(RegisteredFileSet.ACCESS,Access.class);
|
|
// absAccess.setLicense(ConstraintCheck.defaultFor(absAccess.getLicense(),"CC-BY-4.0").evaluate());
|
|
// absAccess.setPolicy(ConstraintCheck.defaultFor(absAccess.getPolicy(), AccessPolicy.OPEN).evaluate());
|
|
}
|
|
}
|
|
|
|
|
|
return c;
|
|
}
|
|
|
|
|
|
}
|