gcube-cms-suite/concessioni-lifecycle/src/main/java/org/gcube/application/cms/concessioni/plugins/ConcessioniLifeCycleManager...

98 lines
5.0 KiB
Java
Raw Normal View History

2022-01-12 18:42:22 +01:00
package org.gcube.application.cms.concessioni.plugins;
2022-04-01 19:11:11 +02:00
import com.vdurmont.semver4j.Semver;
2022-01-12 18:42:22 +01:00
import lombok.extern.slf4j.Slf4j;
2022-01-27 15:02:53 +01:00
import org.bson.BsonDocument;
import org.bson.BsonString;
import org.bson.BsonValue;
import org.bson.Document;
2022-03-28 16:35:30 +02:00
import org.gcube.application.cms.plugins.*;
import org.gcube.application.cms.plugins.implementations.Default3PhaseManager;
2022-02-23 17:13:22 +01:00
import org.gcube.application.cms.plugins.model.ComparableVersion;
2022-02-01 15:24:39 +01:00
import org.gcube.application.cms.serialization.Serialization;
2022-01-14 12:31:11 +01:00
import org.gcube.application.cms.custom.gna.concessioni.model.ProfiledConcessione;
2022-01-27 15:02:53 +01:00
import org.gcube.application.geoportal.common.model.document.*;
2022-02-14 12:23:13 +01:00
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;
2022-01-27 15:02:53 +01:00
import org.gcube.application.geoportal.common.model.legacy.report.ConstraintCheck;
2022-01-12 18:42:22 +01:00
@Slf4j
2022-03-28 16:35:30 +02:00
/** Overrides 3 Phases lifecycle with override of default values
*
*/
public class ConcessioniLifeCycleManager extends Default3PhaseManager implements LifecycleManager {
2022-01-12 18:42:22 +01:00
2022-02-18 18:11:12 +01:00
2022-03-28 16:35:30 +02:00
public ConcessioniLifeCycleManager() {
DESCRIPTOR.setId("GNA-CONCESSIONI-LC");
2022-01-12 18:42:22 +01:00
DESCRIPTOR.setDescription("GNA Concessioni. This plugin supports custom lifecycle management for the GNA Concessioni UseCase.");
2022-04-01 19:11:11 +02:00
DESCRIPTOR.setVersion(new Semver("1.0.0"));
2022-01-12 18:42:22 +01:00
}
2022-03-17 17:54:00 +01:00
2022-02-14 12:23:13 +01:00
2022-01-14 12:31:11 +01:00
// STATIC ROUTINES
2022-03-04 14:23:20 +01:00
private static final Project setDefaults(Project document){
2022-01-17 13:30:21 +01:00
ProfiledConcessione c=Serialization.convert(document,ProfiledConcessione.class);
2022-03-28 16:35:30 +02:00
Document doc=c.getTheDocument();
2022-01-27 15:02:53 +01:00
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());
}
}
2022-01-14 12:31:11 +01:00
return c;
}
2022-01-12 18:42:22 +01:00
}