diff --git a/CHANGELOG.md b/CHANGELOG.md
index f4c46d2..3651766 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,25 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for org.gcube.application.geoportal-common
+# [v1.0.5] - 2020-12-9
+Mongo Id in record
+Mongo Concessioni interface
+Added Files.fixFileNAme
+ValidationReport as field
+Updated Model (#20357)
+
+
+# [v1.0.4-SNAPSHOT] - 2020-12-9
+Projects Rest Interface
+TempFile support
+
+# [v1.0.3] - 2020-12-4
+Project model update
+
+
+# [v1.0.2-SNAPSHOT] - 2020-12-4
+Model update
+
## [v1.0.1] - 2020-11-11
Model update
diff --git a/pom.xml b/pom.xml
index a5e4ec2..52d7cdd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
org.gcube.application
geoportal-common
- 1.0.1
+ 1.0.5
Geoportal Common
@@ -51,9 +51,12 @@
1.14.8
-
-
-
+
+
+ org.gcube.common
+ authorization-client
+
+
@@ -62,22 +65,34 @@
test
4.11
-
-
+
+
org.glassfish.jersey.media
jersey-media-json-jackson
-
-
+
+
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
2.8.8
-
+
+
+
+ org.gcube.contentmanagement
+ storage-manager-core
+ [2.0.0, 3.0.0)
+
+
+ org.gcube.contentmanagement
+ storage-manager-wrapper
+ [2.0.0, 3.0.0)
+
+
ch.qos.logback
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/legacy/AssociatedContent.java b/src/main/java/org/gcube/application/geoportal/common/model/legacy/AssociatedContent.java
index b4a9b5f..627d244 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/legacy/AssociatedContent.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/legacy/AssociatedContent.java
@@ -19,7 +19,7 @@ import lombok.Setter;
public abstract class AssociatedContent {
-
+ private String mongo_id;
private long id;
private AccessPolicy policy;
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/legacy/Concessione.java b/src/main/java/org/gcube/application/geoportal/common/model/legacy/Concessione.java
index 38f0b8e..b99f9db 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/legacy/Concessione.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/legacy/Concessione.java
@@ -87,6 +87,107 @@ public class Concessione extends Record{
}
+ public static class Paths{
+ public final static String RELAZIONE="relazione";
+ public final static String POSIZIONAMENTO="posizionamentoScavo";
+ public final static String PIANTE="piante";
+ public final static String IMMAGINI="immagini";
+
+ public static final String MONGO_ID="mongo_id";
+
+ public final static String piantaByIndex(int index) {return makeByIndex(PIANTE,index);};
+ public final static String imgByIndex(int index) {return makeByIndex(IMMAGINI,index);};
+
+ public final static String piantaById(String id) {return makeByStringField(PIANTE, MONGO_ID, id);};
+ public final static String imgById(String id) {return makeByStringField(IMMAGINI, MONGO_ID, id);};
+
+
+
+ private static String makeByIndex(String base,int value) {return String.format("%1$s[%2$d]",base,value);}
+ private static String makeByStringField(String base,String field,String value)
+ {return String.format("%1$s.%2$s:\"%3$s\"",base,field,value);}
+ }
+
+ @Override
+ public AssociatedContent getContentByPath(String path) {
+ switch(path) {
+ case Paths.RELAZIONE : return getRelazioneScavo();
+ case Paths.POSIZIONAMENTO : return getPosizionamentoScavo();
+ }
+ if(path.matches("\\w+\\[\\d+\\]")) {
+ // Array section
+ String field=path.substring(0,path.lastIndexOf("["));
+ Integer index=Integer.parseInt(path.substring(path.lastIndexOf("[")+1,path.lastIndexOf("]")));
+ List extends AssociatedContent> list=null;
+ switch (field) {
+ case Paths.IMMAGINI : list = immaginiRappresentative; break;
+ case Paths.PIANTE : list = pianteFineScavo; break;
+ }
+ return getByIndex(list,index);
+
+ }
+ if(path.matches("\\w+\\.\\w+\\s*\\:\\s*\\\"\\w+\\\"")) {
+ // Map section
+ String field=path.substring(0,path.lastIndexOf("."));
+ String subField=path.substring(path.indexOf(".")+1,path.lastIndexOf(":")).trim();
+ String value=path.substring(path.indexOf("\"")+1,path.lastIndexOf("\""));
+ List extends AssociatedContent> list=null;
+ switch (field) {
+ case Paths.IMMAGINI : list = immaginiRappresentative; break;
+ case Paths.PIANTE : list = pianteFineScavo; break;
+ }
+ return getByFieldValue(list, subField, value);
+ }
+ return null;
+ }
+
+ private static AssociatedContent getByIndex(List extends AssociatedContent> list, int index) {
+ if(list == null )return null;
+ return list.get(index);
+ }
+
+// NB only mongo_id is supported in this impl.
+ private static AssociatedContent getByFieldValue(List extends AssociatedContent> list, String field, Object value) {
+ for(AssociatedContent c: list) {
+ switch(field) {
+ case Paths.MONGO_ID : {
+ if(c.getMongo_id()!=null&&c.getMongo_id().equals(value))
+ return c;
+ }
+ }
+ }
+ return null;
+ }
+
+
+ @Override
+ public void setAtPath(AssociatedContent toSet, String path) {
+ switch(path) {
+ case Paths.RELAZIONE : {
+ setRelazioneScavo((RelazioneScavo) toSet);
+ break;
+ }
+ case Paths.POSIZIONAMENTO : {
+ setRelazioneScavo((RelazioneScavo) toSet);
+ break;
+ }
+ case Paths.PIANTE : {
+ if(pianteFineScavo==null)pianteFineScavo=new ArrayList();
+ pianteFineScavo.add((LayerConcessione) toSet);
+ break;
+ }
+ case Paths.IMMAGINI: {
+ if(immaginiRappresentative==null)immaginiRappresentative=new ArrayList();
+ pianteFineScavo.add((LayerConcessione) toSet);
+ break;
+ }
+
+ //TODO MATCH if()case Paths.PIANTa : return
+ //TODO MATCH if()case Paths.Img : return
+ }
+
+ }
+
@Override
public ValidationReport validate() {
ValidationReport validator= super.validate();
@@ -448,5 +549,4 @@ public class Concessione extends Record{
}
-
}
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/legacy/LayerConcessione.java b/src/main/java/org/gcube/application/geoportal/common/model/legacy/LayerConcessione.java
index cc8331b..fa3362a 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/legacy/LayerConcessione.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/legacy/LayerConcessione.java
@@ -22,7 +22,7 @@ public class LayerConcessione extends SDILayerDescriptor{
//layer
private String layerName;
private String wmsLink;
-
+ private String workspace;
//1.Identificazione
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/legacy/Record.java b/src/main/java/org/gcube/application/geoportal/common/model/legacy/Record.java
index 9a55f07..4efecac 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/legacy/Record.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/legacy/Record.java
@@ -17,6 +17,7 @@ import lombok.ToString;
public abstract class Record {
+ private String mongo_id;
//Generic Info
private long id;
@@ -41,7 +42,7 @@ public abstract class Record {
-
+ private ValidationReport report;
public ValidationReport validate() {
@@ -50,8 +51,9 @@ public abstract class Record {
validator.checkMandatory(getRecordType(), "Record Type");
validator.checkMandatory(getNome(), "Nome");
-
- return validator;
+ setReport(validator);
+
+ return getReport();
}
public void setDefaults() {
@@ -65,6 +67,8 @@ public abstract class Record {
setLicenzaID(ConstraintCheck.defaultFor(getLicenzaID(),"CC-BY").evaluate());
}
-
+
+ public abstract AssociatedContent getContentByPath(String path);
+ public abstract void setAtPath(AssociatedContent toSet,String path);
}
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/legacy/RelazioneScavo.java b/src/main/java/org/gcube/application/geoportal/common/model/legacy/RelazioneScavo.java
index e9d4034..f813a5d 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/legacy/RelazioneScavo.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/legacy/RelazioneScavo.java
@@ -16,7 +16,9 @@ public class RelazioneScavo extends AssociatedContent {
- private String abstractSection;
+// private String abstractSection;
+ private String abstractIta;
+ private String abstractEng;
private List responsabili;
private List soggetto;
@@ -36,7 +38,7 @@ public class RelazioneScavo extends AssociatedContent {
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
- result = prime * result + ((abstractSection == null) ? 0 : abstractSection.hashCode());
+// result = prime * result + ((abstractSection == null) ? 0 : abstractSection.hashCode());
// result = prime * result + ((responsabili == null) ? 0 : responsabili.hashCode());
result = prime * result + CollectionsUtils.hashCode(responsabili);
// result = prime * result + ((soggetto == null) ? 0 : soggetto.hashCode());
@@ -53,11 +55,11 @@ public class RelazioneScavo extends AssociatedContent {
if (getClass() != obj.getClass())
return false;
RelazioneScavo other = (RelazioneScavo) obj;
- if (abstractSection == null) {
- if (other.abstractSection != null)
- return false;
- } else if (!abstractSection.equals(other.abstractSection))
- return false;
+// if (abstractSection == null) {
+// if (other.abstractSection != null)
+// return false;
+// } else if (!abstractSection.equals(other.abstractSection))
+// return false;
// if (responsabili == null) {
// if (other.responsabili != null)
// return false;
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/legacy/SDILayerDescriptor.java b/src/main/java/org/gcube/application/geoportal/common/model/legacy/SDILayerDescriptor.java
index 716bf7c..c3af358 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/legacy/SDILayerDescriptor.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/legacy/SDILayerDescriptor.java
@@ -18,5 +18,8 @@ public abstract class SDILayerDescriptor extends AssociatedContent{
public abstract String getWmsLink();
public abstract void setWmsLink(String wmsLink);
-
+ public abstract void setWorkspace(String workspace);
+ public abstract String getWorkspace();
+ public abstract BBOX getBbox();
+ public abstract void setBbox(BBOX toSet);
}
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/legacy/report/ValidationReport.java b/src/main/java/org/gcube/application/geoportal/common/model/legacy/report/ValidationReport.java
index 252c649..ed91409 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/legacy/report/ValidationReport.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/legacy/report/ValidationReport.java
@@ -5,11 +5,19 @@ import java.util.ArrayList;
import java.util.List;
import lombok.Data;
+import lombok.NoArgsConstructor;
@Data
+@NoArgsConstructor
public class ValidationReport implements Serializable{
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3629142756787381094L;
+
+
public static enum ValidationStatus{
PASSED, ERROR, WARNING
}
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/project/Project.java b/src/main/java/org/gcube/application/geoportal/common/model/project/Project.java
index fbb0a66..c1801f8 100644
--- a/src/main/java/org/gcube/application/geoportal/common/model/project/Project.java
+++ b/src/main/java/org/gcube/application/geoportal/common/model/project/Project.java
@@ -31,17 +31,13 @@ public class Project {
*
*/
-
- public static enum Status{
- VALID,INVALID,PUBLISHED
- }
private String _id;
private String profile_id;
- private PublicationDetails publication;
private Status status;
- private BasicJSONObject document;
+ private Object document;
private Centroid centroid;
+ private PublicationDetails publication;
-
+ private String json;
}
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/project/Status.java b/src/main/java/org/gcube/application/geoportal/common/model/project/Status.java
new file mode 100644
index 0000000..0783b0a
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/model/project/Status.java
@@ -0,0 +1,11 @@
+package org.gcube.application.geoportal.common.model.project;
+
+import java.util.List;
+
+public class Status {
+
+
+ private StatusPhase phase;
+ private List messages;
+
+}
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/project/StatusPhase.java b/src/main/java/org/gcube/application/geoportal/common/model/project/StatusPhase.java
new file mode 100644
index 0000000..522532c
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/model/project/StatusPhase.java
@@ -0,0 +1,13 @@
+package org.gcube.application.geoportal.common.model.project;
+
+public enum StatusPhase {
+
+ DRAFT,
+ UNDER_VALIDATION,
+ INVALID,
+ VALID,
+ UNDER_PUBLICATION,
+ PUBLICATION_ERROR,
+ PUBLISHED
+
+}
diff --git a/src/main/java/org/gcube/application/geoportal/common/model/project/StoredFile.java b/src/main/java/org/gcube/application/geoportal/common/model/project/StoredFile.java
new file mode 100644
index 0000000..1309362
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/model/project/StoredFile.java
@@ -0,0 +1,4 @@
+package org.gcube.application.geoportal.common.model.project;
+
+
+
diff --git a/src/main/java/org/gcube/application/geoportal/common/rest/AddSectionToConcessioneRequest.java b/src/main/java/org/gcube/application/geoportal/common/rest/AddSectionToConcessioneRequest.java
index aa2d637..b935f69 100644
--- a/src/main/java/org/gcube/application/geoportal/common/rest/AddSectionToConcessioneRequest.java
+++ b/src/main/java/org/gcube/application/geoportal/common/rest/AddSectionToConcessioneRequest.java
@@ -4,16 +4,17 @@ import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
-import org.gcube.application.geoportal.common.model.legacy.AssociatedContent;
-import org.gcube.application.geoportal.common.model.legacy.InputStreamDescriptor;
-
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
@XmlRootElement
@Data
+@AllArgsConstructor
+@NoArgsConstructor
public class AddSectionToConcessioneRequest {
- private AssociatedContent toRegister;
- private List streams;
+ private String destinationPath;
+ private List streams;
}
diff --git a/src/main/java/org/gcube/application/geoportal/common/rest/InterfaceConstants.java b/src/main/java/org/gcube/application/geoportal/common/rest/InterfaceConstants.java
index 9e3b01a..de8ff54 100644
--- a/src/main/java/org/gcube/application/geoportal/common/rest/InterfaceConstants.java
+++ b/src/main/java/org/gcube/application/geoportal/common/rest/InterfaceConstants.java
@@ -15,6 +15,12 @@ public class InterfaceConstants {
public static final String PROJECTS="projects";
public static final String CONCESSIONI="concessioni";
+ public static final String MONGO_CONCESSIONI="mongo-concessioni";
+
+
+ public static final String PUBLISH_PATH="publish";
+ public static final String REGISTER_FILES_PATH="registerFiles";
+
}
public static final class Parameters{
diff --git a/src/main/java/org/gcube/application/geoportal/common/rest/MongoConcessioni.java b/src/main/java/org/gcube/application/geoportal/common/rest/MongoConcessioni.java
new file mode 100644
index 0000000..16c8cce
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/rest/MongoConcessioni.java
@@ -0,0 +1,17 @@
+package org.gcube.application.geoportal.common.rest;
+
+import org.gcube.application.geoportal.common.model.legacy.Concessione;
+
+public interface MongoConcessioni {
+
+ public Concessione createNew(Concessione c) throws Exception;
+ public void deleteById(String id) throws Exception;
+ public Concessione getById(String id) throws Exception;
+ public Iterable getList()throws Exception;
+ public Concessione publish(String id) throws Exception;
+ public Concessione registerFile(String id, AddSectionToConcessioneRequest request) throws Exception;
+ public Concessione update(String id, String jsonUpdate) throws Exception;
+ public Concessione replace(Concessione replacement) throws Exception;
+
+
+}
diff --git a/src/main/java/org/gcube/application/geoportal/common/rest/ProjectsI.java b/src/main/java/org/gcube/application/geoportal/common/rest/ProjectsI.java
new file mode 100644
index 0000000..cc81111
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/rest/ProjectsI.java
@@ -0,0 +1,16 @@
+package org.gcube.application.geoportal.common.rest;
+
+import org.gcube.application.geoportal.common.model.project.Project;
+
+public interface ProjectsI {
+
+
+ public Iterable getAll() throws Exception;
+ public Iterable getByProfile(String profileId) throws Exception;
+ public Project getById(String profileId,String id) throws Exception;
+ public Iterable getByFilter(String filter)throws Exception;
+ public Iterable getByFilter(String filter, String profileId)throws Exception;
+ public Project registrNew(String profileId, String jsonDocument)throws Exception;
+ public Project update(String profileId, String projectId,String jsonDocument) throws Exception;
+ public void deleteById(String profileId, String projectId)throws Exception;
+}
diff --git a/src/main/java/org/gcube/application/geoportal/common/rest/TempFile.java b/src/main/java/org/gcube/application/geoportal/common/rest/TempFile.java
new file mode 100644
index 0000000..3477b5c
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/rest/TempFile.java
@@ -0,0 +1,15 @@
+package org.gcube.application.geoportal.common.rest;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TempFile {
+
+ private String id;
+ private String filename;
+
+}
diff --git a/src/main/java/org/gcube/application/geoportal/common/utils/ContextUtils.java b/src/main/java/org/gcube/application/geoportal/common/utils/ContextUtils.java
new file mode 100644
index 0000000..9984053
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/utils/ContextUtils.java
@@ -0,0 +1,41 @@
+package org.gcube.application.geoportal.common.utils;
+
+import static org.gcube.common.authorization.client.Constants.authorizationService;
+
+import org.gcube.common.authorization.library.AuthorizationEntry;
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+import org.gcube.common.scope.api.ScopeProvider;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class ContextUtils {
+
+
+ public static String getCurrentScope(){
+ try{
+ String token=SecurityTokenProvider.instance.get();
+ log.debug("Token is : "+token);
+ if(token==null) throw new Exception("Security Token is null");
+ AuthorizationEntry entry = authorizationService().get(token);
+ return entry.getContext();
+ }catch(Exception e ){
+ log.debug("Unable to resolve token, checking scope provider..",e);
+ return ScopeProvider.instance.get();
+ }
+ }
+
+
+ public static String getCurrentCaller(){
+ try{
+ String token=SecurityTokenProvider.instance.get();
+ log.debug("Token is : "+token);
+ if(token==null) throw new Exception("Security Token is null");
+ AuthorizationEntry entry = authorizationService().get(token);
+ return entry.getClientInfo().getId();
+ }catch(Exception e ){
+ log.debug("Unable to resolve token, checking scope provider..",e);
+ return "Unidentified data-transfer user";
+ }
+ }
+}
diff --git a/src/main/java/org/gcube/application/geoportal/common/utils/Files.java b/src/main/java/org/gcube/application/geoportal/common/utils/Files.java
index 7c99a38..b730201 100644
--- a/src/main/java/org/gcube/application/geoportal/common/utils/Files.java
+++ b/src/main/java/org/gcube/application/geoportal/common/utils/Files.java
@@ -37,5 +37,12 @@ public class Files {
}
-
+ public static String fixFilename(String toFix) {
+ if(toFix.contains(".")) {
+ String prefix=toFix.substring(toFix.lastIndexOf("."));
+ toFix=toFix.substring(0,toFix.lastIndexOf("."));
+ return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_")+prefix;
+ }
+ return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_");
+ }
}
diff --git a/src/main/java/org/gcube/application/geoportal/common/utils/StorageUtils.java b/src/main/java/org/gcube/application/geoportal/common/utils/StorageUtils.java
new file mode 100644
index 0000000..84ecb52
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportal/common/utils/StorageUtils.java
@@ -0,0 +1,55 @@
+package org.gcube.application.geoportal.common.utils;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.UUID;
+
+import org.gcube.application.geoportal.common.rest.InterfaceConstants;
+import org.gcube.application.geoportal.common.rest.TempFile;
+import org.gcube.contentmanagement.blobstorage.service.IClient;
+import org.gcube.contentmanagement.blobstorage.transport.backend.RemoteBackendException;
+import org.gcube.contentmanager.storageclient.wrapper.AccessType;
+import org.gcube.contentmanager.storageclient.wrapper.MemoryType;
+import org.gcube.contentmanager.storageclient.wrapper.StorageClient;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class StorageUtils {
+
+ public static final IClient getClient(){
+ return new StorageClient(InterfaceConstants.SERVICE_CLASS, InterfaceConstants.SERVICE_NAME, ContextUtils.getCurrentCaller(), AccessType.SHARED, MemoryType.VOLATILE).getClient();
+ }
+
+ private IClient client;
+ public StorageUtils() {
+ client=getClient();
+ }
+
+ //return Id
+ public TempFile putOntoStorage(InputStream source,String filename) throws RemoteBackendException, FileNotFoundException{
+ log.debug("Uploading source "+filename);
+ String id=client.put(true).LFile(source).RFile(getUniqueString());
+ return new TempFile(id,filename);
+ }
+
+ public static final boolean checkStorageId(String id){
+ return getClient().getHttpUrl().RFile(id)!=null;
+ }
+
+ public static final String getUrlById(String id){
+ IClient client=getClient();
+ log.debug("Id is "+id);
+ return client.getHttpUrl().RFile(id);
+ }
+
+ public static final void removeById(String id){
+ IClient client=getClient();
+ client.remove().RFile(id);
+ }
+
+
+ public static final String getUniqueString(){
+ return UUID.randomUUID().toString();
+ }
+}
diff --git a/src/test/java/org/gcube/application/geoportal/common/model/PathsTest.java b/src/test/java/org/gcube/application/geoportal/common/model/PathsTest.java
new file mode 100644
index 0000000..01b3295
--- /dev/null
+++ b/src/test/java/org/gcube/application/geoportal/common/model/PathsTest.java
@@ -0,0 +1,67 @@
+package org.gcube.application.geoportal.common.model;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.UUID;
+
+import org.gcube.application.geoportal.common.model.legacy.Concessione;
+import org.gcube.application.geoportal.common.model.legacy.Concessione.Paths;
+import org.gcube.application.geoportal.common.model.legacy.LayerConcessione;
+import org.gcube.application.geoportal.common.model.legacy.RelazioneScavo;
+import org.gcube.application.geoportal.common.model.legacy.UploadedImage;
+import org.junit.Test;
+
+
+public class PathsTest {
+
+
+ @Test
+ public void embeddedPaths() {
+ Concessione c=TestModel.prepareConcessione();
+ c=TestModel.setIds(c);
+
+
+
+ LayerConcessione p=(LayerConcessione) c.getContentByPath(Paths.POSIZIONAMENTO);
+ assertEquals(c.getPosizionamentoScavo(), p);
+
+ RelazioneScavo rel=(RelazioneScavo) c.getContentByPath(Paths.RELAZIONE);
+ assertEquals(c.getRelazioneScavo(), rel);
+
+ for(int i=0;i{l.setMongo_id(rnd());});
+ c.getImmaginiRappresentative().forEach((UploadedImage i)->{i.setMongo_id(rnd());});
+ return c;
+ }
+
+ public static Concessione prepareEmptyConcessione() {
+ Concessione concessione=new Concessione();
+
+ // Generic fields
+
+ // Concessione fields
+
+
+
+
+ concessione.setNome("MONGO Italia, forse, ma su ");
+ concessione.setIntroduzione("This is my MONGO project");
+ concessione.setDescrizioneContenuto("It contains this and that");
+
+ concessione.setAuthors(Arrays.asList(new String[] {"Some one","Some, oneelse"}));
+
+ concessione.setContributore("Contrib 1");
+ concessione.setTitolari(Arrays.asList(new String[] {"Some one","Some, oneelse"}));
+ concessione.setResponsabile("Someone");
+ concessione.setEditore("Editore");
+
+ concessione.setFontiFinanziamento(Arrays.asList(new String[] {"Big pharma","Pentagon"}));
+
+
+ concessione.setSoggetto(Arrays.asList(new String[] {"Research Excavation","Archeology"}));
+
+
+ concessione.setDataInizioProgetto(LocalDateTime.now());
+ concessione.setDataFineProgetto(LocalDateTime.now());
+
+ concessione.setLicenzaID("CC-BY");
+
+ concessione.setTitolareLicenza(Arrays.asList(new String[] {"Qualcun altro"}));
+ concessione.setTitolareCopyright(Arrays.asList(new String[] {"Chiedilo in giro"}));
+
+ concessione.setParoleChiaveLibere(Arrays.asList(new String[] {"Robba","Stuff"}));
+ concessione.setParoleChiaveICCD(Arrays.asList(new String[] {"vattelapesca","somthing something"}));
+
+
+ concessione.setCentroidLat(43.0); //N-S
+ concessione.setCentroidLong(9.0); //E-W
+
+ return concessione;
+ }
+
+ public static Concessione prepareConcessione() {
+
+ Concessione concessione=prepareEmptyConcessione();
+
+
+
+ // Attachments
+
+ // Relazione scavo
+ RelazioneScavo relScavo=new RelazioneScavo();
+
+ relScavo.setAbstractEng("simple abstract section");
+ relScavo.setResponsabili(concessione.getAuthors());
+
+ concessione.setRelazioneScavo(relScavo);
+ //Immagini rappresentative
+ ArrayList imgs=new ArrayList<>();
+ for(int i=0;i<5;i++) {
+ UploadedImage img=new UploadedImage();
+ img.setTitolo("My image number "+i);
+ img.setDidascalia("You can see my image number "+i);
+ img.setFormat("TIFF");
+ img.setCreationTime(LocalDateTime.now());
+ img.setResponsabili(concessione.getAuthors());
+ imgs.add(img);
+
+ }
+ concessione.setImmaginiRappresentative(imgs);
+ //Posizionamento
+ LayerConcessione posizionamento=new LayerConcessione();
+ posizionamento.setValutazioneQualita("Secondo me si");
+ posizionamento.setMetodoRaccoltaDati("Fattobbene");
+ posizionamento.setScalaAcquisizione("1:10000");
+ posizionamento.setAuthors(concessione.getAuthors());
+ concessione.setPosizionamentoScavo(posizionamento);
+
+ // Piante fine scavo
+ ArrayList piante=new ArrayList();
+ for(int i=0;i<4;i++) {
+ LayerConcessione pianta=new LayerConcessione();
+ pianta.setValutazioneQualita("Secondo me si");
+ pianta.setMetodoRaccoltaDati("Fattobbene");
+ pianta.setScalaAcquisizione("1:10000");
+ pianta.setAuthors(concessione.getAuthors());
+ pianta.setPolicy(AccessPolicy.RESTRICTED);
+ piante.add(pianta);
+ }
+ concessione.setPianteFineScavo(piante);
+
+ return concessione;
+ }
+
+}