From 6986aa493de7a0b0ca60c85e8526e2f03f2d75c7 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 14 Oct 2022 17:19:40 +0200 Subject: [PATCH] Starting LayerSectionViewer --- .../ui/cms/gallery/ImagesSectionGallery.java | 23 +- .../ui/cms/layers/LayersSectionViewer.java | 206 ++++++++++++++++++ .../ui/cms/layers/LayersSectionViewer.ui.xml | 17 ++ .../client/ui/cms/project/SectionViewer.java | 19 +- .../GeoportalDataViewerServiceImpl.java | 32 --- .../server/Geoportal_JSON_Mapper.java | 23 +- .../GeoportalViewer_Tests.java | 2 +- 7 files changed, 267 insertions(+), 55 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.ui.xml diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/gallery/ImagesSectionGallery.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/gallery/ImagesSectionGallery.java index 0c24ecd..77a4248 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/gallery/ImagesSectionGallery.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/gallery/ImagesSectionGallery.java @@ -29,6 +29,17 @@ public class ImagesSectionGallery { private String galleryDivId; private SectionView sectionView; + /** + * Instantiates a new images section gallery. + * + * @param sectionView the section view + */ + public ImagesSectionGallery(SectionView sectionView) { + this.galleryDivId = "nanogallery" + Random.nextInt() + Random.nextInt(); + this.galleryPanel = new HTMLPanel("
"); + this.sectionView = sectionView; + } + /** * Show gallery. * @@ -116,18 +127,6 @@ public class ImagesSectionGallery { }-*/; - - /** - * Instantiates a new images section gallery. - * - * @param sectionView the section view - */ - public ImagesSectionGallery(SectionView sectionView) { - this.galleryDivId = "nanogallery" + Random.nextInt() + Random.nextInt(); - this.galleryPanel = new HTMLPanel("
"); - this.sectionView = sectionView; - } - /** * Gets the gallery panel. * diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.java new file mode 100644 index 0000000..2864e0b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.java @@ -0,0 +1,206 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.layers; + +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GCubeSDIViewerLayerDV; +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.BBOXDV; +import org.gcube.application.geoportalcommon.shared.gis.BoundsMap; +import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; +import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil.Location; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil.PLACE; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.MapView; +import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil; + +import com.github.gwtbootstrap.client.ui.DropdownButton; +import com.github.gwtbootstrap.client.ui.NavLink; +import com.github.gwtbootstrap.client.ui.constants.ButtonType; +import com.github.gwtbootstrap.client.ui.constants.IconType; +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.Widget; + +import ol.Coordinate; + +public class LayersSectionViewer extends Composite { + + private static LayersSectionViewerUiBinder uiBinder = GWT.create(LayersSectionViewerUiBinder.class); + + interface LayersSectionViewerUiBinder extends UiBinder { + } + + @UiField + HTMLPanel layerPanel; + + @UiField + HTMLPanel mapViewPanel; + + private static enum IMAGE_EXPORT_AS { + PNG, JPEG + }; + + int downloadAttempt = 0; + + public LayersSectionViewer(GCubeSDIViewerLayerDV layer) { + initWidget(uiBinder.createAndBindUi(this)); + GWT.log("Showing: " + layer); + + String wmsLink = null; + try { + wmsLink = layer.getOgcLinks().get("wms"); + }catch (Exception e) { + return; + } + + String layerName = URLUtil.extractValueOfParameterFromURL("layers", wmsLink); + + GWT.log("WMS LINK: " + wmsLink); + GWT.log("layerName: " + layerName); + + DropdownButton exportMapButton = new DropdownButton("Export Map as..."); + exportMapButton.setType(ButtonType.LINK); + exportMapButton.setIcon(IconType.DOWNLOAD_ALT); + exportMapButton.setTitle("Export the map view (OSM + layer) as an image..."); + Style exportStyle = exportMapButton.getElement().getStyle(); + //exportStyle.setWidth(100, Unit.PCT); + exportStyle.setMarginLeft(70, Unit.PCT); + + Location italyLocation = ExtentMapUtil.getLocation(PLACE.ITALY); + Coordinate transformedCenterCoordinate = italyLocation.getCoordinate(MAP_PROJECTION.EPSG_3857); + MapView mapView = new MapView(transformedCenterCoordinate, + GeoportalDataViewerConstants.LIGHT_MAP_ITALY_FIT_ZOOM_ON, "70%", "300px"); + + mapViewPanel.add(mapView); + mapViewPanel.add(exportMapButton); + String mapServerHost = wmsLink.contains("?") + ? wmsLink.substring(0,wmsLink.indexOf("?")) + : wmsLink; + + GWT.log("mapServerHost: " + mapServerHost); + + BBOXDV bbox = layer.getBbox(); + GWT.log("bbox: " + bbox); + GWT.log("bbox keys: " + bbox.keySet()); + GWT.log("bbox values: " + bbox.values()); + GWT.log("minX: " + bbox.getMinX()); + GWT.log("minY: " + bbox.getMinY()); + GWT.log("maxX: " + bbox.getMaxX()); + GWT.log("maxY: " + bbox.getMaxY()); + BoundsMap bounds = new BoundsMap(bbox.getMinX(), bbox.getMinY(), bbox.getMaxX(), bbox.getMaxY(), ""); + GWT.log("bounds: " + bounds); + mapView.addWMSLayer(mapServerHost, layerName, bounds); + + String htmlLinkId = mapView.getPanelMapElementId() + "-image-download"; + + for (IMAGE_EXPORT_AS exportType : IMAGE_EXPORT_AS.values()) { + NavLink navLink = new NavLink(exportType.name()); + String exportExt = exportType.name().toLowerCase(); + String filename = layerName + "." + exportExt; + String mimeType = "image/" + exportExt; + final HTML htmlLink = new HTML(""); + navLink.getElement().appendChild(htmlLink.getElement()); + navLink.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + // DOWNLOAD only the layer by Geoserver + /* + * Map mapLayerURLs = + * mapView.getLightOLSM().getLayerURLsProperty(); Collection layerURLs = + * mapLayerURLs.values(); ArrayList layers = new + * ArrayList(layerURLs); exportPDF(layers.get(0)); String layerURL = + * mapLayerURLs.get(layerDV.getLayerName()); GWT.log("layerDV name is: " + + * layerDV.getLayerName()); if (layerURL != null) Window.open(layerURL, + * "_blank", null); + */ + + downloadAttempt++; + + if (downloadAttempt > 3) { + Window.alert("LOOP"); + return; + } + + // DOWNLOAD the OSM + layer by canvas + downloadMap(mapView.getLightOLM().getMap(), mapView.getPanelMapElementId(), htmlLinkId, + filename, mimeType); + // mapExport(mapView.getLightOLSM().getMap(), mapView.getPanelMapElementId()); + } + }); + + exportMapButton.add(navLink); + + } + //mapViewPanel.add(exportMapButton); + + +// customTable.addNextKeyValue("Abstract", layerDV.getAbstractSection()); +// customTable.addNextKeyValue("Valutazione qualità", layerDV.getValutazioneQualita()); +// customTable.addNextKeyValue("Metodo raccolta dati", layerDV.getMetodoRaccoltaDati()); +// customTable.addNextKeyValue("Scala acquisizione dati", layerDV.getScalaAcquisizione()); +// customTable.addNextKeyValues("Autori", layerDV.getAuthors(), GeoportalDataViewerConstants.NEW_LINE_BR); +// layerPanel.add(customTable); + } + + public static native void exportPDF(String layerURL) /*-{ + var image = new Image(layerURL); + + var doc = new $wnd.jspdf.jsPDF(); + doc.addImage(layerURL, 'PNG', 0, 0, image.width, image.height); + doc.save("map.pdf") + }-*/; + + /** + * Prints the. + * + * @param msg the msg + */ + public static native void downloadMap(ol.Map map, String mapPanelId, String linkId, String filename, + String mimeType)/*-{ + console.log("map: " + map); + + map.once('rendercomplete', function() { + var mapCanvas = $doc.createElement('canvas'); + var size = map.getSize(); + mapCanvas.width = size[0]; + mapCanvas.height = size[1]; + var mapContext = mapCanvas.getContext('2d'); + var mapContainer = $doc.querySelector('#' + mapPanelId); + //console.log("mapContainer:" +JSON.stringify(mapContainer, null, 4)); + Array.prototype.forEach.call(mapContainer + .querySelectorAll('.ol-layer canvas'), function(canvas) { + if (canvas.width > 0) { + var opacity = canvas.parentNode.style.opacity; + mapContext.globalAlpha = opacity === '' ? 1 + : Number(opacity); + var transform = canvas.style.transform; + // Get the transform parameters from the style's transform matrix + var matrix = transform.match(/^matrix\(([^\(]*)\)$/)[1] + .split(',').map(Number); + // Apply the transform to the export map context + CanvasRenderingContext2D.prototype.setTransform.apply( + mapContext, matrix); + mapContext.drawImage(canvas, 0, 0); + } + }); + if (navigator.msSaveBlob) { + // link download attribute does not work on MS browsers + navigator.msSaveBlob(mapCanvas.msToBlob(), filename); + } else { + var link = $doc.getElementById(linkId); + link.href = mapCanvas.toDataURL(mimeType); + link.click(); + } + }); + map.renderSync(); + }-*/; +} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.ui.xml new file mode 100644 index 0000000..4ed0925 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/layers/LayersSectionViewer.ui.xml @@ -0,0 +1,17 @@ + + + + + .important { + font-weight: bold; + } + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/SectionViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/SectionViewer.java index 824abdf..49e2636 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/SectionViewer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/SectionViewer.java @@ -2,12 +2,14 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.project; import java.util.List; +import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GCubeSDIViewerLayerDV; import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.FilesetDV; import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.PayloadDV; import org.gcube.application.geoportalcommon.shared.geoportal.view.SectionView; import org.gcube.application.geoportalcommon.shared.geoportal.view.SubDocumentView; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.gallery.ImagesSectionGallery; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.layers.LayersSectionViewer; import org.gcube.portlets.user.geoportaldataviewer.client.ui.util.CustomFlexTable; import com.github.gwtbootstrap.client.ui.PageHeader; @@ -61,15 +63,30 @@ public class SectionViewer extends Composite { // Displaying the whole section as a Gallery if (displayAsGallery) { + GWT.log("displayAsGallery the: "+sectionView); ImagesSectionGallery sectionGallery = new ImagesSectionGallery(sectionView); sectionPanelContainer.add(sectionGallery.getGalleryPanel()); sectionGallery.fillGallery(); // Displaying the whole section as a Map of Layers } else if (displayAsMapOfLayers) { - + GWT.log("displayAsMapOfLayers the: "+sectionView); + for (SubDocumentView subDocumentView : subDocuments) { + String table = GeoportalDataViewerConstants.jsonToTableHTML(subDocumentView.getMetadataAsJSON()); + sectionPanelContainer.add(new HTML(table)); + + List layers = subDocumentView.getListLayers(); + if (layers != null) { + for (GCubeSDIViewerLayerDV gCubeLayer : layers) { + LayersSectionViewer layerSectionViewer = new LayersSectionViewer(gCubeLayer); + sectionPanelContainer.add(layerSectionViewer); + //showLinkToDownloadWsContent(fileset.getName(), fileset.getListPayload()); + } + } + } }else { + GWT.log("displaying default the: "+sectionView); for (SubDocumentView subDocumentView : subDocuments) { String table = GeoportalDataViewerConstants.jsonToTableHTML(subDocumentView.getMetadataAsJSON()); sectionPanelContainer.add(new HTML(table)); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java index dfdda3b..dad8e72 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java @@ -3,7 +3,6 @@ package org.gcube.portlets.user.geoportaldataviewer.server; import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.projects; import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -18,7 +17,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.bson.Document; -import org.gcube.application.geoportal.client.utils.Serialization; import org.gcube.application.geoportal.common.model.configuration.Configuration; import org.gcube.application.geoportal.common.model.configuration.Index; import org.gcube.application.geoportal.common.model.document.Project; @@ -30,8 +28,6 @@ import org.gcube.application.geoportalcommon.GeoportalCommon; import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller; import org.gcube.application.geoportalcommon.geoportal.ProjectsCaller; import org.gcube.application.geoportalcommon.geoportal.UseCaseDescriptorCaller; -import org.gcube.application.geoportalcommon.geoportal.access.GeportalCheckAccessPolicy; -import org.gcube.application.geoportalcommon.geoportal.serdes.Payload; import org.gcube.application.geoportalcommon.shared.GNADataViewerConfigProfile; import org.gcube.application.geoportalcommon.shared.GeoNaItemRef; import org.gcube.application.geoportalcommon.shared.LayerItem; @@ -40,23 +36,13 @@ import org.gcube.application.geoportalcommon.shared.SearchingFilter; import org.gcube.application.geoportalcommon.shared.geoportal.ConfigurationDV; import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV; import org.gcube.application.geoportalcommon.shared.geoportal.ResultDocumentDV; -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.GCubeSDILayer; -import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GCubeSDIViewerLayerDV; import org.gcube.application.geoportalcommon.shared.geoportal.materialization.IndexLayerDV; -import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.BBOXDV; -import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.FilesetDV; -import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.PayloadDV; import org.gcube.application.geoportalcommon.shared.geoportal.project.ProjectDV; -import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_CONFIGURATION_TYPE; import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_DATA_HANDLER; import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclarationDV; import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV; import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView; -import org.gcube.application.geoportalcommon.shared.geoportal.view.SectionView; -import org.gcube.application.geoportalcommon.shared.geoportal.view.SubDocumentView; import org.gcube.application.geoportalcommon.shared.gis.BoundsMap; import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV; import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessioneDV; @@ -79,33 +65,15 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.GeoInformation import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.Styles; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.ZAxis; import org.gcube.portlets.user.urlshortener.UrlShortener; -import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean; -import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetadataFieldWrapper; import org.gcube.spatial.data.geoutility.GeoNcWMSMetadataUtility; import org.gcube.spatial.data.geoutility.bean.LayerStyles; import org.gcube.spatial.data.geoutility.bean.LayerZAxis; import org.gcube.spatial.data.geoutility.bean.WmsParameters; import org.gcube.vomanagement.usermanagement.model.GCubeUser; -import org.json.JSONArray; -import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import com.google.gwt.user.server.rpc.RemoteServiceServlet; -import com.jayway.jsonpath.JsonPath; -import com.jayway.jsonpath.TypeRef; -import com.jayway.jsonpath.spi.json.GsonJsonProvider; -import com.jayway.jsonpath.spi.json.JsonOrgJsonProvider; /** * The server side implementation of the RPC service. diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/Geoportal_JSON_Mapper.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/Geoportal_JSON_Mapper.java index f25bf07..b8d961b 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/Geoportal_JSON_Mapper.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/Geoportal_JSON_Mapper.java @@ -102,12 +102,12 @@ public class Geoportal_JSON_Mapper { } } - // Reading Fileset _materializations - listLayers = readGcubeSDILayersForFileset(filesetJSONPath, wholeSectionDoc); - - // TODO LAYERS subDocumentView.setListImages(listImages); subDocumentView.setListFiles(listFiles); + + // Reading Fileset _materializations / layers + listLayers = readGcubeSDILayersForFileset(filesetJSONPath, wholeSectionDoc); + subDocumentView.setListLayers(listLayers); sectionView.addSubDocument(subDocumentView); projectView.addSectionView(sectionView); @@ -247,6 +247,7 @@ public class Geoportal_JSON_Mapper { } subDocumentView.setListFiles(listFiles); subDocumentView.setListImages(listImages); + subDocumentView.setListLayers(listLayers); } sectionView.addSubDocument(subDocumentView); @@ -304,6 +305,7 @@ public class Geoportal_JSON_Mapper { List listSDILayers = new ArrayList(); String _materializationsJSONPath = String.format("%s.%s", materializationJSONPath, "_materializations"); + try { com.jayway.jsonpath.Configuration configurationJSONSmart = com.jayway.jsonpath.Configuration.builder() .jsonProvider(new JsonOrgJsonProvider()).build(); @@ -351,20 +353,16 @@ public class Geoportal_JSON_Mapper { LOG.warn(jsonPath + " error: ", e); } - GCubeSDIViewerLayerDV sdiLayerDV = Serialization.read(toSerializeJSONOBJ, - GCubeSDIViewerLayerDV.class); - LOG.trace("sdiLayerDV " + i + " is: " + sdiLayerDV); LOG.trace("gsdiLayer " + i + " is: " + gsdiLayer); listSDILayers.add(gsdiLayer); } } - LOG.info("returning list of payloads {}", listSDILayers); } catch (Exception e) { LOG.warn("Error on reading the JSON Path " + _materializationsJSONPath + " in the doc " + sectionJSONDocument, e); } - + LOG.info("returning list of layers {}", listSDILayers); return listSDILayers; } @@ -494,6 +492,13 @@ public class Geoportal_JSON_Mapper { } } } + System.out.println("***** Layers"); + if (subDocument.getListLayers() != null) { + for (GCubeSDIViewerLayerDV layer : subDocument.getListLayers()) { + System.out.println("******* Layer type: " + layer.getType()); + System.out.println("******* Layer: " + layer); + } + } i++; } diff --git a/src/test/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalViewer_Tests.java b/src/test/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalViewer_Tests.java index b083fe0..0d52d1d 100644 --- a/src/test/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalViewer_Tests.java +++ b/src/test/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalViewer_Tests.java @@ -66,7 +66,7 @@ public class GeoportalViewer_Tests { ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); ProjectView projectView = Geoportal_JSON_Mapper.loadProjectView(projectDV, CONTEXT, USERNAME); - System.out.println(projectView); + Geoportal_JSON_Mapper.prettyPrintProjectView(projectView); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();