From ae92ea0c3d8e0516b6f6847a579870bd76482fd1 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 14 Oct 2022 15:22:54 +0200 Subject: [PATCH] Deserialization of layers done --- .../ConvertToDataValueObjectModel.java | 2 +- .../geoportalcommon/SerializerUtil.java | 17 ++++++ ...CubeSDILayerDV.java => GCubeSDILayer.java} | 9 ++- .../GCubeSDIViewerLayerDV.java | 56 +++++++++++++++++++ .../GeoServerPlatformInfoDV.java | 6 +- .../materialization/IndexLayerDV.java | 6 +- .../{ => innerobject}/BBOXDV.java | 2 +- .../{ => innerobject}/FilesetDV.java | 2 +- .../{ => innerobject}/PayloadDV.java | 2 +- .../shared/geoportal/view/CheckEmpty.java | 7 +++ .../shared/geoportal/view/SectionView.java | 15 ++++- .../geoportal/view/SubDocumentView.java | 34 ++++++++--- 12 files changed, 135 insertions(+), 23 deletions(-) rename src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/{GCubeSDILayerDV.java => GCubeSDILayer.java} (87%) create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDIViewerLayerDV.java rename src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/{ => innerobject}/BBOXDV.java (99%) rename src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/{ => innerobject}/FilesetDV.java (97%) rename src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/{ => innerobject}/PayloadDV.java (97%) create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/CheckEmpty.java diff --git a/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java index 0cb83b7..2fabc51 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java +++ b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java @@ -42,7 +42,7 @@ import org.gcube.application.geoportalcommon.shared.geoportal.config.FilePathDV; import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV; import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV; import org.gcube.application.geoportalcommon.shared.geoportal.materialization.IndexLayerDV; -import org.gcube.application.geoportalcommon.shared.geoportal.materialization.PayloadDV; +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.PayloadDV; import org.gcube.application.geoportalcommon.shared.geoportal.project.AccessDV; import org.gcube.application.geoportalcommon.shared.geoportal.project.AccountingInfoDV; import org.gcube.application.geoportalcommon.shared.geoportal.project.BasicLifecycleInformationDV; diff --git a/src/main/java/org/gcube/application/geoportalcommon/SerializerUtil.java b/src/main/java/org/gcube/application/geoportalcommon/SerializerUtil.java index 017e088..1e73e9a 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/SerializerUtil.java +++ b/src/main/java/org/gcube/application/geoportalcommon/SerializerUtil.java @@ -7,11 +7,15 @@ import java.io.InputStream; import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GeoServerPlatformInfoDV; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.module.SimpleModule; @@ -87,5 +91,18 @@ public class SerializerUtil { return null; } } + + + public static class GeoserverPlaformInfoJsonDeserializer extends JsonDeserializer { + + @Override + public GeoServerPlatformInfoDV[] deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { + LOG.info("Sono qui: " +jp.getValueAsString()); + return jp.readValueAs(GeoServerPlatformInfoDV[].class); + //return jp.readValueAs(GeoServerPlatformInfoDV[].class); + //List listPlatform = jp.readValueAs(new TypeReference>() {}); + } + + } } diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDILayerDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDILayer.java similarity index 87% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDILayerDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDILayer.java index e0dd0cb..0635eef 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDILayerDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDILayer.java @@ -4,9 +4,12 @@ import java.io.Serializable; import java.util.HashMap; import java.util.List; +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.BBOXDV; + import com.fasterxml.jackson.annotation.JsonProperty; -public class GCubeSDILayerDV implements Serializable { + +public class GCubeSDILayer implements Serializable { // TODO manage heterogeneus collection @@ -23,7 +26,7 @@ public class GCubeSDILayerDV implements Serializable { @JsonProperty(value = "_ogcLinks") private HashMap ogcLinks; - public GCubeSDILayerDV() { + public GCubeSDILayer() { } @@ -62,7 +65,7 @@ public class GCubeSDILayerDV implements Serializable { @Override public String toString() { StringBuilder builder = new StringBuilder(); - builder.append("GCubeSDILayerDV [type="); + builder.append("GCubeSDILayer [type="); builder.append(type); builder.append(", platformInfos="); builder.append(platformInfos); diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDIViewerLayerDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDIViewerLayerDV.java new file mode 100644 index 0000000..67a2f46 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GCubeSDIViewerLayerDV.java @@ -0,0 +1,56 @@ +package org.gcube.application.geoportalcommon.shared.geoportal.materialization; + +import java.io.Serializable; +import java.util.HashMap; + +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.BBOXDV; + +public class GCubeSDIViewerLayerDV implements Serializable { + + private static final long serialVersionUID = 7987868754775312895L; + private String type; + private BBOXDV bbox; + private HashMap ogcLinks; + + public GCubeSDIViewerLayerDV() { + + } + + public String getType() { + return type; + } + + public BBOXDV getBbox() { + return bbox; + } + + public HashMap getOgcLinks() { + return ogcLinks; + } + + public void setType(String type) { + this.type = type; + } + + public void setBbox(BBOXDV bbox) { + this.bbox = bbox; + } + + public void setOgcLinks(HashMap ogcLinks) { + this.ogcLinks = ogcLinks; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("GCubeSDIViewerLayerDV [type="); + builder.append(type); + builder.append(", bbox="); + builder.append(bbox); + builder.append(", ogcLinks="); + builder.append(ogcLinks); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GeoServerPlatformInfoDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GeoServerPlatformInfoDV.java index 22aec39..f680bbd 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GeoServerPlatformInfoDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/GeoServerPlatformInfoDV.java @@ -17,14 +17,14 @@ public class GeoServerPlatformInfoDV implements Serializable { private String workspace; private String storeName; - public GeoServerPlatformInfoDV() { - } - @JsonProperty(value = "_host") private String host; private Map ogcLinks; + public GeoServerPlatformInfoDV() { + } + public String getType() { return type; } diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/IndexLayerDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/IndexLayerDV.java index fa55378..f14200d 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/IndexLayerDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/IndexLayerDV.java @@ -13,7 +13,7 @@ public class IndexLayerDV implements Serializable { @JsonProperty(value = "_type") private String type; - private GCubeSDILayerDV layer; + private GCubeSDILayer layer; private String indexName; private int records; private String flag; @@ -30,11 +30,11 @@ public class IndexLayerDV implements Serializable { this.type = type; } - public GCubeSDILayerDV getLayer() { + public GCubeSDILayer getLayer() { return layer; } - public void setLayer(GCubeSDILayerDV layer) { + public void setLayer(GCubeSDILayer layer) { this.layer = layer; } diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/BBOXDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/BBOXDV.java similarity index 99% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/BBOXDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/BBOXDV.java index 78f2b60..7689059 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/BBOXDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/BBOXDV.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.shared.geoportal.materialization; +package org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject; import java.util.HashMap; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/FilesetDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/FilesetDV.java similarity index 97% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/FilesetDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/FilesetDV.java index b4e1b1f..8a3520c 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/FilesetDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/FilesetDV.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.shared.geoportal.materialization; +package org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject; import java.io.Serializable; import java.util.ArrayList; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/PayloadDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/PayloadDV.java similarity index 97% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/PayloadDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/PayloadDV.java index 69cbb6e..22e46ce 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/PayloadDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/materialization/innerobject/PayloadDV.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.shared.geoportal.materialization; +package org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject; import java.io.Serializable; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/CheckEmpty.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/CheckEmpty.java new file mode 100644 index 0000000..c8e5ec1 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/CheckEmpty.java @@ -0,0 +1,7 @@ +package org.gcube.application.geoportalcommon.shared.geoportal.view; + +public interface CheckEmpty { + + public boolean isEmpty(); + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java index 035f229..6eceb17 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SectionView.java @@ -4,7 +4,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -public class SectionView implements Serializable { +public class SectionView implements Serializable, CheckEmpty { /** * @@ -17,6 +17,19 @@ public class SectionView implements Serializable { public SectionView() { } + + public boolean isEmpty(){ + if (listSubDocuments == null) + return true; + + for (SubDocumentView subDocumentView : listSubDocuments) { + boolean isEmpty = subDocumentView.isEmpty(); + if(isEmpty) + return true; + } + + return false; + } public String getSectionTitle() { return sectionTitle; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SubDocumentView.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SubDocumentView.java index 2de2604..cbd5eec 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SubDocumentView.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/view/SubDocumentView.java @@ -3,12 +3,11 @@ package org.gcube.application.geoportalcommon.shared.geoportal.view; import java.io.Serializable; import java.util.List; -import org.gcube.application.geoportalcommon.shared.geoportal.materialization.FilesetDV; -import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GCubeSDILayerDV; +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GCubeSDIViewerLayerDV; +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.FilesetDV; + +public class SubDocumentView implements Serializable, CheckEmpty { -public class SubDocumentView implements Serializable { - - /** * */ @@ -18,12 +17,30 @@ public class SubDocumentView implements Serializable { private List listFiles; private List listImages; - private List listLayers; + private List listLayers; public SubDocumentView() { } + @Override + public boolean isEmpty() { + + if (metadataAsJSON != null && !metadataAsJSON.isEmpty()) + return false; + + if (listFiles != null && !listFiles.isEmpty()) + return false; + + if (listImages != null && !listImages.isEmpty()) + return false; + + if (listLayers != null && !listLayers.isEmpty()) + return false; + + return true; + } + public String getMetadataAsJSON() { return metadataAsJSON; } @@ -36,7 +53,7 @@ public class SubDocumentView implements Serializable { return listImages; } - public List getListLayers() { + public List getListLayers() { return listLayers; } @@ -52,7 +69,7 @@ public class SubDocumentView implements Serializable { this.listImages = listImages; } - public void setListLayers(List listLayers) { + public void setListLayers(List listLayers) { this.listLayers = listLayers; } @@ -71,5 +88,4 @@ public class SubDocumentView implements Serializable { return builder.toString(); } - }