From 6230560af79f817db6777293c779334c2b7ca710 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Wed, 1 Sep 2021 17:37:05 +0200 Subject: [PATCH] added download layer --- .../client/ui/GeonaDataViewMainPanel.ui.xml | 2 +- .../client/ui/map/MapView.java | 3 +- .../products/concessioni/ConcessioneView.java | 2 +- .../concessioni/LayerConcessioneView.java | 36 +++++++++++-------- .../client/util/URLUtil.java | 32 +++++++++++++++++ 5 files changed, 58 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml index ba74905..73a6768 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml @@ -32,7 +32,7 @@ - { } - + @UiField HTMLPanel layerConcessionePanel; - + @UiField HTMLPanel mapViewPanel; - + private CustomFlexTable customTable = new CustomFlexTable(); public LayerConcessioneView(LayerConcessioneDV layerDV) { initWidget(uiBinder.createAndBindUi(this)); - GWT.log("Showing: "+layerDV); - + GWT.log("Showing: " + layerDV); + 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); layerConcessionePanel.add(customTable); - - GWT.log("WMS LINK: "+layerDV.getWmsLink()); - if(layerDV.getLayerName()!=null && layerDV.getWmsLink()!=null) { - - + + GWT.log("WMS LINK: " + layerDV.getWmsLink()); + if (layerDV.getLayerName() != null && layerDV.getWmsLink() != null) { + + String pngWMSLink = URLUtil.setValueOfParameter("FORMAT", layerDV.getWmsLink(), "image/png", true); + + customTable.addNextKeyWidget("Layer", new HTML("download image")); + Location italyLocation = ExtentMapUtil.getLocation(PLACE.ITALY); - Coordinate transformedCenterCoordinate = italyLocation.getCoordinate(MAP_PROJECTION.EPSG_3857); + Coordinate transformedCenterCoordinate = italyLocation.getCoordinate(MAP_PROJECTION.EPSG_3857); // Coordinate centerCoordinate = OLFactory.createCoordinate(GeoportalDataViewerConstants.ITALY_CENTER_LONG, GeoportalDataViewerConstants.ITALY_CENTER_LAT); // Coordinate transformedCenterCoordinate = MapUtils.transformCoordiante(centerCoordinate, MAP_PROJECTION.EPSG_4326.getName(), MAP_PROJECTION.EPSG_3857.getName()); - MapView mapView = new MapView(transformedCenterCoordinate, GeoportalDataViewerConstants.LIGHT_MAP_ITALY_FIT_ZOOM_ON, "70%", "300px"); - + MapView mapView = new MapView(transformedCenterCoordinate, + GeoportalDataViewerConstants.LIGHT_MAP_ITALY_FIT_ZOOM_ON, "70%", "300px"); + mapViewPanel.add(mapView); - String mapServerHost = layerDV.getWmsLink().contains("?")? layerDV.getWmsLink().substring(0,layerDV.getWmsLink().indexOf("?")):layerDV.getWmsLink(); + String mapServerHost = layerDV.getWmsLink().contains("?") + ? layerDV.getWmsLink().substring(0, layerDV.getWmsLink().indexOf("?")) + : layerDV.getWmsLink(); mapView.addWMSLayer(mapServerHost, layerDV.getLayerName(), layerDV.getBbox()); } } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/URLUtil.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/URLUtil.java index adb64bd..85539da 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/URLUtil.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/URLUtil.java @@ -1,5 +1,8 @@ package org.gcube.portlets.user.geoportaldataviewer.client.util; +import org.gcube.spatial.data.geoutility.bean.WmsParameters; + +// TODO: Auto-generated Javadoc /** * The Class URLUtil. * @@ -60,6 +63,35 @@ public class URLUtil { } + + /** + * Sets the value of parameter. + * + * @param wmsParam the wms param + * @param wmsLink the wms link + * @param newValue the new value + * @param addIfNotExists the add if not exists + * @return the string + */ + public static String setValueOfParameter(String wmsParam, String wmsLink, String newValue, boolean addIfNotExists){ + String toLowerWmsLink = wmsLink.toLowerCase(); + String toLowerWmsParam = wmsParam.toLowerCase(); + + int index = toLowerWmsLink.indexOf(toLowerWmsParam+"="); //END WITH CHAR "=" TO BE SURE THAT IT IS A PARAMETER + if(index > -1){ + int indexStartValue = index + toLowerWmsParam.length()+1; //add +1 for char '=' + int indexOfSeparator = toLowerWmsLink.indexOf("&", indexStartValue); //GET THE FIRST "&" STARTING FROM INDEX VALUE +// logger.trace("indexOfSeparator index of "+wmsParam+ " is: "+indexOfSeparator); + int indexEndValue = indexOfSeparator!=-1?indexOfSeparator:toLowerWmsLink.length(); +// logger.trace("end: "+indexEndValue); + return wmsLink.substring(0, indexStartValue) + newValue +wmsLink.substring(indexEndValue, wmsLink.length()); + }else if (addIfNotExists){ + wmsLink+="&"+wmsParam+"="+newValue; + } +// logger.trace("return value: "+value); + return wmsLink; + } + /** * Extract value of parameter from URL. *