diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java index a02f8d5..174b71b 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java @@ -562,7 +562,7 @@ public class GeoportalDataViewer implements EntryPoint { List result = searchPerformedEvent.getData(); if (result != null && result.size() > 0) { - String cqlFilter = "product_id IN("; + String cqlFilter = GeoportalDataViewerConstants.PROJECT_ID_KEY_FEATURE+" IN("; for (DocumentDV documentDV : result) { cqlFilter += "'" + documentDV.getProjectID() + "',"; } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java index bd6dc11..cb698df 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java @@ -28,6 +28,8 @@ public class GeoportalDataViewerConstants { public static enum MapEventType { MOUSE_CLICK, MAP_ZOOM_END, MOVE_END, ADDED_CENTROID_LAYER_TO_MAP } + + public static final String PROJECT_ID_KEY_FEATURE = "projectid"; /** * The Enum LayerType. diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java index adea0ee..72e93e8 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java @@ -30,6 +30,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.gis.ExtentWrapped; import org.gcube.portlets.user.geoportaldataviewer.client.gis.MapUtils; import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerMap; import org.gcube.portlets.user.geoportaldataviewer.client.ui.ModalWindow; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.project.ProjectUtil; import org.gcube.portlets.user.geoportaldataviewer.client.util.StringUtil; import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaSpatialQueryResult; @@ -756,13 +757,13 @@ public class LayerManager { // ProjectDV projectDV = lo.getProjectDV(); Entry firstEntry = projectDV.getTheDocument().getFirstEntryOfMap(); - String htmlMsg = firstEntry.getKey()+": " +firstEntry.getValue(); + String htmlMsg = ProjectUtil.toHMLCode(projectDV.getTheDocument()); String projectIntro = htmlMsg.length() > 100 ? StringUtil.ellipsize(htmlMsg, 100) : htmlMsg; Heading heading = new Heading(4, lo.getProjectDV().getProfileName()); - heading.setTitle("Project ID:"+newProjectID); + heading.setTitle("Project ID: "+newProjectID); heading.getElement().getStyle().setMarginBottom(10, Unit.PX); flowPanel.add(heading); flowPanel.add(new HTML(projectIntro)); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectUtil.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectUtil.java index 4fc7d0e..0e70df2 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectUtil.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectUtil.java @@ -9,6 +9,9 @@ public class ProjectUtil { public static String toHMLCode(T document, String projectID) { String htmlCode = ""; + if (document == null) + return htmlCode; + Entry firstEntrySet = document.getFirstEntryOfMap(); if (firstEntrySet != null) { htmlCode += firstEntrySet.getKey() + ": " + firstEntrySet.getValue() + ""; @@ -21,4 +24,18 @@ public class ProjectUtil { return htmlCode; } + public static String toHMLCode(T document) { + String htmlCode = ""; + + if (document == null) + return htmlCode; + + Entry firstEntrySet = document.getFirstEntryOfMap(); + if (firstEntrySet != null) { + htmlCode += firstEntrySet.getKey() + ": " + firstEntrySet.getValue() + ""; + } + + return htmlCode; + } + } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java index fce172a..4cc6373 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -4,6 +4,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetai import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.DO_LAYER_ACTION; import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.SwapLayer; import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAImages; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.project.ProjectUtil; import org.gcube.portlets.user.geoportaldataviewer.client.util.StringUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject; @@ -58,11 +59,18 @@ public class DragDropLayer extends FlowPanel { this.labelLayerName = new Label(layerName); this.labelLayerName.setTitle(layerItem.getName()); this.labelLayerName.setType(LabelType.INFO); + + String referProject = null; + GWT.log("DragDropLayer for projectDV: "+ layerObject.getProjectDV()); + if(layerObject.getProjectDV()!=null && layerObject.getProjectDV().getTheDocument()!=null) { + referProject = ProjectUtil.toHMLCode(layerObject.getProjectDV().getTheDocument()); + } - LayerItem refConcessione = layerObject.getLayerItem(); - String nameConcessione = StringUtil.ellipsize(refConcessione.getName(), 40); + referProject = referProject!=null?referProject:layerObject.getLayerItem().getName(); + //LayerItem refConcessione = layerObject.getLayerItem(); + String nameConcessione = StringUtil.ellipsize(referProject, 40); com.google.gwt.user.client.ui.Label labelConcessione = new com.google.gwt.user.client.ui.Label(nameConcessione); - labelConcessione.setTitle(refConcessione.getName()); + labelConcessione.setTitle(referProject); getElement().getStyle().setMarginTop(5, Unit.PX); getElement().getStyle().setMarginBottom(10, Unit.PX); 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 c8e5d9f..124708a 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 @@ -10,11 +10,11 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import org.bson.Document; import org.gcube.application.geoportal.common.model.configuration.Configuration; @@ -50,6 +50,7 @@ import org.gcube.application.geoportalcommon.shared.gis.BoundsMap; import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV; import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV; import org.gcube.application.geoportalcommon.util.URLParserUtil; +import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerService; import org.gcube.portlets.user.geoportaldataviewer.server.gis.FeatureParser; import org.gcube.portlets.user.geoportaldataviewer.server.gis.WMSUrlValidator; @@ -68,7 +69,6 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wfs.FeatureRow; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.GeoInformationForWMSRequest; 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.spatial.data.geoutility.GeoNcWMSMetadataUtility; import org.gcube.spatial.data.geoutility.bean.LayerStyles; import org.gcube.spatial.data.geoutility.bean.LayerZAxis; @@ -89,7 +89,6 @@ import com.google.gwt.user.server.rpc.RemoteServiceServlet; @SuppressWarnings("serial") public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet implements GeoportalDataViewerService { - public static final String PRODUCT_ID = "product_id"; private static final Logger LOG = LoggerFactory.getLogger(GeoportalDataViewerServiceImpl.class); @@ -520,53 +519,53 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme return listDAO; } - /** - * Gets the preview image for concessione from http session. It is the first - * image retrieved from mongoService for mongoConcessioneId. Caching it into - * session - * - * @param httpServletRequest the http servlet request - * @param itemType the item type - * @param mongoConcessioneId the mongo concessione id - * @return the preview image for concessione - */ - private UploadedImageDV sessionloadPreviewImageForConcessione(HttpServletRequest httpServletRequest, - String itemType, String mongoConcessioneId) { - LOG.info("sessionloadPreviewImageForConcessione [mongoConcessioneId: " + mongoConcessioneId + ", itemType: " - + itemType + "] called"); - - HttpSession session = httpServletRequest.getSession(); - Map> mapImages = null; - List lUI = null; - try { - mapImages = (LinkedHashMap) session.getAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE); - - if (mapImages == null) { - mapImages = new LinkedHashMap>(); - } - - List imagePreviewForConcessione = mapImages.get(mongoConcessioneId); - - if (imagePreviewForConcessione == null || imagePreviewForConcessione.size() == 0) { - LOG.info("Into " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session the mongoConcessioneId " - + mongoConcessioneId + " is empty or null, loading from service and filling it"); - lUI = getUploadedImagesForId(httpServletRequest, itemType, mongoConcessioneId, 1); - mapImages.put(mongoConcessioneId, lUI); - } - - lUI = mapImages.get(mongoConcessioneId); - LOG.info("From " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session read image: " + lUI); - session.setAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE, mapImages); - - } catch (Exception e) { - LOG.warn("Error occurred when instancing the " + UrlShortener.class.getSimpleName(), e); - } - - if (lUI == null || lUI.isEmpty()) - return null; - - return lUI.get(0); - } +// /** +// * Gets the preview image for concessione from http session. It is the first +// * image retrieved from mongoService for mongoConcessioneId. Caching it into +// * session +// * +// * @param httpServletRequest the http servlet request +// * @param itemType the item type +// * @param mongoConcessioneId the mongo concessione id +// * @return the preview image for concessione +// */ +// private UploadedImageDV sessionloadPreviewImageForConcessione(HttpServletRequest httpServletRequest, +// String itemType, String mongoConcessioneId) { +// LOG.info("sessionloadPreviewImageForConcessione [mongoConcessioneId: " + mongoConcessioneId + ", itemType: " +// + itemType + "] called"); +// +// HttpSession session = httpServletRequest.getSession(); +// Map> mapImages = null; +// List lUI = null; +// try { +// mapImages = (LinkedHashMap) session.getAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE); +// +// if (mapImages == null) { +// mapImages = new LinkedHashMap>(); +// } +// +// List imagePreviewForConcessione = mapImages.get(mongoConcessioneId); +// +// if (imagePreviewForConcessione == null || imagePreviewForConcessione.size() == 0) { +// LOG.info("Into " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session the mongoConcessioneId " +// + mongoConcessioneId + " is empty or null, loading from service and filling it"); +// lUI = getUploadedImagesForId(httpServletRequest, itemType, mongoConcessioneId, 1); +// mapImages.put(mongoConcessioneId, lUI); +// } +// +// lUI = mapImages.get(mongoConcessioneId); +// LOG.info("From " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session read image: " + lUI); +// session.setAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE, mapImages); +// +// } catch (Exception e) { +// LOG.warn("Error occurred when instancing the " + UrlShortener.class.getSimpleName(), e); +// } +// +// if (lUI == null || lUI.isEmpty()) +// return null; +// +// return lUI.get(0); +// } /** * Gets the uploaded images for id. @@ -1135,7 +1134,7 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme // Expected 1 feature FeatureRow fRow = features.get(0); if (fRow.getMapProperties() != null) { - List productIDs = fRow.getMapProperties().get("projectid"); + List productIDs = fRow.getMapProperties().get(GeoportalDataViewerConstants.PROJECT_ID_KEY_FEATURE); if (productIDs != null && productIDs.size() > 0) { String projectID = productIDs.get(0); layerObject.setProjectID(projectID); @@ -1197,49 +1196,42 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme // TODO CHECK THIS // Getting the projectid from WFS features, but limiting to the first one, Do we // have more than one centroid in the same position?? - + + //Mininal set of info for displaying into popup if (layerObject.getProjectDV() == null) { - + ProjectDV projectDV = new ProjectDV(); + projectDV.setId(layerObject.getProjectID()); + projectDV.setProfileName(layerObject.getProfileID()); + layerObject.setProjectDV(projectDV); + } + + if(layerObject.getProjectDV().getTheDocument()==null) { Project theProject; try { theProject = GeoportalClientCaller.projects().getProjectByID(layerObject.getProfileID(), layerObject.getProjectID()); - - ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder().fullDocumentMap(false); - ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(theProject, projectBuilder); - layerObject.setProjectDV(projectDV); + + + LinkedHashMap documentAsMap = new LinkedHashMap(1); + + Entry firstEntry = null; + try { + firstEntry = theProject.getTheDocument().entrySet().iterator().next(); + documentAsMap.put(firstEntry.getKey(), firstEntry.getValue()); + }catch (Exception e) { + //Silent + } + + DocumentDV documentDV = new DocumentDV(); + documentDV.setDocumentAsMap(documentAsMap); + layerObject.getProjectDV().setTheDocument(documentDV); } catch (Exception e) { - String erroMsg = "Error occurred on loading project for profileID "+layerObject.getProfileID()+" and projectID "+layerObject.getProjectID(); + String erroMsg = "Error occurred on loading document for profileID "+layerObject.getProfileID()+" and projectID "+layerObject.getProjectID(); LOG.warn(erroMsg, e); } - } -// for (FeatureRow fRow : features) { -// if (fRow.getMapProperties() != null) { -// List productIDs = fRow.getMapProperties().get("projectid"); -// if (productIDs != null && productIDs.size() > 0) { -// String projectID = productIDs.get(0); -// layerObject.setProjectID(projectID); -// String profileID = layerObject.getProfileID(); -// try { -// Project theProject = GeoportalClientCaller.projects().getProjectByID(profileID, -// projectID); -// ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder() -// .fullDocumentMap(false); -// ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(theProject, -// projectBuilder); -// // geoDAO.setProjectDV(projectDV); -// layerObject.setProjectDV(projectDV); -// // Limiting to 1 feature of Layers -// continue; -// } catch (Exception e) { -// LOG.warn("Error on loading the Project for projectID: " + projectID + " profileID: " -// + profileID); -// } -// } -// } -// } + LOG.debug("Case PROJECT_LAYER/GENERIC_LAYER setting layerObject: " + layerObject); geoDAO.setSourceLayerObject(layerObject); LOG.info("For layer name: " + layerObject.getLayerItem().getName() + " got " + features.size() + " feature/s");