ProfiledConcessione defaults
This commit is contained in:
parent
7fae68c619
commit
6ffa411dfe
|
@ -11,7 +11,7 @@ public class StepExecutionRequest {
|
||||||
public static class Steps{
|
public static class Steps{
|
||||||
public static final String ON_INIT_DOCUMENT="@@@INIT_DOCUMENT@@";
|
public static final String ON_INIT_DOCUMENT="@@@INIT_DOCUMENT@@";
|
||||||
public static final String ON_UPDATE_DOCUMENT="@@@UPDATE_DOCUMENT@@";
|
public static final String ON_UPDATE_DOCUMENT="@@@UPDATE_DOCUMENT@@";
|
||||||
public static final String ON_DELETE_DOCUMENT="@@@UPDATE_DOCUMENT@@";
|
public static final String ON_DELETE_DOCUMENT="@@@DELETE_DOCUMENT@@";
|
||||||
|
|
||||||
public static final String ON_MATERIALIZE_DOCUMENT="@@@MATERIALIZE_DOCUMENT@@";
|
public static final String ON_MATERIALIZE_DOCUMENT="@@@MATERIALIZE_DOCUMENT@@";
|
||||||
public static final String ON_DEMATERIALIZE_DOCUMENT="@@@DEMATERIALIZE_DOCUMENT@@";
|
public static final String ON_DEMATERIALIZE_DOCUMENT="@@@DEMATERIALIZE_DOCUMENT@@";
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<artifactId>concessioni-lifecycle</artifactId>
|
<artifactId>concessioni-lifecycle</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
<name>GNA Concessioni Use Case</name>
|
<name>GNA Concessioni Lifecycle</name>
|
||||||
|
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -40,6 +40,10 @@
|
||||||
<artifactId>cms-test-commons</artifactId>
|
<artifactId>cms-test-commons</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.application.cms</groupId>
|
||||||
|
<artifactId>concessioni-model</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.gcube.application.cms.concessioni.plugins;
|
package org.gcube.application.cms.concessioni.plugins;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.bson.Document;
|
||||||
|
import org.gcube.application.cms.custom.gna.concessioni.model.ProfiledConcessione;
|
||||||
import org.gcube.application.cms.plugins.LifecycleManager;
|
import org.gcube.application.cms.plugins.LifecycleManager;
|
||||||
import org.gcube.application.cms.plugins.faults.InitializationException;
|
import org.gcube.application.cms.plugins.faults.InitializationException;
|
||||||
import org.gcube.application.cms.plugins.faults.ShutDownException;
|
import org.gcube.application.cms.plugins.faults.ShutDownException;
|
||||||
|
@ -8,8 +10,11 @@ import org.gcube.application.cms.plugins.faults.StepException;
|
||||||
import org.gcube.application.cms.plugins.model.PluginDescriptor;
|
import org.gcube.application.cms.plugins.model.PluginDescriptor;
|
||||||
import org.gcube.application.cms.plugins.reports.ExecutionReport;
|
import org.gcube.application.cms.plugins.reports.ExecutionReport;
|
||||||
import org.gcube.application.cms.plugins.reports.InitializationReport;
|
import org.gcube.application.cms.plugins.reports.InitializationReport;
|
||||||
|
import org.gcube.application.cms.plugins.reports.Report;
|
||||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
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.ComparableVersion;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.ProfiledDocument;
|
||||||
|
import org.gcube.application.geoportal.common.utils.JSONPathWrapper;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ConcessioniLifeCycleManager implements LifecycleManager {
|
public class ConcessioniLifeCycleManager implements LifecycleManager {
|
||||||
|
@ -38,34 +43,60 @@ public class ConcessioniLifeCycleManager implements LifecycleManager {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ExecutionReport performStep(StepExecutionRequest request) throws StepException {
|
public ExecutionReport performStep(StepExecutionRequest request) throws StepException {
|
||||||
log.info("Received Request ");
|
log.info("Serving Request {}",request);
|
||||||
|
ExecutionReport report=new ExecutionReport();
|
||||||
|
report.setRequest(request);
|
||||||
|
report.setStatus(Report.Status.OK);
|
||||||
|
try {
|
||||||
|
switch (request.getStep()) {
|
||||||
|
case StepExecutionRequest.Steps.ON_INIT_DOCUMENT:
|
||||||
|
// Set Defaults as for on update
|
||||||
|
case StepExecutionRequest.Steps.ON_UPDATE_DOCUMENT: {
|
||||||
|
ProfiledDocument doc = request.getDocument();
|
||||||
|
|
||||||
switch(request.getStep()){
|
break;
|
||||||
case StepExecutionRequest.Steps.ON_INIT_DOCUMENT:{
|
}
|
||||||
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());
|
||||||
}
|
}
|
||||||
case StepExecutionRequest.Steps.ON_MATERIALIZE_DOCUMENT:{
|
}catch (StepException e){
|
||||||
break;
|
throw e;
|
||||||
}
|
}catch (Throwable t){
|
||||||
case StepExecutionRequest.Steps.ON_DEMATERIALIZE_DOCUMENT:{
|
log.error("Unable to perform step "+request.getStep(),t);
|
||||||
break;
|
report.setStatus(Report.Status.ERROR);
|
||||||
}
|
report.getMessages().add("Unable to execute Step "+request.getStep()+". Error was "+t.getMessage());
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
throw new StepException("Still to implement");
|
return report;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PluginDescriptor getDescriptor() {
|
public PluginDescriptor getDescriptor() {
|
||||||
return DESCRIPTOR;
|
return DESCRIPTOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// STATIC ROUTINES
|
||||||
|
|
||||||
|
private static final ProfiledDocument setDefaults(ProfiledDocument document){
|
||||||
|
ProfiledConcessione c =(ProfiledConcessione) document;
|
||||||
|
c.setDefaults();
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
<groupId>org.gcube.application.cms</groupId>
|
<groupId>org.gcube.application.cms</groupId>
|
||||||
<artifactId>concessioni-model</artifactId>
|
<artifactId>concessioni-model</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
<name>GNA Concessioni Model</name>
|
||||||
|
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.gcube.application.cms</groupId>
|
<groupId>org.gcube.application.cms</groupId>
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package org.gcube.application.cms.custom.gna.concessioni.model;
|
||||||
|
|
||||||
|
public interface DefaultLogicHolder {
|
||||||
|
|
||||||
|
public void setDefaults();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package org.gcube.application.cms.custom.gna.concessioni.model;
|
||||||
|
|
||||||
|
import org.bson.Document;
|
||||||
|
|
||||||
|
public class DocumentedRelazioneScavo extends Document implements DefaultLogicHolder{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDefaults() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,118 @@
|
||||||
package org.gcube.application.cms.custom.gna.concessioni.model;
|
package org.gcube.application.cms.custom.gna.concessioni.model;
|
||||||
|
|
||||||
|
import org.bson.BsonDocument;
|
||||||
|
import org.bson.BsonString;
|
||||||
|
import org.bson.BsonValue;
|
||||||
|
import org.bson.Document;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.Access;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.AccessPolicy;
|
||||||
import org.gcube.application.geoportal.common.model.document.ProfiledDocument;
|
import org.gcube.application.geoportal.common.model.document.ProfiledDocument;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.RegisteredFileSet;
|
||||||
|
import org.gcube.application.geoportal.common.model.legacy.AbstractRelazione;
|
||||||
|
import org.gcube.application.geoportal.common.model.legacy.report.Check;
|
||||||
|
import org.gcube.application.geoportal.common.model.legacy.report.ConstraintCheck;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public class ProfiledConcessione extends ProfiledDocument {
|
public class ProfiledConcessione extends ProfiledDocument {
|
||||||
|
|
||||||
|
public static final String NOME="nome";
|
||||||
|
//Introduzione (descrizione del progetto)
|
||||||
|
public final static String INTRODUZIONE = "introduzione";
|
||||||
|
//Descrizione del contenuto
|
||||||
|
public final static String DSCRIZIONE_CONTENUTO ="descrizioneContenuto";
|
||||||
|
//Autori
|
||||||
|
public final static String AUTHORS= "authors";
|
||||||
|
//Soggetto che materialmente invia i dati.
|
||||||
|
public final static String CONTRIBUTORE ="contributore";
|
||||||
|
|
||||||
|
//Indicare il nome del titolare/i dei dati contenuti nel dataset e/o per sue specifiche parti.
|
||||||
|
public final static String TITOLARI="titolari";
|
||||||
|
|
||||||
|
public final static String RESPONSABILE="responsabile";
|
||||||
|
public final static String EDITORS ="editore";
|
||||||
|
|
||||||
|
public final static String FONTI_FINANZIAMENTO="fontiFinanziamento";
|
||||||
|
//Research Excavation; Archaeology (valori di default)
|
||||||
|
public final static String SOGGETTO="soggetto";
|
||||||
|
|
||||||
|
//Referenze bibliografiche, DOI (se esistenti) di risorse correlate all’indagine in oggetto
|
||||||
|
public final static String RISORSE_CORRELATE="risorseCorrelate";
|
||||||
|
|
||||||
|
public final static String DATA_INZIO_PROGETTO="dataInizioProgetto";
|
||||||
|
public final static String DATA_FINE_PROGETTO="dataFineProgetto";
|
||||||
|
|
||||||
|
public final static String TITOLARE_LICENZA="titolareLicenza";
|
||||||
|
public final static String TITOLARE_COPYRIGHT="titolareCopyright";
|
||||||
|
|
||||||
|
public final static String PAROLE_CHIAVE_LIBERE="paroleChiaveLibere";
|
||||||
|
public final static String PAREOLE_CHIAVE_ICCD="paroleChiaveICCD";
|
||||||
|
|
||||||
|
public final static String RELAZIONE_SCAVO="relazioneScavo";
|
||||||
|
public final static String ABSTRACT_RELAZIONE ="abstractRelazione";
|
||||||
|
public final static String IMMAGINI_RAPPRESENTATIVE="immaginiRappresentative";
|
||||||
|
public final static String POSIZIONAMENTO_SCAVO = "posizionamentoScavo";
|
||||||
|
public final static String PIANTE_FINE_SCAVO = "pianteFineScavo";
|
||||||
|
public final static String GENERIC_CONTENT= "genericContent";
|
||||||
|
|
||||||
|
public static class Sections{
|
||||||
|
public static final String TITOLO="titolo";
|
||||||
|
}
|
||||||
|
public static class Relazione{
|
||||||
|
|
||||||
|
public static final String RESPONSABILI= "responsabili";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDefaults() {
|
||||||
|
Document doc=this.getTheDocument();
|
||||||
|
doc.putIfAbsent(SOGGETTO,new String[]{"Research Excavation","Archaeology"});
|
||||||
|
|
||||||
|
doc.putIfAbsent(DSCRIZIONE_CONTENUTO,"Relazione di fine scavo e relativo abstract; selezione di immagini rappresentative;"
|
||||||
|
+ " posizionamento topografico dell'area indagata, pianta di fine scavo.");
|
||||||
|
|
||||||
|
// Super Section
|
||||||
|
this.getInfo().getAccess().setLicense(
|
||||||
|
ConstraintCheck.defaultFor(getInfo().getAccess().getLicense(), "CC0-1.0").evaluate());
|
||||||
|
|
||||||
|
|
||||||
|
//RELAZIONE
|
||||||
|
doc.putIfAbsent(RELAZIONE_SCAVO,new RegisteredFileSet());
|
||||||
|
Document rel=doc.get(RELAZIONE_SCAVO,Document.class);
|
||||||
|
rel.putIfAbsent(Sections.TITOLO,doc.getString(NOME)+" relazione di scavo");
|
||||||
|
rel.putIfAbsent(SOGGETTO,doc.get(SOGGETTO));
|
||||||
|
rel.putIfAbsent(RegisteredFileSet.CREATION_INFO,this.getInfo().getCreationInfo());
|
||||||
|
rel.putIfAbsent(RegisteredFileSet.ACCESS,this.getInfo().getAccess());
|
||||||
|
Access relAccess=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(ABSTRACT_RELAZIONE,new RegisteredFileSet());
|
||||||
|
Document abs=doc.get(ABSTRACT_RELAZIONE,Document.class);
|
||||||
|
abs.putIfAbsent(Sections.TITOLO,doc.getString(NOME)+" abstract relazione di scavo");
|
||||||
|
abs.putIfAbsent(RegisteredFileSet.CREATION_INFO,this.getInfo().getCreationInfo());
|
||||||
|
abs.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());
|
||||||
|
|
||||||
|
//IMMAGINI RAPPRESENTATIVE
|
||||||
|
|
||||||
|
|
||||||
|
// if(doc.containsKey(IMMAGINI_RAPPRESENTATIVE)) {
|
||||||
|
// for (BsonValue bsonValue : doc.toBsonDocument(null, null).
|
||||||
|
// getArray(IMMAGINI_RAPPRESENTATIVE)) {
|
||||||
|
// BsonDocument imgDocument = bsonValue.asDocument();
|
||||||
|
// imgDocument.putIfAbsent(SOGGETTO,new BsonString(doc.getString(SOGGETTO));
|
||||||
|
// imgDocument.putIfAbsent(RegisteredFileSet.CREATION_INFO,new BsonDocument(this.getInfo().getCreationInfo());
|
||||||
|
// 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());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,11 @@
|
||||||
<artifactId>authorization-client</artifactId>
|
<artifactId>authorization-client</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jayway.jsonpath</groupId>
|
||||||
|
<artifactId>json-path</artifactId>
|
||||||
|
<version>2.4.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- TEST -->
|
<!-- TEST -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -9,6 +9,9 @@ import lombok.*;
|
||||||
@ToString
|
@ToString
|
||||||
public class Access {
|
public class Access {
|
||||||
|
|
||||||
|
public static final String POLICY="policy";
|
||||||
|
public static final String LICENSE="license";
|
||||||
|
|
||||||
private AccessPolicy policy;
|
private AccessPolicy policy;
|
||||||
private String license;
|
private String license;
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,10 @@ import java.time.LocalDateTime;
|
||||||
@ToString
|
@ToString
|
||||||
public class AccountingInfo {
|
public class AccountingInfo {
|
||||||
|
|
||||||
|
public static final String USER="user";
|
||||||
|
public static final String CONTEXT="context";
|
||||||
|
public static final String INSTANT="instant";
|
||||||
|
|
||||||
private User user;
|
private User user;
|
||||||
private Context context;
|
private Context context;
|
||||||
private LocalDateTime instant;
|
private LocalDateTime instant;
|
||||||
|
|
|
@ -8,6 +8,9 @@ import lombok.*;
|
||||||
@Setter
|
@Setter
|
||||||
@ToString
|
@ToString
|
||||||
public class Context {
|
public class Context {
|
||||||
|
public static final String ID="id";
|
||||||
|
public static final String NAME = "name";
|
||||||
|
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
|
@ -11,7 +11,13 @@ import java.util.List;
|
||||||
@ToString
|
@ToString
|
||||||
public class LifecycleInformation {
|
public class LifecycleInformation {
|
||||||
|
|
||||||
public enum Status{
|
public static final String PHASE="phase";
|
||||||
|
public static final String LAST_OPERATION_STATUS="lastOperationStatus";
|
||||||
|
public static final String ERROR_MESSAGES="errorMessages";
|
||||||
|
public static final String WARNING_MESSAGES="warningMEssages";
|
||||||
|
public static final String CHILDREN="children";
|
||||||
|
|
||||||
|
public static enum Status{
|
||||||
PASSED,ERROR,WARNING
|
PASSED,ERROR,WARNING
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,17 +11,27 @@ import org.bson.Document;
|
||||||
@Setter
|
@Setter
|
||||||
@ToString
|
@ToString
|
||||||
public class ProfiledDocument {
|
public class ProfiledDocument {
|
||||||
|
|
||||||
|
public static final String _ID="_id";
|
||||||
|
public static final String VERSION="version";
|
||||||
|
public static final String INFO="info";
|
||||||
|
public static final String PROFILE_ID="profileID";
|
||||||
|
public static final String PROFILE_VERSION="profileVersion";
|
||||||
|
public static final String LIFECYCLE_INFORMATION="lifecycleInformation";
|
||||||
|
public static final String RELATIONSHIPS="relationships";
|
||||||
|
public static final String SPATIAL_REFERENCE="spatialReference";
|
||||||
|
public static final String TEMPORAL_REFERENCE="temporalReference";
|
||||||
|
public static final String THE_DOCUMENT="theDocument";
|
||||||
|
|
||||||
// CORE METADATA
|
// CORE METADATA
|
||||||
|
|
||||||
private String _id;
|
private String _id;
|
||||||
private ComparableVersion version;
|
private ComparableVersion version;
|
||||||
|
|
||||||
// Publication Info
|
// Publication Info
|
||||||
|
|
||||||
private PublicationInfo info;
|
private PublicationInfo info;
|
||||||
|
|
||||||
// Profile reference
|
// Profile reference
|
||||||
|
|
||||||
private String profileID;
|
private String profileID;
|
||||||
private ComparableVersion profileVersion;
|
private ComparableVersion profileVersion;
|
||||||
|
|
||||||
|
@ -35,4 +45,8 @@ public class ProfiledDocument {
|
||||||
|
|
||||||
private Document theDocument;
|
private Document theDocument;
|
||||||
|
|
||||||
|
public void setDefaults(){
|
||||||
|
// TODO APPLY DEFAULTS ??
|
||||||
|
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,11 @@ import org.gcube.application.geoportal.common.model.legacy.AccessPolicy;
|
||||||
@ToString
|
@ToString
|
||||||
public class PublicationInfo {
|
public class PublicationInfo {
|
||||||
|
|
||||||
|
public static final String CREATION_INFO="creationInfo";
|
||||||
|
public static final String LAST_EDIT_INFO="lastEditInfo";
|
||||||
|
public static final String ACCESS = "access";
|
||||||
|
|
||||||
|
|
||||||
private AccountingInfo creationInfo;
|
private AccountingInfo creationInfo;
|
||||||
private AccountingInfo lastEditInfo;
|
private AccountingInfo lastEditInfo;
|
||||||
private Access access;
|
private Access access;
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package org.gcube.application.geoportal.common.model.document;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@ToString
|
||||||
|
public class RegisteredFile {
|
||||||
|
|
||||||
|
public static String MIMETYPE="mimetype";
|
||||||
|
public static String STORAGE_ID="storageID";
|
||||||
|
public static String LINK="link";
|
||||||
|
public static String NAME="NAME";
|
||||||
|
|
||||||
|
private String mimetype;
|
||||||
|
private String storageID;
|
||||||
|
private String link;
|
||||||
|
private String name;
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package org.gcube.application.geoportal.common.model.document;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import org.bson.Document;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@ToString
|
||||||
|
public class RegisteredFileSet {
|
||||||
|
|
||||||
|
public static final String CREATION_INFO="creationInfo";
|
||||||
|
public static final String ACCESS="access";
|
||||||
|
public static final String FOLDER_ID="folderID";
|
||||||
|
public static final String PAYLOADS="payloads";
|
||||||
|
|
||||||
|
private AccountingInfo creationInfo;
|
||||||
|
private Access access;
|
||||||
|
private String folderID;
|
||||||
|
|
||||||
|
private List<RegisteredFile> payloads;
|
||||||
|
}
|
|
@ -9,6 +9,9 @@ import lombok.*;
|
||||||
@ToString
|
@ToString
|
||||||
public class Relationship {
|
public class Relationship {
|
||||||
|
|
||||||
|
public static final String RELATIONSHIP_NAME="relationshipName";
|
||||||
|
public static final String TARGET_ID="targetID";
|
||||||
|
|
||||||
private String relationshipName;
|
private String relationshipName;
|
||||||
private String targetID;
|
private String targetID;
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,9 @@ import lombok.*;
|
||||||
@ToString
|
@ToString
|
||||||
public class User {
|
public class User {
|
||||||
|
|
||||||
|
public static final String USERNAME="username";
|
||||||
|
|
||||||
|
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
package org.gcube.application.geoportal.common.utils;
|
||||||
|
|
||||||
|
import com.jayway.jsonpath.Configuration;
|
||||||
|
import com.jayway.jsonpath.DocumentContext;
|
||||||
|
import com.jayway.jsonpath.JsonPath;
|
||||||
|
import com.jayway.jsonpath.Option;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class JSONPathWrapper {
|
||||||
|
|
||||||
|
public static Configuration JSON_PATH_ALWAYS_LIST_CONFIG=null;
|
||||||
|
public static Configuration JSON_PATH_PATHS_CONFIGURATION=null;
|
||||||
|
|
||||||
|
static {
|
||||||
|
JSON_PATH_ALWAYS_LIST_CONFIG= Configuration.builder().options(Option.ALWAYS_RETURN_LIST,Option.SUPPRESS_EXCEPTIONS,Option.DEFAULT_PATH_LEAF_TO_NULL).build();
|
||||||
|
JSON_PATH_PATHS_CONFIGURATION = Configuration.builder().options(Option.AS_PATH_LIST,Option.SUPPRESS_EXCEPTIONS,Option.DEFAULT_PATH_LEAF_TO_NULL).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
DocumentContext ctx=null;
|
||||||
|
|
||||||
|
public JSONPathWrapper(String json) {
|
||||||
|
ctx=JsonPath.using(JSON_PATH_ALWAYS_LIST_CONFIG).parse(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Object> getByPath(String path){
|
||||||
|
throw new RuntimeException("TO IMPLEMENT");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -46,6 +46,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
|
|
||||||
|
|
||||||
public ProfiledMongoManager(String profileId) throws ConfigurationException {
|
public ProfiledMongoManager(String profileId) throws ConfigurationException {
|
||||||
|
// Check Profile ID
|
||||||
log.info("Loading profile ID {} ",profileId);
|
log.info("Loading profile ID {} ",profileId);
|
||||||
if(profileId==null) throw new InvalidParameterException("Profile ID cannot be null");
|
if(profileId==null) throw new InvalidParameterException("Profile ID cannot be null");
|
||||||
Map<String,Profile> profiles=ImplementationProvider.get().getProfiles().getObject();
|
Map<String,Profile> profiles=ImplementationProvider.get().getProfiles().getObject();
|
||||||
|
@ -57,20 +58,16 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
log.debug("Loaded Profile {} ",profile);
|
log.debug("Loaded Profile {} ",profile);
|
||||||
|
|
||||||
|
|
||||||
String toUseDB=super.client.getConnection().getDatabase();
|
|
||||||
log.info("Connecting to DB {} ",toUseDB);
|
|
||||||
|
|
||||||
// TODO MAP OF DATABASES?
|
|
||||||
db=client.getTheClient().getDatabase(toUseDB);
|
|
||||||
|
|
||||||
//Getting Lifecycle Manager
|
//Getting Lifecycle Manager declaration from Profile
|
||||||
List<HandlerDeclaration> handlerDeclarations= profile.getHandlersMap().get(PluginDescriptor.BaseTypes.LIFECYCLE_MANAGER);
|
List<HandlerDeclaration> handlerDeclarations= profile.getHandlersMap().get(PluginDescriptor.BaseTypes.LIFECYCLE_MANAGER);
|
||||||
if(handlerDeclarations==null || handlerDeclarations.isEmpty()) throw new ConfigurationException("No Lifecycle Handler defined for profile ID "+profileId);
|
if(handlerDeclarations==null || handlerDeclarations.isEmpty()) throw new ConfigurationException("No Lifecycle Handler defined for profile ID "+profileId);
|
||||||
if(handlerDeclarations.size()>1) throw new ConfigurationException("Too many Lifecycle Handlers defined ("+handlerDeclarations+") in profile ID "+profileId);
|
if(handlerDeclarations.size()>1) throw new ConfigurationException("Too many Lifecycle Handlers defined ("+handlerDeclarations+") in profile ID "+profileId);
|
||||||
|
|
||||||
|
|
||||||
HandlerDeclaration lcHandlerDeclaration=handlerDeclarations.get(0);
|
HandlerDeclaration lcHandlerDeclaration=handlerDeclarations.get(0);
|
||||||
|
|
||||||
|
// Loading Lifecycle Manager
|
||||||
log.debug("Looking for handler {} ",lcHandlerDeclaration);
|
log.debug("Looking for handler {} ",lcHandlerDeclaration);
|
||||||
try{
|
try{
|
||||||
lfManager=(LifecycleManager) ImplementationProvider.get().getPluginManager().getObject().get(lcHandlerDeclaration.getId());
|
lfManager=(LifecycleManager) ImplementationProvider.get().getPluginManager().getObject().get(lcHandlerDeclaration.getId());
|
||||||
|
@ -79,6 +76,13 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
throw new ConfigurationException("Unable to use "+lcHandlerDeclaration.getId()+" as Lifecycle Manager");
|
throw new ConfigurationException("Unable to use "+lcHandlerDeclaration.getId()+" as Lifecycle Manager");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Connect to DB
|
||||||
|
String toUseDB=super.client.getConnection().getDatabase();
|
||||||
|
log.info("Connecting to DB {} ",toUseDB);
|
||||||
|
|
||||||
|
// TODO MAP OF DATABASES?
|
||||||
|
db=client.getTheClient().getDatabase(toUseDB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,6 +106,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
|
|
||||||
private String getCollectionName(){
|
private String getCollectionName(){
|
||||||
// TODO Profile can directly specify, use ID only as default
|
// TODO Profile can directly specify, use ID only as default
|
||||||
|
|
||||||
return profile.getId();
|
return profile.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue