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