diff --git a/CHANGELOG.md b/CHANGELOG.md index be61fca..a97ce62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ 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 +[#21890] Passed to mongoID +Passed to gcube-bom 2.0.1 + + ## [v1.0.0] - 2020-12-01 First release diff --git a/pom.xml b/pom.xml index db1475d..9e1198a 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 @@ -41,7 +41,7 @@ org.gcube.distribution gcube-bom - 2.0.0 + 2.0.1 pom import @@ -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/GeoNaItemRef.java b/src/main/java/org/gcube/application/geoportalcommon/shared/GeoNaItemRef.java index 6396bdf..d82bc08 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/GeoNaItemRef.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/GeoNaItemRef.java @@ -6,9 +6,9 @@ import java.io.Serializable; /** * The Class GeoNaItemRef. * - * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it * - * Dec 1, 2020 + * Jul 30, 2021 */ public class GeoNaItemRef implements Serializable { @@ -17,7 +17,8 @@ public class GeoNaItemRef implements Serializable { */ private static final long serialVersionUID = -7021431511279022193L; - private Long itemId; + // this is the mongoID + private String itemId; private String itemType; private String itemName; @@ -37,7 +38,7 @@ public class GeoNaItemRef implements Serializable { * @param itemId the item id * @param itemType the item type */ - public GeoNaItemRef(Long itemId, String itemType) { + public GeoNaItemRef(String itemId, String itemType) { super(); this.itemId = itemId; this.itemType = itemType; @@ -48,7 +49,7 @@ public class GeoNaItemRef implements Serializable { * * @return the item id */ - public Long getItemId() { + public String getItemId() { return itemId; } @@ -57,7 +58,7 @@ public class GeoNaItemRef implements Serializable { * * @param itemId the new item id */ - public void setItemId(Long itemId) { + public void setItemId(String itemId) { this.itemId = itemId; } @@ -96,8 +97,6 @@ public class GeoNaItemRef implements Serializable { public void setItemName(String itemName) { this.itemName = itemName; } - - /** * Gets the restricted link. @@ -157,6 +156,4 @@ public class GeoNaItemRef implements Serializable { return builder.toString(); } - - } 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; + } + +}