diff --git a/CHANGELOG.md b/CHANGELOG.md
index be61fca..e5e9824 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.1.0-SNAPSHOT] - 2021-01-29
+
+#### Enhancements
+
+[#20595] Porting common model
+
+
## [v1.0.0] - 2020-12-01
First release
diff --git a/pom.xml b/pom.xml
index db1475d..5fdeb0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
org.gcube.application
geoportal-data-common
- 1.0.0
+ 1.1.0-SNAPSHOT
GeoPortal Data Common is common library used by GUI components developed for GeoNA
@@ -65,6 +65,19 @@
provided
+
+ org.gcube.application
+ geoportal-client
+ [1.0.0, 2.0.0-SNAPSHOT)
+ compile
+
+
+ javax.servlet
+ servlet-api
+
+
+
+
org.gcube.portlets.user
gcube-url-shortener
diff --git a/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataViewModel.java b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataViewModel.java
new file mode 100644
index 0000000..232a3a8
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataViewModel.java
@@ -0,0 +1,499 @@
+package org.gcube.application.geoportalcommon;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.gcube.application.geoportal.common.model.legacy.AccessPolicy;
+import org.gcube.application.geoportal.common.model.legacy.BBOX;
+import org.gcube.application.geoportal.common.model.legacy.Concessione;
+import org.gcube.application.geoportal.common.model.legacy.LayerConcessione;
+import org.gcube.application.geoportal.common.model.legacy.OtherContent;
+import org.gcube.application.geoportal.common.model.legacy.PersistedContent;
+import org.gcube.application.geoportal.common.model.legacy.RelazioneScavo;
+import org.gcube.application.geoportal.common.model.legacy.UploadedImage;
+import org.gcube.application.geoportal.common.model.legacy.WorkspaceContent;
+import org.gcube.application.geoportalcommon.shared.gis.BoundsMap;
+import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
+import org.gcube.application.geoportalcommon.shared.products.content.OtherContentDV;
+import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
+import org.gcube.application.geoportalcommon.shared.products.model.AbstractRelazioneScavoDV;
+import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessioneDV;
+import org.gcube.application.geoportalcommon.shared.products.model.RelazioneScavoDV;
+import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV;
+import org.gcube.application.geoportalcommon.util.URLParserUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Class ConvertToGUIModel.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 2, 2020
+ */
+public class ConvertToDataViewModel {
+
+ private static final String NO_TIME = "T00:00";
+
+ /** The Constant LOG. */
+ private static final Logger LOG = LoggerFactory.getLogger(ConvertToDataViewModel.class);
+
+ public static final String DATE_FORMAT = "dd-MM-yyyy";
+
+ public static final String HOURS_MINUTES_SEPARATOR = ":";
+
+ public static final String TIME_FORMAT = "HH" + HOURS_MINUTES_SEPARATOR + "mm";
+
+
+ /**
+ * To concessione.
+ *
+ * @param concessione the concessione
+ * @return the concessione
+ * @throws Exception the exception
+ */
+ public static ConcessioneDV toConcessione(Concessione concessione) throws Exception {
+ LOG.debug("called toConcessione for: "+concessione);
+
+ if (concessione == null)
+ return null;
+
+ try {
+
+ ConcessioneDV theConcessione = new ConcessioneDV();
+ theConcessione.setPolicy(toPolicy(concessione.getPolicy()));
+ //theConcessione.setAuthors(concessione.getAuthors());
+ theConcessione.setCentroidLat(concessione.getCentroidLat());
+ theConcessione.setCentroidLong(concessione.getCentroidLong());
+ theConcessione.setContributore(concessione.getContributore());
+ theConcessione.setCreationTime(toDateFormatString(concessione.getCreationTime()));
+ theConcessione.setCreationUser(toUser(concessione.getCreationUser()));
+ theConcessione.setDataFineProgetto(toDateFormatString(concessione.getDataFineProgetto()));
+ theConcessione.setDataInizioProgetto(toDateFormatString(concessione.getDataInizioProgetto()));
+ theConcessione.setDescrizioneContenuto(concessione.getDescrizioneContenuto());
+ theConcessione.setEditore(concessione.getEditore());
+ theConcessione.setFontiFinanziamento(concessione.getFontiFinanziamento());
+ theConcessione.setId(concessione.getId());
+ theConcessione.setNome(concessione.getNome());
+
+ theConcessione.setIntroduzione(concessione.getIntroduzione());
+ theConcessione.setLastUpdateTime(toDateFormatString(concessione.getLastUpdateTime()));
+ theConcessione.setLastUpdateUser(toUser(concessione.getLastUpdateUser()));
+ theConcessione.setLicenzaID(concessione.getLicenzaID());
+ theConcessione.setNome(concessione.getNome());
+ theConcessione.setParoleChiaveICCD(concessione.getParoleChiaveICCD());
+ theConcessione.setParoleChiaveLibere(concessione.getParoleChiaveLibere());
+
+ theConcessione.setResponsabile(concessione.getResponsabile());
+ theConcessione.setRisorseCorrelate(concessione.getRisorseCorrelate());
+ theConcessione.setSoggetto(concessione.getSoggetto());
+ theConcessione.setTitolariCopyright(concessione.getTitolareCopyright());
+ theConcessione.setTitolariLicenza(concessione.getTitolareLicenza());
+ theConcessione.setTitolari(concessione.getTitolari());
+ theConcessione.setVersion(concessione.getVersion());
+
+ theConcessione.setRecordType(concessione.getRecordType().name());
+
+ theConcessione.setAbstractRelazioneScavo(toAbstractRelazioneScavo(concessione.getRelazioneScavo()));
+ theConcessione.setRelazioneScavo(toRelazioneScavo(concessione.getRelazioneScavo()));
+
+
+ if (concessione.getImmaginiRappresentative() != null) {
+ List uploadedImagesDV = new ArrayList(
+ concessione.getImmaginiRappresentative().size());
+ for (UploadedImage ui : concessione.getImmaginiRappresentative()) {
+ uploadedImagesDV.add(toUploadedImage(ui));
+ }
+ theConcessione.setImmaginiRappresentative(uploadedImagesDV);
+ }
+
+
+ if (concessione.getGenericContent() != null) {
+ List otherContentsDV = new ArrayList(
+ concessione.getGenericContent().size());
+ for (OtherContent gc : concessione.getGenericContent()) {
+ otherContentsDV.add(toOtherContentDV(gc));
+ }
+ theConcessione.setGenericContent(otherContentsDV);
+ }
+
+
+ if (concessione.getPianteFineScavo() != null) {
+ List piantaScavoDV = new ArrayList(
+ concessione.getPianteFineScavo().size());
+ for (LayerConcessione lc : concessione.getPianteFineScavo()) {
+ piantaScavoDV.add(toLayerConcessione(lc));
+ }
+ theConcessione.setPianteFineScavo(piantaScavoDV);
+ }
+
+ if (concessione.getPosizionamentoScavo() != null) {
+ LayerConcessioneDV thePosizScavo = toLayerConcessione(concessione.getPosizionamentoScavo());
+ theConcessione.setPosizionamentoScavo(thePosizScavo);
+ }
+
+
+ LOG.debug("Returning concessione: " + theConcessione);
+ return theConcessione;
+ }catch (Exception e) {
+ LOG.error("Error on converting concessione: "+concessione, e);
+ return null;
+ }
+
+ }
+
+ //TO AVOID SERIALIZATION ISSUE AGAINST GWT
+// public static List toListString(List orginList){
+// if(orginList==null)
+// return null;
+//
+// List destList = new ArrayList(orginList.size());
+// for (String orgValue : orginList) {
+// destList.add(orgValue);
+// }
+//
+// return destList;
+// }
+
+ /**
+ * To user.
+ *
+ * @param username the username
+ * @return the string
+ */
+ public static String toUser(String username) {
+
+ if(username==null)
+ return null;
+
+ return username;
+
+ }
+
+ /**
+ * To policy.
+ *
+ * @param policy the policy
+ * @return the string
+ */
+ public static String toPolicy(AccessPolicy policy) {
+
+ if(policy==null)
+ return null;
+
+ return policy.name();
+
+ }
+
+ /**
+ * To date format string.
+ *
+ * @param dateTime the date time
+ * @return the string
+ */
+ public static String toDateFormatString(LocalDateTime dateTime) {
+
+ if(dateTime==null)
+ return null;
+
+ String time = dateTime.toString();
+ DateTimeFormatter formatter = null;
+ try {
+ if(!time.endsWith(NO_TIME)) {
+ formatter = DateTimeFormatter.ofPattern(DATE_FORMAT + " " + TIME_FORMAT);
+ }else {
+ time = time.replace(NO_TIME, "");
+ formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
+ }
+ }catch (Exception e) {
+ LOG.warn("Parsing error: ",e);
+ }
+
+ try {
+ if(formatter!=null)
+ return dateTime.format(formatter);
+ }catch (Exception e) {
+ LOG.warn("Date format error: ",e);
+ }
+
+ return dateTime.toString();
+ }
+
+ /**
+ * To abstract relazione scavo.
+ *
+ * @param relazioneScavo the relazione scavo
+ * @return the abstract relazione scavo DV
+ */
+ public static AbstractRelazioneScavoDV toAbstractRelazioneScavo(RelazioneScavo relazioneScavo) {
+
+ if (relazioneScavo == null)
+ return null;
+
+ AbstractRelazioneScavoDV theRelazioneDiScavo = new AbstractRelazioneScavoDV();
+ theRelazioneDiScavo.setAbstractSectionIta(relazioneScavo.getAbstractIta());
+ theRelazioneDiScavo.setAbstractSectionEng(relazioneScavo.getAbstractEng());
+
+ theRelazioneDiScavo.setCreationTime(toDateFormatString(relazioneScavo.getCreationTime()));
+ theRelazioneDiScavo.setId(relazioneScavo.getId());
+ theRelazioneDiScavo.setLicenseID(relazioneScavo.getLicenseID());
+ theRelazioneDiScavo.setPolicy(toPolicy(relazioneScavo.getPolicy()));
+ //theRelazioneDiScavo.setRecord(recordDV);
+ theRelazioneDiScavo.setResponsabili(relazioneScavo.getResponsabili());
+ theRelazioneDiScavo.setSoggetto(relazioneScavo.getSoggetto());
+ theRelazioneDiScavo.setTitolo(relazioneScavo.getTitolo());
+
+ LOG.debug("Returning: " + theRelazioneDiScavo);
+ return theRelazioneDiScavo;
+ }
+
+ /**
+ * To relazione scavo.
+ *
+ * @param relazioneScavo the relazione scavo
+ * @return the relazione scavo data view
+ */
+ public static RelazioneScavoDV toRelazioneScavo(RelazioneScavo relazioneScavo) {
+
+ if (relazioneScavo == null)
+ return null;
+
+ RelazioneScavoDV theRelazioneDiScavo = new RelazioneScavoDV();
+ theRelazioneDiScavo.setCreationTime(toDateFormatString(relazioneScavo.getCreationTime()));
+ theRelazioneDiScavo.setId(relazioneScavo.getId());
+ theRelazioneDiScavo.setLicenseID(relazioneScavo.getLicenseID());
+ theRelazioneDiScavo.setPolicy(toPolicy(relazioneScavo.getPolicy()));
+ //theRelazioneDiScavo.setRecord(recordDV);
+ theRelazioneDiScavo.setResponsabili(relazioneScavo.getResponsabili());
+ theRelazioneDiScavo.setSoggetto(relazioneScavo.getSoggetto());
+ theRelazioneDiScavo.setTitolo(relazioneScavo.getTitolo());
+
+ List actContent = relazioneScavo.getActualContent();
+ if(actContent!=null && actContent.size()>0) {
+ List listWsContent = new ArrayList();
+
+ for (PersistedContent content : actContent) {
+ if(content!=null && content instanceof WorkspaceContent) {
+ listWsContent.add(toWorkspaceContent((WorkspaceContent)content));
+ }
+ }
+ theRelazioneDiScavo.setListWsContent(listWsContent);
+ }
+
+ LOG.debug("Returning: " + theRelazioneDiScavo);
+ return theRelazioneDiScavo;
+ }
+
+ /**
+ * To uploaded image.
+ *
+ * @param uploadedImage the uploaded image
+ * @return the uploaded image data-view
+ */
+ public static UploadedImageDV toUploadedImage(UploadedImage uploadedImage) {
+
+ if (uploadedImage == null)
+ return null;
+
+ UploadedImageDV theUploadedImageDV = new UploadedImageDV();
+ theUploadedImageDV.setCreationTime(toDateFormatString(uploadedImage.getCreationTime()));
+ theUploadedImageDV.setDidascalia(uploadedImage.getDidascalia());
+ theUploadedImageDV.setFormat(uploadedImage.getFormat());
+ theUploadedImageDV.setId(uploadedImage.getId());
+ theUploadedImageDV.setLicenseID(uploadedImage.getLicenseID());
+ theUploadedImageDV.setPolicy(toPolicy(uploadedImage.getPolicy()));
+ //theUploadedImageDV.setRecord(recordDV);
+ theUploadedImageDV.setResponsabili(uploadedImage.getResponsabili());
+ theUploadedImageDV.setSoggetto(uploadedImage.getSoggetto());
+ theUploadedImageDV.setTitolo(uploadedImage.getTitolo());
+
+ List actContent = uploadedImage.getActualContent();
+ if(actContent!=null && actContent.size()>0) {
+ List listWsContent = new ArrayList();
+
+ for (PersistedContent content : actContent) {
+ if(content!=null && content instanceof WorkspaceContent) {
+ listWsContent.add(toWorkspaceContent((WorkspaceContent)content));
+ }
+ }
+ theUploadedImageDV.setListWsContent(listWsContent);
+ }
+
+ LOG.debug("Returning: " + theUploadedImageDV);
+ return theUploadedImageDV;
+ }
+
+
+ /**
+ * To workspace content.
+ *
+ * @param wContent the w content
+ * @return the workspace content DV
+ */
+ public static WorkspaceContentDV toWorkspaceContent(WorkspaceContent wContent){
+ if (wContent == null)
+ return null;
+
+ WorkspaceContentDV theWSDV = new WorkspaceContentDV();
+ theWSDV.setLink(wContent.getLink());
+ theWSDV.setMimetype(wContent.getMimetype());
+ theWSDV.setStorageID(wContent.getStorageID());
+ theWSDV.setId(wContent.getId());
+
+ return theWSDV;
+ }
+
+ /**
+ * To layer concessione.
+ *
+ * @param layerConcessione the layer concessione
+ * @return the layer concessione data view
+ */
+ public static LayerConcessioneDV toLayerConcessione(LayerConcessione layerConcessione) {
+
+ if (layerConcessione == null)
+ return null;
+
+ LOG.debug("Converting: "+layerConcessione);
+ LayerConcessioneDV theLayerConessione = new LayerConcessioneDV();
+ theLayerConessione.setAbstractSection(layerConcessione.getAbstractSection());
+
+ String wmsLink = layerConcessione.getWmsLink();
+ String layerName = null;
+ BoundsMap bounds = null;
+
+ //reading layer name from wmsLink
+ //string bbox
+ if(wmsLink!=null) {
+ layerName = URLParserUtil.extractValueOfParameterFromURL("layers", wmsLink);
+ String bbox = URLParserUtil.extractValueOfParameterFromURL("bbox", wmsLink);
+ String wmsVersion = URLParserUtil.extractValueOfParameterFromURL("version", wmsLink);
+ bounds = toBoundMap(wmsVersion, bbox, ",");
+ LOG.debug("Built bounds from wmsLInk: "+bounds);
+ }
+
+ if(layerName!=null)
+ theLayerConessione.setLayerName(layerName);
+ else
+ theLayerConessione.setLayerName(layerConcessione.getLayerName());
+
+
+ theLayerConessione.setWmsLink(wmsLink);
+ theLayerConessione.setLayerID(layerConcessione.getLayerID());
+ theLayerConessione.setLayerUUID(layerConcessione.getLayerUUID());
+ theLayerConessione.setAuthors(layerConcessione.getAuthors());
+
+ if(bounds==null)
+ bounds = toBoundMap(layerConcessione.getBbox());
+
+ theLayerConessione.setBbox(bounds);
+ theLayerConessione.setCreationTime(toDateFormatString(layerConcessione.getCreationTime()));
+ theLayerConessione.setId(layerConcessione.getId());
+ theLayerConessione.setLicenseID(layerConcessione.getLicenseID());
+ theLayerConessione.setMetodoRaccoltaDati(layerConcessione.getMetodoRaccoltaDati());
+ theLayerConessione.setPolicy(toPolicy(layerConcessione.getPolicy()));
+ //theLayerConessione.setRecord(recordDV);
+ theLayerConessione.setScalaAcquisizione(layerConcessione.getScalaAcquisizione());
+ theLayerConessione.setSubTopic(layerConcessione.getSubTopic());
+ theLayerConessione.setTitolo(layerConcessione.getTitolo());
+ theLayerConessione.setTopicCategory(layerConcessione.getTopicCategory());
+ theLayerConessione.setValutazioneQualita(layerConcessione.getValutazioneQualita());
+
+
+ LOG.debug("Returning: " + theLayerConessione);
+ return theLayerConessione;
+
+ }
+
+ /**
+ * To other content DV.
+ *
+ * @param otherContent the other content
+ * @return the other content DV
+ */
+ public static OtherContentDV toOtherContentDV(OtherContent otherContent) {
+
+ if (otherContent == null)
+ return null;
+
+ OtherContentDV theOtherContent = new OtherContentDV();
+ theOtherContent.setCreationTime(toDateFormatString(otherContent.getCreationTime()));
+ theOtherContent.setId(otherContent.getId());
+ theOtherContent.setLicenseID(otherContent.getLicenseID());
+ theOtherContent.setPolicy(toPolicy(otherContent.getPolicy()));
+ //theOtherContent.setRecord(recordDV);
+ theOtherContent.setTitolo(otherContent.getTitolo());
+
+ return theOtherContent;
+ }
+
+ /**
+ * To bound map.
+ *
+ * @param bbox the bbox
+ * @return the bounds map
+ */
+ public static BoundsMap toBoundMap(BBOX bbox) {
+
+ if (bbox == null)
+ return null;
+
+ return new BoundsMap(bbox.getMinLong(), bbox.getMinLat(), bbox.getMaxLong(), bbox.getMaxLat(), null);
+ }
+
+
+ /**
+ * To bound map.
+ *
+ * @param wmsVersion the wms version
+ * @param bbox the bbox
+ * @param separator the separator
+ * @return the bounds map
+ */
+ public static BoundsMap toBoundMap(String wmsVersion, String bbox, String separator) {
+
+ if (bbox == null)
+ return null;
+
+ if(wmsVersion==null)
+ return null;
+
+ if(separator==null)
+ separator = ",";
+
+ try {
+
+ String[] bboxArr = bbox.split(separator);
+
+ if(wmsVersion.startsWith("1.3")) {
+ //is 1.3.x
+ return new BoundsMap(toDouble(bboxArr[1]), toDouble(bboxArr[0]), toDouble(bboxArr[3]), toDouble(bboxArr[2]), wmsVersion);
+ }else {
+ //should be 1.1.X
+ return new BoundsMap(toDouble(bboxArr[0]), toDouble(bboxArr[1]), toDouble(bboxArr[2]), toDouble(bboxArr[3]), wmsVersion);
+ }
+ }catch (Exception e) {
+ LOG.warn("Error on creating Bounds for wmsVersion "+wmsVersion+" and bbox "+bbox+" : ",e);
+ return null;
+ }
+ }
+
+ /**
+ * To double.
+ *
+ * @param value the value
+ * @return the double
+ */
+ public static Double toDouble(String value) {
+ try {
+ return Double.parseDouble(value);
+ }catch (Exception e) {
+ LOG.warn("Error on parsing "+value+" as double: ",e);
+ return null;
+ }
+ }
+
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/GeoNaDataViewerProfileReader.java b/src/main/java/org/gcube/application/geoportalcommon/GeoNaDataViewerProfileReader.java
index b067e14..d327092 100644
--- a/src/main/java/org/gcube/application/geoportalcommon/GeoNaDataViewerProfileReader.java
+++ b/src/main/java/org/gcube/application/geoportalcommon/GeoNaDataViewerProfileReader.java
@@ -30,14 +30,12 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
-
-
/**
* The Class GeoNaViewerProfileReader.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
- * Nov 12, 2020
+ * Nov 12, 2020
*/
public class GeoNaDataViewerProfileReader {
@@ -56,7 +54,7 @@ public class GeoNaDataViewerProfileReader {
/**
* Instantiates a new application profile reader.
*
- * @param appID the app id
+ * @param appID the app id
*/
public GeoNaDataViewerProfileReader(String appID) {
@@ -73,7 +71,7 @@ public class GeoNaDataViewerProfileReader {
public GeoNaDataViewerProfile readProfileFromInfrastrucure() throws Exception {
String queryString = getGcubeGenericQueryString(secondaryType, appID);
- logger.info("Scope "+scope+", trying to perform query: "+queryString);
+ logger.info("Scope " + scope + ", trying to perform query: " + queryString);
try {
@@ -81,7 +79,7 @@ public class GeoNaDataViewerProfileReader {
throw new Exception("Scope is null, set scope into ScopeProvider");
GeoNaDataViewerProfile profile = new GeoNaDataViewerProfile();
-
+
logger.info("Trying to fetch ApplicationProfile in the scope: " + scope + ", SecondaryType: "
+ secondaryType + ", AppId: " + appID);
Query q = new QueryBox(queryString);
@@ -95,25 +93,24 @@ public class GeoNaDataViewerProfileReader {
String elem = appProfile.get(0);
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = docBuilder.parse(new InputSource(new StringReader(elem)));
-
+
XPathHelper helper = new XPathHelper(doc.getDocumentElement());
List currValue = null;
- String xPathExp = RESOURCE_PROFILE_BODY+"/RestrictedPortletURL/text()";
+ String xPathExp = RESOURCE_PROFILE_BODY + "/RestrictedPortletURL/text()";
currValue = helper.evaluate(xPathExp);
if (currValue != null && currValue.size() > 0) {
profile.setRestrictedPortletURL(currValue.get(0));
- }else
- throw new Exception("I'm not able to read the path: "+xPathExp);
-
- xPathExp = RESOURCE_PROFILE_BODY+"/OpenPortletURL/text()";
+ } else
+ throw new Exception("I'm not able to read the path: " + xPathExp);
+
+ xPathExp = RESOURCE_PROFILE_BODY + "/OpenPortletURL/text()";
currValue = helper.evaluate(xPathExp);
if (currValue != null && currValue.size() > 0) {
profile.setOpenPortletURL(currValue.get(0));
- }else
- throw new Exception("I'm not able to read the path: "+xPathExp);
-
-
+ } else
+ throw new Exception("I'm not able to read the path: " + xPathExp);
+
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xPath.compile("/Resource/Profile/Body/AvailableLayers/Layer")
.evaluate(doc, XPathConstants.NODESET);
@@ -132,9 +129,9 @@ public class GeoNaDataViewerProfileReader {
mapLayers.put(layerType.toLowerCase(), layer);
}
}
-
+
profile.setMapLayers(mapLayers);
- logger.info("returning: "+profile);
+ logger.info("returning: " + profile);
return profile;
}
@@ -185,19 +182,19 @@ public class GeoNaDataViewerProfileReader {
return "GeoNaViewerProfileReader [secondaryType=" + secondaryType + ", scope=" + scope + ", appID=" + appID
+ "]";
}
-
+
/*
- public static void main(String[] args) throws Exception {
- ScopeProvider.instance.set("/gcube/devNext/NextNext");
- GeoNaDataViewerProfileReader gdvp = new GeoNaDataViewerProfileReader("geoportal-data-viewer-app");
- GeoNaDataViewerProfile profile = gdvp.readProfileFromInfrastrucure();
- System.out.println(profile.getRestrictedPortletURL());
- System.out.println(profile.getOpenPortletURL());
-
- if(profile.getMapLayers()!=null) {
- for (String type : profile.getMapLayers().keySet()) {
- System.out.println("key: "+type+", value: "+profile.getMapLayers().get(type));
- }
- }
- }*/
+ * public static void main(String[] args) throws Exception {
+ * ScopeProvider.instance.set("/gcube/devNext/NextNext");
+ * GeoNaDataViewerProfileReader gdvp = new
+ * GeoNaDataViewerProfileReader("geoportal-data-viewer-app");
+ * GeoNaDataViewerProfile profile = gdvp.readProfileFromInfrastrucure();
+ * System.out.println(profile.getRestrictedPortletURL());
+ * System.out.println(profile.getOpenPortletURL());
+ *
+ * if(profile.getMapLayers()!=null) { for (String type :
+ * profile.getMapLayers().keySet()) {
+ * System.out.println("key: "+type+", value: "+profile.getMapLayers().get(type))
+ * ; } } }
+ */
}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/gis/BoundsMap.java b/src/main/java/org/gcube/application/geoportalcommon/shared/gis/BoundsMap.java
new file mode 100644
index 0000000..a623429
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/gis/BoundsMap.java
@@ -0,0 +1,170 @@
+package org.gcube.application.geoportalcommon.shared.gis;
+
+import java.io.Serializable;
+
+/**
+ * The Class BoundsMap.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Oct 27, 2020
+ */
+public class BoundsMap implements Serializable{
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 69005924452960006L;
+
+ /** The lower left X. */
+ private double lowerLeftX = 0.0;
+
+ /** The lower left Y. */
+ private double lowerLeftY = 0.0;
+
+ /** The upper right X. */
+ private double upperRightX = 0.0;
+
+ /** The upper right Y. */
+ private double upperRightY = 0.0;
+
+ /** The crs. */
+ private String crs = "";
+
+
+
+ /**
+ * Instantiates a new bounds map.
+ */
+ public BoundsMap() {
+ }
+
+ /**
+ * Instantiates a new bounds map.
+ *
+ * @param lowerLeftX the lower left X
+ * @param lowerLeftY the lower left Y
+ * @param upperRightX the upper right X
+ * @param upperRightY the upper right Y
+ * @param crs the crs
+ */
+ public BoundsMap(double lowerLeftX, double lowerLeftY, double upperRightX,
+ double upperRightY, String crs) {
+ super();
+ this.lowerLeftX = lowerLeftX;
+ this.lowerLeftY = lowerLeftY;
+ this.upperRightX = upperRightX;
+ this.upperRightY = upperRightY;
+ this.crs = crs;
+ }
+
+ /**
+ * Gets the lower left X.
+ *
+ * @return the lower left X
+ */
+ public double getLowerLeftX() {
+ return lowerLeftX;
+ }
+
+ /**
+ * Sets the lower left X.
+ *
+ * @param lowerLeftX the new lower left X
+ */
+ public void setLowerLeftX(double lowerLeftX) {
+ this.lowerLeftX = lowerLeftX;
+ }
+
+ /**
+ * Gets the lower left Y.
+ *
+ * @return the lower left Y
+ */
+ public double getLowerLeftY() {
+ return lowerLeftY;
+ }
+
+ /**
+ * Sets the lower left Y.
+ *
+ * @param lowerLeftY the new lower left Y
+ */
+ public void setLowerLeftY(double lowerLeftY) {
+ this.lowerLeftY = lowerLeftY;
+ }
+
+ /**
+ * Gets the upper right X.
+ *
+ * @return the upper right X
+ */
+ public double getUpperRightX() {
+ return upperRightX;
+ }
+
+ /**
+ * Sets the upper right X.
+ *
+ * @param upperRightX the new upper right X
+ */
+ public void setUpperRightX(double upperRightX) {
+ this.upperRightX = upperRightX;
+ }
+
+ /**
+ * Gets the upper right Y.
+ *
+ * @return the upper right Y
+ */
+ public double getUpperRightY() {
+ return upperRightY;
+ }
+
+ /**
+ * Sets the upper right Y.
+ *
+ * @param upperRightY the new upper right Y
+ */
+ public void setUpperRightY(double upperRightY) {
+ this.upperRightY = upperRightY;
+ }
+
+ /**
+ * Gets the crs.
+ *
+ * @return the crs
+ */
+ public String getCrs() {
+ return crs;
+ }
+
+ /**
+ * Sets the crs.
+ *
+ * @param crs the new crs
+ */
+ public void setCrs(String crs) {
+ this.crs = crs;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BoundsMap [lowerLeftX=");
+ builder.append(lowerLeftX);
+ builder.append(", lowerLeftY=");
+ builder.append(lowerLeftY);
+ builder.append(", upperRightX=");
+ builder.append(upperRightX);
+ builder.append(", upperRightY=");
+ builder.append(upperRightY);
+ builder.append(", crs=");
+ builder.append(crs);
+ builder.append("]");
+ return builder.toString();
+ }
+
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/ConcessioneDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/ConcessioneDV.java
new file mode 100644
index 0000000..8efcaff
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/ConcessioneDV.java
@@ -0,0 +1,595 @@
+package org.gcube.application.geoportalcommon.shared.products;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.gcube.application.geoportalcommon.shared.products.content.OtherContentDV;
+import org.gcube.application.geoportalcommon.shared.products.model.AbstractRelazioneScavoDV;
+import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessioneDV;
+import org.gcube.application.geoportalcommon.shared.products.model.RecordDV;
+import org.gcube.application.geoportalcommon.shared.products.model.RelazioneScavoDV;
+import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV;
+
+/**
+ * The Class ConcessioneDV.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 4, 2020
+ */
+public class ConcessioneDV extends RecordDV implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1387327199157005059L;
+
+ /** The introduzione. */
+ private String introduzione;
+
+ /** The descrizione contenuto. */
+ private String descrizioneContenuto;
+
+ /** The authors. */
+ private List authors;
+
+ /** The contributore. */
+ private String contributore;
+
+ /** The titolari. */
+ private List titolari;
+
+ /** The responsabile. */
+ private String responsabile;
+
+ /** The editore. */
+ private String editore;
+
+ /** The fonti finanziamento. */
+ private List fontiFinanziamento;
+
+ /** The soggetto. */
+ private List soggetto;
+
+ /** The risorse correlate. */
+ private List risorseCorrelate;
+
+ /** The data inizio progetto. */
+ private String dataInizioProgetto;
+
+ /** The data fine progetto. */
+ private String dataFineProgetto;
+
+ /** The titolare licenza. */
+ private List titolariLicenza;
+
+ /** The titolare copyright. */
+ private List titolariCopyright;
+
+ /** The parole chiave libere. */
+ private List paroleChiaveLibere;
+
+ /** The parole chiave ICCD. */
+ private List paroleChiaveICCD;
+
+ /** The centroid lat. */
+ private Double centroidLat;
+
+ /** The centroid long. */
+ private Double centroidLong;
+
+ /** The relazione scavo. */
+ private AbstractRelazioneScavoDV abstractRelazioneScavo;
+
+ /** The relazione scavo. */
+ private RelazioneScavoDV relazioneScavo;
+
+ /** The immagini rappresentative. */
+ private List immaginiRappresentative = new ArrayList();
+
+ /** The posizionamento scavo. */
+ private LayerConcessioneDV posizionamentoScavo;
+
+ /** The piante fine scavo. */
+ private List pianteFineScavo = new ArrayList();
+
+ /** The generic content. */
+ private List genericContent = new ArrayList();
+
+ /**
+ * Instantiates a new concessione.
+ */
+ public ConcessioneDV() {
+
+ }
+
+ /**
+ * Gets the introduzione.
+ *
+ * @return the introduzione
+ */
+ public String getIntroduzione() {
+ return introduzione;
+ }
+
+ /**
+ * Sets the introduzione.
+ *
+ * @param introduzione the new introduzione
+ */
+ public void setIntroduzione(String introduzione) {
+ this.introduzione = introduzione;
+ }
+
+ /**
+ * Gets the descrizione contenuto.
+ *
+ * @return the descrizione contenuto
+ */
+ public String getDescrizioneContenuto() {
+ return descrizioneContenuto;
+ }
+
+ /**
+ * Sets the descrizione contenuto.
+ *
+ * @param descrizioneContenuto the new descrizione contenuto
+ */
+ public void setDescrizioneContenuto(String descrizioneContenuto) {
+ this.descrizioneContenuto = descrizioneContenuto;
+ }
+
+ /**
+ * Gets the authors.
+ *
+ * @return the authors
+ */
+ public List getAuthors() {
+ return authors;
+ }
+
+ /**
+ * Sets the authors.
+ *
+ * @param authors the new authors
+ */
+ public void setAuthors(List authors) {
+ this.authors = authors;
+ }
+
+ /**
+ * Gets the contributore.
+ *
+ * @return the contributore
+ */
+ public String getContributore() {
+ return contributore;
+ }
+
+ /**
+ * Sets the contributore.
+ *
+ * @param contributore the new contributore
+ */
+ public void setContributore(String contributore) {
+ this.contributore = contributore;
+ }
+
+ /**
+ * Gets the titolari.
+ *
+ * @return the titolari
+ */
+ public List getTitolari() {
+ return titolari;
+ }
+
+ /**
+ * Sets the titolari.
+ *
+ * @param titolari the new titolari
+ */
+ public void setTitolari(List titolari) {
+ this.titolari = titolari;
+ }
+
+ /**
+ * Gets the responsabile.
+ *
+ * @return the responsabile
+ */
+ public String getResponsabile() {
+ return responsabile;
+ }
+
+ /**
+ * Sets the responsabile.
+ *
+ * @param responsabile the new responsabile
+ */
+ public void setResponsabile(String responsabile) {
+ this.responsabile = responsabile;
+ }
+
+ /**
+ * Gets the editore.
+ *
+ * @return the editore
+ */
+ public String getEditore() {
+ return editore;
+ }
+
+ /**
+ * Sets the editore.
+ *
+ * @param editore the new editore
+ */
+ public void setEditore(String editore) {
+ this.editore = editore;
+ }
+
+ /**
+ * Gets the fonti finanziamento.
+ *
+ * @return the fonti finanziamento
+ */
+ public List getFontiFinanziamento() {
+ return fontiFinanziamento;
+ }
+
+ /**
+ * Sets the fonti finanziamento.
+ *
+ * @param fontiFinanziamento the new fonti finanziamento
+ */
+ public void setFontiFinanziamento(List fontiFinanziamento) {
+ this.fontiFinanziamento = fontiFinanziamento;
+ }
+
+ /**
+ * Gets the soggetto.
+ *
+ * @return the soggetto
+ */
+ public List getSoggetto() {
+ return soggetto;
+ }
+
+ /**
+ * Sets the soggetto.
+ *
+ * @param soggetto the new soggetto
+ */
+ public void setSoggetto(List soggetto) {
+ this.soggetto = soggetto;
+ }
+
+ /**
+ * Gets the risorse correlate.
+ *
+ * @return the risorse correlate
+ */
+ public List getRisorseCorrelate() {
+ return risorseCorrelate;
+ }
+
+ /**
+ * Sets the risorse correlate.
+ *
+ * @param risorseCorrelate the new risorse correlate
+ */
+ public void setRisorseCorrelate(List risorseCorrelate) {
+ this.risorseCorrelate = risorseCorrelate;
+ }
+
+ /**
+ * Gets the data inizio progetto.
+ *
+ * @return the data inizio progetto
+ */
+ public String getDataInizioProgetto() {
+ return dataInizioProgetto;
+ }
+
+ /**
+ * Sets the data inizio progetto.
+ *
+ * @param dataInizioProgetto the new data inizio progetto
+ */
+ public void setDataInizioProgetto(String dataInizioProgetto) {
+ this.dataInizioProgetto = dataInizioProgetto;
+ }
+
+ /**
+ * Gets the data fine progetto.
+ *
+ * @return the data fine progetto
+ */
+ public String getDataFineProgetto() {
+ return dataFineProgetto;
+ }
+
+ /**
+ * Sets the data fine progetto.
+ *
+ * @param dataFineProgetto the new data fine progetto
+ */
+ public void setDataFineProgetto(String dataFineProgetto) {
+ this.dataFineProgetto = dataFineProgetto;
+ }
+
+ /**
+ * Gets the titolari licenza.
+ *
+ * @return the titolari licenza
+ */
+ public List getTitolariLicenza() {
+ return titolariLicenza;
+ }
+
+ /**
+ * Sets the titolari licenza.
+ *
+ * @param titolariLicenza the new titolari licenza
+ */
+ public void setTitolariLicenza(List titolariLicenza) {
+ this.titolariLicenza = titolariLicenza;
+ }
+
+ /**
+ * Gets the titolari copyright.
+ *
+ * @return the titolari copyright
+ */
+ public List getTitolariCopyright() {
+ return titolariCopyright;
+ }
+
+ /**
+ * Sets the titolari copyright.
+ *
+ * @param titolariCopyright the new titolari copyright
+ */
+ public void setTitolariCopyright(List titolariCopyright) {
+ this.titolariCopyright = titolariCopyright;
+ }
+
+ /**
+ * Gets the parole chiave libere.
+ *
+ * @return the parole chiave libere
+ */
+ public List getParoleChiaveLibere() {
+ return paroleChiaveLibere;
+ }
+
+ /**
+ * Sets the parole chiave libere.
+ *
+ * @param paroleChiaveLibere the new parole chiave libere
+ */
+ public void setParoleChiaveLibere(List paroleChiaveLibere) {
+ this.paroleChiaveLibere = paroleChiaveLibere;
+ }
+
+ /**
+ * Gets the parole chiave ICCD.
+ *
+ * @return the parole chiave ICCD
+ */
+ public List getParoleChiaveICCD() {
+ return paroleChiaveICCD;
+ }
+
+ /**
+ * Sets the parole chiave ICCD.
+ *
+ * @param paroleChiaveICCD the new parole chiave ICCD
+ */
+ public void setParoleChiaveICCD(List paroleChiaveICCD) {
+ this.paroleChiaveICCD = paroleChiaveICCD;
+ }
+
+ /**
+ * Gets the centroid lat.
+ *
+ * @return the centroid lat
+ */
+ public Double getCentroidLat() {
+ return centroidLat;
+ }
+
+ /**
+ * Sets the centroid lat.
+ *
+ * @param centroidLat the new centroid lat
+ */
+ public void setCentroidLat(Double centroidLat) {
+ this.centroidLat = centroidLat;
+ }
+
+ /**
+ * Gets the centroid long.
+ *
+ * @return the centroid long
+ */
+ public Double getCentroidLong() {
+ return centroidLong;
+ }
+
+ /**
+ * Sets the centroid long.
+ *
+ * @param centroidLong the new centroid long
+ */
+ public void setCentroidLong(Double centroidLong) {
+ this.centroidLong = centroidLong;
+ }
+
+ /**
+ * Gets the relazione scavo.
+ *
+ * @return the relazione scavo
+ */
+ public RelazioneScavoDV getRelazioneScavo() {
+ return relazioneScavo;
+ }
+
+ /**
+ * Sets the relazione scavo.
+ *
+ * @param relazioneScavo the new relazione scavo
+ */
+ public void setRelazioneScavo(RelazioneScavoDV relazioneScavo) {
+ this.relazioneScavo = relazioneScavo;
+ }
+
+ /**
+ * Gets the immagini rappresentative.
+ *
+ * @return the immagini rappresentative
+ */
+ public List getImmaginiRappresentative() {
+ return immaginiRappresentative;
+ }
+
+ /**
+ * Sets the immagini rappresentative.
+ *
+ * @param immaginiRappresentative the new immagini rappresentative
+ */
+ public void setImmaginiRappresentative(List immaginiRappresentative) {
+ this.immaginiRappresentative = immaginiRappresentative;
+ }
+
+ /**
+ * Gets the posizionamento scavo.
+ *
+ * @return the posizionamento scavo
+ */
+ public LayerConcessioneDV getPosizionamentoScavo() {
+ return posizionamentoScavo;
+ }
+
+ /**
+ * Sets the posizionamento scavo.
+ *
+ * @param posizionamentoScavo the new posizionamento scavo
+ */
+ public void setPosizionamentoScavo(LayerConcessioneDV posizionamentoScavo) {
+ this.posizionamentoScavo = posizionamentoScavo;
+ }
+
+ /**
+ * Gets the piante fine scavo.
+ *
+ * @return the piante fine scavo
+ */
+ public List getPianteFineScavo() {
+ return pianteFineScavo;
+ }
+
+ /**
+ * Sets the piante fine scavo.
+ *
+ * @param pianteFineScavo the new piante fine scavo
+ */
+ public void setPianteFineScavo(List pianteFineScavo) {
+ this.pianteFineScavo = pianteFineScavo;
+ }
+
+ /**
+ * Gets the generic content.
+ *
+ * @return the generic content
+ */
+ public List getGenericContent() {
+ return genericContent;
+ }
+
+ /**
+ * Sets the generic content.
+ *
+ * @param genericContent the new generic content
+ */
+ public void setGenericContent(List genericContent) {
+ this.genericContent = genericContent;
+ }
+
+
+ /**
+ * Gets the abstract relazione scavo.
+ *
+ * @return the abstract relazione scavo
+ */
+ public AbstractRelazioneScavoDV getAbstractRelazioneScavo() {
+ return abstractRelazioneScavo;
+ }
+
+ /**
+ * Sets the abstract relazione scavo.
+ *
+ * @param abstractRelazioneScavo the new abstract relazione scavo
+ */
+ public void setAbstractRelazioneScavo(AbstractRelazioneScavoDV abstractRelazioneScavo) {
+ this.abstractRelazioneScavo = abstractRelazioneScavo;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("ConcessioneDV [introduzione=");
+ builder.append(introduzione);
+ builder.append(", descrizioneContenuto=");
+ builder.append(descrizioneContenuto);
+ builder.append(", authors=");
+ builder.append(authors);
+ builder.append(", contributore=");
+ builder.append(contributore);
+ builder.append(", titolari=");
+ builder.append(titolari);
+ builder.append(", responsabile=");
+ builder.append(responsabile);
+ builder.append(", editore=");
+ builder.append(editore);
+ builder.append(", fontiFinanziamento=");
+ builder.append(fontiFinanziamento);
+ builder.append(", soggetto=");
+ builder.append(soggetto);
+ builder.append(", risorseCorrelate=");
+ builder.append(risorseCorrelate);
+ builder.append(", dataInizioProgetto=");
+ builder.append(dataInizioProgetto);
+ builder.append(", dataFineProgetto=");
+ builder.append(dataFineProgetto);
+ builder.append(", titolariLicenza=");
+ builder.append(titolariLicenza);
+ builder.append(", titolariCopyright=");
+ builder.append(titolariCopyright);
+ builder.append(", paroleChiaveLibere=");
+ builder.append(paroleChiaveLibere);
+ builder.append(", paroleChiaveICCD=");
+ builder.append(paroleChiaveICCD);
+ builder.append(", centroidLat=");
+ builder.append(centroidLat);
+ builder.append(", centroidLong=");
+ builder.append(centroidLong);
+ builder.append(", abstractRelazioneScavo=");
+ builder.append(abstractRelazioneScavo);
+ builder.append(", relazioneScavo=");
+ builder.append(relazioneScavo);
+ builder.append(", immaginiRappresentative=");
+ builder.append(immaginiRappresentative);
+ builder.append(", posizionamentoScavo=");
+ builder.append(posizionamentoScavo);
+ builder.append(", pianteFineScavo=");
+ builder.append(pianteFineScavo);
+ builder.append(", genericContent=");
+ builder.append(genericContent);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/AssociatedContentDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/AssociatedContentDV.java
new file mode 100644
index 0000000..d2edebb
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/AssociatedContentDV.java
@@ -0,0 +1,200 @@
+package org.gcube.application.geoportalcommon.shared.products.content;
+
+import java.io.Serializable;
+
+import org.gcube.application.geoportalcommon.shared.products.model.RecordDV;
+
+/**
+ * The Class AssociatedContent.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 2, 2020
+ */
+public abstract class AssociatedContentDV implements Serializable{
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3666420861504055117L;
+
+ /** The id. */
+ private long id;
+
+ /** The policy. */
+ private String policy;
+
+ /** The license ID. */
+ private String licenseID;
+
+ /** The titolo. */
+ private String titolo;
+
+ /** The creation time. */
+ private String creationTime;
+
+ /** The record. */
+ private RecordDV record;
+
+
+ /**
+ * Instantiates a new associated content.
+ */
+ public AssociatedContentDV() {
+ }
+
+ /**
+ * Instantiates a new associated content.
+ *
+ * @param id the id
+ * @param policy the policy
+ * @param licenseID the license ID
+ * @param titolo the titolo
+ * @param creationTime the creation time
+ * @param record the record
+ */
+ public AssociatedContentDV(long id, String policy, String licenseID, String titolo, String creationTime,
+ RecordDV record) {
+ super();
+ this.id = id;
+ this.policy = policy;
+ this.licenseID = licenseID;
+ this.titolo = titolo;
+ this.creationTime = creationTime;
+ this.record = record;
+ }
+
+ /**
+ * Gets the id.
+ *
+ * @return the id
+ */
+ public long getId() {
+ return id;
+ }
+
+ /**
+ * Sets the id.
+ *
+ * @param id the new id
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ /**
+ * Gets the policy.
+ *
+ * @return the policy
+ */
+ public String getPolicy() {
+ return policy;
+ }
+
+ /**
+ * Sets the policy.
+ *
+ * @param policy the new policy
+ */
+ public void setPolicy(String policy) {
+ this.policy = policy;
+ }
+
+ /**
+ * Gets the license ID.
+ *
+ * @return the license ID
+ */
+ public String getLicenseID() {
+ return licenseID;
+ }
+
+ /**
+ * Sets the license ID.
+ *
+ * @param licenseID the new license ID
+ */
+ public void setLicenseID(String licenseID) {
+ this.licenseID = licenseID;
+ }
+
+ /**
+ * Gets the titolo.
+ *
+ * @return the titolo
+ */
+ public String getTitolo() {
+ return titolo;
+ }
+
+ /**
+ * Sets the titolo.
+ *
+ * @param titolo the new titolo
+ */
+ public void setTitolo(String titolo) {
+ this.titolo = titolo;
+ }
+
+ /**
+ * Gets the creation time.
+ *
+ * @return the creation time
+ */
+ public String getCreationTime() {
+ return creationTime;
+ }
+
+ /**
+ * Sets the creation time.
+ *
+ * @param creationTime the new creation time
+ */
+ public void setCreationTime(String creationTime) {
+ this.creationTime = creationTime;
+ }
+
+ /**
+ * Gets the record.
+ *
+ * @return the record
+ */
+ public RecordDV getRecord() {
+ return record;
+ }
+
+ /**
+ * Sets the record.
+ *
+ * @param record the new record
+ */
+ public void setRecord(RecordDV record) {
+ this.record = record;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("AssociatedContent [id=");
+ builder.append(id);
+ builder.append(", policy=");
+ builder.append(policy);
+ builder.append(", licenseID=");
+ builder.append(licenseID);
+ builder.append(", titolo=");
+ builder.append(titolo);
+ builder.append(", creationTime=");
+ builder.append(creationTime);
+ builder.append(", record=");
+ builder.append(record);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/OtherContentDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/OtherContentDV.java
new file mode 100644
index 0000000..7d51744
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/OtherContentDV.java
@@ -0,0 +1,41 @@
+package org.gcube.application.geoportalcommon.shared.products.content;
+
+import java.io.Serializable;
+
+/**
+ * The Class OtherContent.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 2, 2020
+ */
+public class OtherContentDV extends AssociatedContentDV implements Serializable{
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -2550361768550673836L;
+
+ /**
+ * Instantiates a new other content.
+ */
+ public OtherContentDV() {
+
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("OtherContent [toString()=");
+ builder.append(super.toString());
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/WorkspaceContentDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/WorkspaceContentDV.java
new file mode 100644
index 0000000..583a5ce
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/content/WorkspaceContentDV.java
@@ -0,0 +1,83 @@
+package org.gcube.application.geoportalcommon.shared.products.content;
+
+import java.io.Serializable;
+
+/**
+ * The Class WorkspaceContentDV.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 5, 2020
+ */
+public class WorkspaceContentDV implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3919923007831416696L;
+
+ /** The mimetype. */
+ private String mimetype;
+
+ /** The storage ID. */
+ private String storageID;
+
+ /** The link. */
+ private String link;
+
+ private Long id;
+
+ public WorkspaceContentDV() {
+
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getMimetype() {
+ return mimetype;
+ }
+
+ public void setMimetype(String mimetype) {
+ this.mimetype = mimetype;
+ }
+
+ public String getStorageID() {
+ return storageID;
+ }
+
+ public void setStorageID(String storageID) {
+ this.storageID = storageID;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("WorkspaceContentDV [mimetype=");
+ builder.append(mimetype);
+ builder.append(", storageID=");
+ builder.append(storageID);
+ builder.append(", link=");
+ builder.append(link);
+ builder.append(", id=");
+ builder.append(id);
+ builder.append("]");
+ return builder.toString();
+ }
+
+
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/AbstractRelazioneScavoDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/AbstractRelazioneScavoDV.java
new file mode 100644
index 0000000..2877896
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/AbstractRelazioneScavoDV.java
@@ -0,0 +1,152 @@
+package org.gcube.application.geoportalcommon.shared.products.model;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.gcube.application.geoportalcommon.shared.products.content.AssociatedContentDV;
+
+
+/**
+ * The Class AbstractRelazioneScavoDV.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Dec 21, 2020
+ */
+public class AbstractRelazioneScavoDV extends AssociatedContentDV implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 8768745863185590509L;
+
+ /** The abstract section. */
+ private String abstractSectionIta;
+
+ private String abstractSectionEng;
+
+ /** The responsabili. */
+ private List responsabili;
+
+ /** The soggetto. */
+ private List soggetto;
+
+ /**
+ * Instantiates a new abstract relazione scavo.
+ */
+ public AbstractRelazioneScavoDV() {
+
+ }
+
+ /**
+ * Instantiates a new abstract relazione scavo.
+ *
+ * @param abstractSectionIta the abstract section ita
+ * @param abstractSectionEng the abstract section eng
+ * @param responsabili the responsabili
+ * @param soggetto the soggetto
+ */
+ public AbstractRelazioneScavoDV(String abstractSectionIta, String abstractSectionEng, List responsabili, List soggetto) {
+ super();
+ this.abstractSectionIta = abstractSectionIta;
+ this.abstractSectionEng = abstractSectionEng;
+ this.responsabili = responsabili;
+ this.soggetto = soggetto;
+ }
+
+ /**
+ * Gets the abstract section ita.
+ *
+ * @return the abstract section ita
+ */
+ public String getAbstractSectionIta() {
+ return abstractSectionIta;
+ }
+
+ /**
+ * Sets the abstract section ita.
+ *
+ * @param abstractSectionIta the new abstract section ita
+ */
+ public void setAbstractSectionIta(String abstractSectionIta) {
+ this.abstractSectionIta = abstractSectionIta;
+ }
+
+ /**
+ * Gets the abstract section eng.
+ *
+ * @return the abstract section eng
+ */
+ public String getAbstractSectionEng() {
+ return abstractSectionEng;
+ }
+
+ /**
+ * Sets the abstract section eng.
+ *
+ * @param abstractSectionEng the new abstract section eng
+ */
+ public void setAbstractSectionEng(String abstractSectionEng) {
+ this.abstractSectionEng = abstractSectionEng;
+ }
+
+ /**
+ * Gets the responsabili.
+ *
+ * @return the responsabili
+ */
+ public List getResponsabili() {
+ return responsabili;
+ }
+
+ /**
+ * Sets the responsabili.
+ *
+ * @param responsabili the new responsabili
+ */
+ public void setResponsabili(List responsabili) {
+ this.responsabili = responsabili;
+ }
+
+ /**
+ * Gets the soggetto.
+ *
+ * @return the soggetto
+ */
+ public List getSoggetto() {
+ return soggetto;
+ }
+
+ /**
+ * Sets the soggetto.
+ *
+ * @param soggetto the new soggetto
+ */
+ public void setSoggetto(List soggetto) {
+ this.soggetto = soggetto;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("RelazioneScavoDV [abstractSectionIta=");
+ builder.append(abstractSectionIta);
+ builder.append(", abstractSectionEng=");
+ builder.append(abstractSectionEng);
+ builder.append(", responsabili=");
+ builder.append(responsabili);
+ builder.append(", soggetto=");
+ builder.append(soggetto);
+ builder.append("]");
+ return builder.toString();
+ }
+
+
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/LayerConcessioneDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/LayerConcessioneDV.java
new file mode 100644
index 0000000..873ed08
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/LayerConcessioneDV.java
@@ -0,0 +1,133 @@
+package org.gcube.application.geoportalcommon.shared.products.model;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.gcube.application.geoportalcommon.shared.gis.BoundsMap;
+
+public class LayerConcessioneDV extends SDILayerDescriptorDV implements Serializable{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2633250621043744245L;
+
+ // 1.Identificazione
+ private String abstractSection;
+
+ // 2.Classificazione
+ private String topicCategory;
+
+ // 3.Keyword
+ private String subTopic;
+
+ // 4. Delimitazione geographica
+ private BoundsMap bbox;
+
+ // 5. Temporal
+
+ // 6. Quality
+ private String valutazioneQualita;
+
+ private String metodoRaccoltaDati;
+
+ private String scalaAcquisizione;
+
+ private List authors;
+
+ public LayerConcessioneDV() {
+
+ }
+
+ public String getAbstractSection() {
+ return abstractSection;
+ }
+
+ public void setAbstractSection(String abstractSection) {
+ this.abstractSection = abstractSection;
+ }
+
+ public String getTopicCategory() {
+ return topicCategory;
+ }
+
+ public void setTopicCategory(String topicCategory) {
+ this.topicCategory = topicCategory;
+ }
+
+ public String getSubTopic() {
+ return subTopic;
+ }
+
+ public void setSubTopic(String subTopic) {
+ this.subTopic = subTopic;
+ }
+
+ public BoundsMap getBbox() {
+ return bbox;
+ }
+
+ public void setBbox(BoundsMap bbox) {
+ this.bbox = bbox;
+ }
+
+ public String getValutazioneQualita() {
+ return valutazioneQualita;
+ }
+
+ public void setValutazioneQualita(String valutazioneQualita) {
+ this.valutazioneQualita = valutazioneQualita;
+ }
+
+ public String getMetodoRaccoltaDati() {
+ return metodoRaccoltaDati;
+ }
+
+ public void setMetodoRaccoltaDati(String metodoRaccoltaDati) {
+ this.metodoRaccoltaDati = metodoRaccoltaDati;
+ }
+
+ public String getScalaAcquisizione() {
+ return scalaAcquisizione;
+ }
+
+ public void setScalaAcquisizione(String scalaAcquisizione) {
+ this.scalaAcquisizione = scalaAcquisizione;
+ }
+
+ public List getAuthors() {
+ return authors;
+ }
+
+ public void setAuthors(List authors) {
+ this.authors = authors;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("LayerConcessione [abstractSection=");
+ builder.append(abstractSection);
+ builder.append(", topicCategory=");
+ builder.append(topicCategory);
+ builder.append(", subTopic=");
+ builder.append(subTopic);
+ builder.append(", bbox=");
+ builder.append(bbox);
+ builder.append(", valutazioneQualita=");
+ builder.append(valutazioneQualita);
+ builder.append(", metodoRaccoltaDati=");
+ builder.append(metodoRaccoltaDati);
+ builder.append(", scalaAcquisizione=");
+ builder.append(scalaAcquisizione);
+ builder.append(", authors=");
+ builder.append(authors);
+ builder.append(", wmsLink=");
+ builder.append(super.getWmsLink());
+ builder.append(", layerName=");
+ builder.append(super.getLayerName());
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/RecordDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/RecordDV.java
new file mode 100644
index 0000000..837a86f
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/RecordDV.java
@@ -0,0 +1,289 @@
+package org.gcube.application.geoportalcommon.shared.products.model;
+
+import java.io.Serializable;
+
+/**
+ * The Class Record.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 2, 2020
+ */
+public abstract class RecordDV implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2913726613820175679L;
+
+ /** The id. */
+ private Long id;
+
+ /** The record type. */
+ private String recordType;
+
+ /** The version. */
+ private String version = "1.0.0";
+
+ /** The licenza ID. */
+ private String licenzaID;
+
+ private String policy;
+
+ /** The nome. */
+ // Nome del progetto
+ private String nome;
+
+ /** The folder id. */
+ // Storage Info
+ private String folderId;
+
+ /** The last update time. */
+ // Accounting
+ private String lastUpdateTime;
+
+ /** The last update user. */
+ private String lastUpdateUser;
+
+ /** The creation time. */
+ private String creationTime;
+
+ /** The creation user. */
+ private String creationUser;
+
+ /**
+ * Instantiates a new record.
+ */
+ public RecordDV() {
+
+ }
+
+ /**
+ * Gets the id.
+ *
+ * @return the id
+ */
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * Sets the id.
+ *
+ * @param id the new id
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /**
+ * Gets the record type.
+ *
+ * @return the record type
+ */
+ public String getRecordType() {
+ return recordType;
+ }
+
+ /**
+ * Sets the record type.
+ *
+ * @param recordType the new record type
+ */
+ public void setRecordType(String recordType) {
+ this.recordType = recordType;
+ }
+
+ /**
+ * Gets the version.
+ *
+ * @return the version
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * Sets the version.
+ *
+ * @param version the new version
+ */
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ /**
+ * Gets the licenza ID.
+ *
+ * @return the licenza ID
+ */
+ public String getLicenzaID() {
+ return licenzaID;
+ }
+
+ /**
+ * Sets the licenza ID.
+ *
+ * @param licenzaID the new licenza ID
+ */
+ public void setLicenzaID(String licenzaID) {
+ this.licenzaID = licenzaID;
+ }
+
+ /**
+ * Gets the accesso.
+ *
+ * @return the accesso
+ */
+ public String getPolicy() {
+ return policy;
+ }
+
+ /**
+ * Sets the accesso.
+ *
+ * @param policy the new policy
+ */
+ public void setPolicy(String policy) {
+ this.policy = policy;
+ }
+
+ /**
+ * Gets the nome.
+ *
+ * @return the nome
+ */
+ public String getNome() {
+ return nome;
+ }
+
+ /**
+ * Sets the nome.
+ *
+ * @param nome the new nome
+ */
+ public void setNome(String nome) {
+ this.nome = nome;
+ }
+
+ /**
+ * Gets the folder id.
+ *
+ * @return the folder id
+ */
+ public String getFolderId() {
+ return folderId;
+ }
+
+ /**
+ * Sets the folder id.
+ *
+ * @param folderId the new folder id
+ */
+ public void setFolderId(String folderId) {
+ this.folderId = folderId;
+ }
+
+ /**
+ * Gets the last update time.
+ *
+ * @return the last update time
+ */
+ public String getLastUpdateTime() {
+ return lastUpdateTime;
+ }
+
+ /**
+ * Sets the last update time.
+ *
+ * @param lastUpdateTime the new last update time
+ */
+ public void setLastUpdateTime(String lastUpdateTime) {
+ this.lastUpdateTime = lastUpdateTime;
+ }
+
+ /**
+ * Gets the last update user.
+ *
+ * @return the last update user
+ */
+ public String getLastUpdateUser() {
+ return lastUpdateUser;
+ }
+
+ /**
+ * Sets the last update user.
+ *
+ * @param lastUpdateUser the new last update user
+ */
+ public void setLastUpdateUser(String lastUpdateUser) {
+ this.lastUpdateUser = lastUpdateUser;
+ }
+
+ /**
+ * Gets the creation time.
+ *
+ * @return the creation time
+ */
+ public String getCreationTime() {
+ return creationTime;
+ }
+
+ /**
+ * Sets the creation time.
+ *
+ * @param creationTime the new creation time
+ */
+ public void setCreationTime(String creationTime) {
+ this.creationTime = creationTime;
+ }
+
+ /**
+ * Gets the creation user.
+ *
+ * @return the creation user
+ */
+ public String getCreationUser() {
+ return creationUser;
+ }
+
+ /**
+ * Sets the creation user.
+ *
+ * @param creationUser the new creation user
+ */
+ public void setCreationUser(String creationUser) {
+ this.creationUser = creationUser;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("RecordDV [id=");
+ builder.append(id);
+ builder.append(", recordType=");
+ builder.append(recordType);
+ builder.append(", version=");
+ builder.append(version);
+ builder.append(", licenzaID=");
+ builder.append(licenzaID);
+ builder.append(", policy=");
+ builder.append(policy);
+ builder.append(", nome=");
+ builder.append(nome);
+ builder.append(", folderId=");
+ builder.append(folderId);
+ builder.append(", lastUpdateTime=");
+ builder.append(lastUpdateTime);
+ builder.append(", lastUpdateUser=");
+ builder.append(lastUpdateUser);
+ builder.append(", creationTime=");
+ builder.append(creationTime);
+ builder.append(", creationUser=");
+ builder.append(creationUser);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/RelazioneScavoDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/RelazioneScavoDV.java
new file mode 100644
index 0000000..252ed3b
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/RelazioneScavoDV.java
@@ -0,0 +1,125 @@
+package org.gcube.application.geoportalcommon.shared.products.model;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.gcube.application.geoportalcommon.shared.products.content.AssociatedContentDV;
+import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
+
+
+/**
+ * The Class RelazioneScavoDV.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Dec 21, 2020
+ */
+public class RelazioneScavoDV extends AssociatedContentDV implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2456950567302197554L;
+
+ /** The responsabili. */
+ private List responsabili;
+
+ /** The soggetto. */
+ private List soggetto;
+
+ private List listWsContent;
+
+ /**
+ * Instantiates a new relazione scavo DV.
+ */
+ public RelazioneScavoDV() {
+
+ }
+
+ /**
+ * Instantiates a new relazione scavo DV.
+ *
+ * @param responsabili the responsabili
+ * @param soggetto the soggetto
+ */
+ public RelazioneScavoDV(List responsabili, List soggetto) {
+ super();
+ this.responsabili = responsabili;
+ this.soggetto = soggetto;
+ }
+
+ /**
+ * Gets the responsabili.
+ *
+ * @return the responsabili
+ */
+ public List getResponsabili() {
+ return responsabili;
+ }
+
+ /**
+ * Sets the responsabili.
+ *
+ * @param responsabili the new responsabili
+ */
+ public void setResponsabili(List responsabili) {
+ this.responsabili = responsabili;
+ }
+
+ /**
+ * Gets the soggetto.
+ *
+ * @return the soggetto
+ */
+ public List getSoggetto() {
+ return soggetto;
+ }
+
+ /**
+ * Sets the soggetto.
+ *
+ * @param soggetto the new soggetto
+ */
+ public void setSoggetto(List soggetto) {
+ this.soggetto = soggetto;
+ }
+
+ /**
+ * Gets the list ws content.
+ *
+ * @return the list ws content
+ */
+ public List getListWsContent() {
+ return listWsContent;
+ }
+
+ /**
+ * Sets the list ws content.
+ *
+ * @param listWsContent the new list ws content
+ */
+ public void setListWsContent(List listWsContent) {
+ this.listWsContent = listWsContent;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("RelazioneScavoDV [responsabili=");
+ builder.append(responsabili);
+ builder.append(", soggetto=");
+ builder.append(soggetto);
+ builder.append(", listWsContent=");
+ builder.append(listWsContent);
+ builder.append("]");
+ return builder.toString();
+ }
+
+
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/SDILayerDescriptorDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/SDILayerDescriptorDV.java
new file mode 100644
index 0000000..768db20
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/SDILayerDescriptorDV.java
@@ -0,0 +1,141 @@
+package org.gcube.application.geoportalcommon.shared.products.model;
+
+import java.io.Serializable;
+
+import org.gcube.application.geoportalcommon.shared.products.content.AssociatedContentDV;
+
+
+/**
+ * The Class SDILayerDescriptorDV.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 4, 2020
+ */
+public class SDILayerDescriptorDV extends AssociatedContentDV implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6137246723753812015L;
+ // meta
+ private String layerUUID;
+ private Long layerID;
+
+ // layer
+ private String layerName;
+ private String wmsLink;
+
+ /**
+ * Instantiates a new SDI layer descriptor DV.
+ */
+ public SDILayerDescriptorDV() {
+ }
+
+ /**
+ * Instantiates a new SDI layer descriptor DV.
+ *
+ * @param layerUUID the layer UUID
+ * @param layerID the layer ID
+ * @param layerName the layer name
+ * @param wmsLink the wms link
+ */
+ public SDILayerDescriptorDV(String layerUUID, Long layerID, String layerName, String wmsLink) {
+ super();
+ this.layerUUID = layerUUID;
+ this.layerID = layerID;
+ this.layerName = layerName;
+ this.wmsLink = wmsLink;
+ }
+
+ /**
+ * Gets the layer UUID.
+ *
+ * @return the layer UUID
+ */
+ public String getLayerUUID() {
+ return layerUUID;
+ }
+
+ /**
+ * Sets the layer UUID.
+ *
+ * @param layerUUID the new layer UUID
+ */
+ public void setLayerUUID(String layerUUID) {
+ this.layerUUID = layerUUID;
+ }
+
+ /**
+ * Gets the layer ID.
+ *
+ * @return the layer ID
+ */
+ public Long getLayerID() {
+ return layerID;
+ }
+
+ /**
+ * Sets the layer ID.
+ *
+ * @param layerID the new layer ID
+ */
+ public void setLayerID(Long layerID) {
+ this.layerID = layerID;
+ }
+
+ /**
+ * Gets the layer name.
+ *
+ * @return the layer name
+ */
+ public String getLayerName() {
+ return layerName;
+ }
+
+ /**
+ * Sets the layer name.
+ *
+ * @param layerName the new layer name
+ */
+ public void setLayerName(String layerName) {
+ this.layerName = layerName;
+ }
+
+ /**
+ * Gets the wms link.
+ *
+ * @return the wms link
+ */
+ public String getWmsLink() {
+ return wmsLink;
+ }
+
+ /**
+ * Sets the wms link.
+ *
+ * @param wmsLink the new wms link
+ */
+ public void setWmsLink(String wmsLink) {
+ this.wmsLink = wmsLink;
+ }
+
+ /* (non-Javadoc)
+ * @see org.gcube.portlets.user.geoportaldataviewer.shared.products.content.AssociatedContentDV#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("SDILayerDescriptor [layerUUID=");
+ builder.append(layerUUID);
+ builder.append(", layerID=");
+ builder.append(layerID);
+ builder.append(", layerName=");
+ builder.append(layerName);
+ builder.append(", wmsLink=");
+ builder.append(wmsLink);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/UploadedImageDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/UploadedImageDV.java
new file mode 100644
index 0000000..972727c
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/shared/products/model/UploadedImageDV.java
@@ -0,0 +1,139 @@
+package org.gcube.application.geoportalcommon.shared.products.model;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.gcube.application.geoportalcommon.shared.products.content.AssociatedContentDV;
+import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
+
+/**
+ * The Class UploadedImage.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Nov 2, 2020
+ */
+public class UploadedImageDV extends AssociatedContentDV implements Serializable {
+
+ /** The Constant serialVersionUID. */
+ private static final long serialVersionUID = 809167060189883015L;
+
+ /** The didascalia. */
+ private String didascalia;
+
+ /** The format. */
+ private String format;
+
+ /** The responsabili. */
+ private List responsabili;
+
+ /** The soggetto. */
+ private List soggetto;
+
+ private List listWsContent;
+
+ /**
+ * Instantiates a new uploaded image.
+ */
+ public UploadedImageDV() {
+
+ }
+
+ /**
+ * Gets the didascalia.
+ *
+ * @return the didascalia
+ */
+ public String getDidascalia() {
+ return didascalia;
+ }
+
+ /**
+ * Sets the didascalia.
+ *
+ * @param didascalia the new didascalia
+ */
+ public void setDidascalia(String didascalia) {
+ this.didascalia = didascalia;
+ }
+
+ /**
+ * Gets the format.
+ *
+ * @return the format
+ */
+ public String getFormat() {
+ return format;
+ }
+
+ /**
+ * Sets the format.
+ *
+ * @param format the new format
+ */
+ public void setFormat(String format) {
+ this.format = format;
+ }
+
+ /**
+ * Gets the responsabili.
+ *
+ * @return the responsabili
+ */
+ public List getResponsabili() {
+ return responsabili;
+ }
+
+ /**
+ * Sets the responsabili.
+ *
+ * @param responsabili the new responsabili
+ */
+ public void setResponsabili(List responsabili) {
+ this.responsabili = responsabili;
+ }
+
+ /**
+ * Gets the soggetto.
+ *
+ * @return the soggetto
+ */
+ public List getSoggetto() {
+ return soggetto;
+ }
+
+ /**
+ * Sets the soggetto.
+ *
+ * @param soggetto the new soggetto
+ */
+ public void setSoggetto(List soggetto) {
+ this.soggetto = soggetto;
+ }
+
+ public List getListWsContent() {
+ return listWsContent;
+ }
+
+ public void setListWsContent(List listWsContent) {
+ this.listWsContent = listWsContent;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UploadedImageDV [didascalia=");
+ builder.append(didascalia);
+ builder.append(", format=");
+ builder.append(format);
+ builder.append(", responsabili=");
+ builder.append(responsabili);
+ builder.append(", soggetto=");
+ builder.append(soggetto);
+ builder.append(", listWsContent=");
+ builder.append(listWsContent);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/application/geoportalcommon/util/URLParserUtil.java b/src/main/java/org/gcube/application/geoportalcommon/util/URLParserUtil.java
new file mode 100644
index 0000000..e373b91
--- /dev/null
+++ b/src/main/java/org/gcube/application/geoportalcommon/util/URLParserUtil.java
@@ -0,0 +1,96 @@
+package org.gcube.application.geoportalcommon.util;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The Class URLUtil.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
+ *
+ * Oct 29, 2020
+ */
+public class URLParserUtil {
+
+ /**
+ * Adds the parameter to query string.
+ *
+ * @param key the key
+ * @param value the value
+ * @param prefixAmpersand the prefix ampersand
+ * @param suffixAmpersand the suffix ampersand
+ * @return the string
+ */
+ public static String addParameterToQueryString(String key, String value, boolean prefixAmpersand,
+ boolean suffixAmpersand) {
+
+ String queryParameter = "";
+
+ if (prefixAmpersand)
+ queryParameter += "&";
+
+ queryParameter += key + "=" + value;
+
+ if (suffixAmpersand)
+ queryParameter += "&";
+
+ return queryParameter;
+
+ }
+
+ /**
+ * Extract value of parameter from URL.
+ *
+ * @param paramName the param name
+ * @param url the url
+ * @return the string
+ */
+ public static String extractValueOfParameterFromURL(String paramName, String url) {
+ int index = url.toLowerCase().indexOf(paramName.toLowerCase() + "="); // ADDING CHAR "=" IN TAIL TO BE SURE THAT
+ // IT
+ // IS A PARAMETER
+ String value = "";
+ if (index > -1) {
+
+ int start = index + paramName.length() + 1; // add +1 for char '='
+ String sub = url.substring(start, url.length());
+ int indexOfSeparator = sub.indexOf("&");
+ int end = indexOfSeparator != -1 ? indexOfSeparator : sub.length();
+ value = sub.substring(0, end);
+ } else
+ return null;
+
+ return value;
+ }
+
+
+ /**
+ * Split query.
+ *
+ * @param url the url
+ * @return the map
+ * @throws UnsupportedEncodingException the unsupported encoding exception
+ */
+ public static Map> splitQuery(URL url) throws UnsupportedEncodingException {
+ final Map> query_pairs = new LinkedHashMap>();
+ final String[] pairs = url.getQuery().split("&");
+ for (String pair : pairs) {
+ final int idx = pair.indexOf("=");
+ final String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair;
+ if (!query_pairs.containsKey(key)) {
+ query_pairs.put(key, new LinkedList());
+ }
+ final String value = idx > 0 && pair.length() > idx + 1
+ ? URLDecoder.decode(pair.substring(idx + 1), "UTF-8")
+ : null;
+ query_pairs.get(key).add(value);
+ }
+ return query_pairs;
+ }
+
+}