Fixed WFS on layers

This commit is contained in:
Francesco Mangiacrapa 2022-10-25 14:53:56 +02:00
parent 0900cd46c5
commit 05196b2294
6 changed files with 110 additions and 90 deletions

View File

@ -562,7 +562,7 @@ public class GeoportalDataViewer implements EntryPoint {
List<? extends DocumentDV> result = searchPerformedEvent.getData(); List<? extends DocumentDV> result = searchPerformedEvent.getData();
if (result != null && result.size() > 0) { if (result != null && result.size() > 0) {
String cqlFilter = "product_id IN("; String cqlFilter = GeoportalDataViewerConstants.PROJECT_ID_KEY_FEATURE+" IN(";
for (DocumentDV documentDV : result) { for (DocumentDV documentDV : result) {
cqlFilter += "'" + documentDV.getProjectID() + "',"; cqlFilter += "'" + documentDV.getProjectID() + "',";
} }

View File

@ -28,6 +28,8 @@ public class GeoportalDataViewerConstants {
public static enum MapEventType { public static enum MapEventType {
MOUSE_CLICK, MAP_ZOOM_END, MOVE_END, ADDED_CENTROID_LAYER_TO_MAP MOUSE_CLICK, MAP_ZOOM_END, MOVE_END, ADDED_CENTROID_LAYER_TO_MAP
} }
public static final String PROJECT_ID_KEY_FEATURE = "projectid";
/** /**
* The Enum LayerType. * The Enum LayerType.

View File

@ -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.MapUtils;
import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerMap; 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.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.StringUtil;
import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil; import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil;
import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaSpatialQueryResult; import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaSpatialQueryResult;
@ -756,13 +757,13 @@ public class LayerManager {
// //
ProjectDV projectDV = lo.getProjectDV(); ProjectDV projectDV = lo.getProjectDV();
Entry<String, Object> firstEntry = projectDV.getTheDocument().getFirstEntryOfMap(); Entry<String, Object> 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) String projectIntro = htmlMsg.length() > 100 ? StringUtil.ellipsize(htmlMsg, 100)
: htmlMsg; : htmlMsg;
Heading heading = new Heading(4, lo.getProjectDV().getProfileName()); 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); heading.getElement().getStyle().setMarginBottom(10, Unit.PX);
flowPanel.add(heading); flowPanel.add(heading);
flowPanel.add(new HTML(projectIntro)); flowPanel.add(new HTML(projectIntro));

View File

@ -9,6 +9,9 @@ public class ProjectUtil {
public static <T extends DocumentDV> String toHMLCode(T document, String projectID) { public static <T extends DocumentDV> String toHMLCode(T document, String projectID) {
String htmlCode = ""; String htmlCode = "";
if (document == null)
return htmlCode;
Entry<String, Object> firstEntrySet = document.getFirstEntryOfMap(); Entry<String, Object> firstEntrySet = document.getFirstEntryOfMap();
if (firstEntrySet != null) { if (firstEntrySet != null) {
htmlCode += firstEntrySet.getKey() + ": <b>" + firstEntrySet.getValue() + "</b>"; htmlCode += firstEntrySet.getKey() + ": <b>" + firstEntrySet.getValue() + "</b>";
@ -21,4 +24,18 @@ public class ProjectUtil {
return htmlCode; return htmlCode;
} }
public static <T extends DocumentDV> String toHMLCode(T document) {
String htmlCode = "";
if (document == null)
return htmlCode;
Entry<String, Object> firstEntrySet = document.getFirstEntryOfMap();
if (firstEntrySet != null) {
htmlCode += firstEntrySet.getKey() + ": <b>" + firstEntrySet.getValue() + "</b>";
}
return htmlCode;
}
} }

View File

@ -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.DO_LAYER_ACTION;
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.SwapLayer; 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.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.client.util.StringUtil;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject; 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 = new Label(layerName);
this.labelLayerName.setTitle(layerItem.getName()); this.labelLayerName.setTitle(layerItem.getName());
this.labelLayerName.setType(LabelType.INFO); 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(); referProject = referProject!=null?referProject:layerObject.getLayerItem().getName();
String nameConcessione = StringUtil.ellipsize(refConcessione.getName(), 40); //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); 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().setMarginTop(5, Unit.PX);
getElement().getStyle().setMarginBottom(10, Unit.PX); getElement().getStyle().setMarginBottom(10, Unit.PX);

View File

@ -10,11 +10,11 @@ import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.bson.Document; import org.bson.Document;
import org.gcube.application.geoportal.common.model.configuration.Configuration; 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.ConcessioneDV;
import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV; import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV;
import org.gcube.application.geoportalcommon.util.URLParserUtil; 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.client.GeoportalDataViewerService;
import org.gcube.portlets.user.geoportaldataviewer.server.gis.FeatureParser; import org.gcube.portlets.user.geoportaldataviewer.server.gis.FeatureParser;
import org.gcube.portlets.user.geoportaldataviewer.server.gis.WMSUrlValidator; 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.GeoInformationForWMSRequest;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.Styles; 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.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.GeoNcWMSMetadataUtility;
import org.gcube.spatial.data.geoutility.bean.LayerStyles; import org.gcube.spatial.data.geoutility.bean.LayerStyles;
import org.gcube.spatial.data.geoutility.bean.LayerZAxis; import org.gcube.spatial.data.geoutility.bean.LayerZAxis;
@ -89,7 +89,6 @@ import com.google.gwt.user.server.rpc.RemoteServiceServlet;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet implements GeoportalDataViewerService { public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet implements GeoportalDataViewerService {
public static final String PRODUCT_ID = "product_id";
private static final Logger LOG = LoggerFactory.getLogger(GeoportalDataViewerServiceImpl.class); private static final Logger LOG = LoggerFactory.getLogger(GeoportalDataViewerServiceImpl.class);
@ -520,53 +519,53 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
return listDAO; return listDAO;
} }
/** // /**
* Gets the preview image for concessione from http session. It is the first // * Gets the preview image for concessione from http session. It is the first
* image retrieved from mongoService for mongoConcessioneId. Caching it into // * image retrieved from mongoService for mongoConcessioneId. Caching it into
* session // * session
* // *
* @param httpServletRequest the http servlet request // * @param httpServletRequest the http servlet request
* @param itemType the item type // * @param itemType the item type
* @param mongoConcessioneId the mongo concessione id // * @param mongoConcessioneId the mongo concessione id
* @return the preview image for concessione // * @return the preview image for concessione
*/ // */
private UploadedImageDV sessionloadPreviewImageForConcessione(HttpServletRequest httpServletRequest, // private UploadedImageDV sessionloadPreviewImageForConcessione(HttpServletRequest httpServletRequest,
String itemType, String mongoConcessioneId) { // String itemType, String mongoConcessioneId) {
LOG.info("sessionloadPreviewImageForConcessione [mongoConcessioneId: " + mongoConcessioneId + ", itemType: " // LOG.info("sessionloadPreviewImageForConcessione [mongoConcessioneId: " + mongoConcessioneId + ", itemType: "
+ itemType + "] called"); // + itemType + "] called");
//
HttpSession session = httpServletRequest.getSession(); // HttpSession session = httpServletRequest.getSession();
Map<String, List<UploadedImageDV>> mapImages = null; // Map<String, List<UploadedImageDV>> mapImages = null;
List<UploadedImageDV> lUI = null; // List<UploadedImageDV> lUI = null;
try { // try {
mapImages = (LinkedHashMap) session.getAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE); // mapImages = (LinkedHashMap) session.getAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE);
//
if (mapImages == null) { // if (mapImages == null) {
mapImages = new LinkedHashMap<String, List<UploadedImageDV>>(); // mapImages = new LinkedHashMap<String, List<UploadedImageDV>>();
} // }
//
List<UploadedImageDV> imagePreviewForConcessione = mapImages.get(mongoConcessioneId); // List<UploadedImageDV> imagePreviewForConcessione = mapImages.get(mongoConcessioneId);
//
if (imagePreviewForConcessione == null || imagePreviewForConcessione.size() == 0) { // if (imagePreviewForConcessione == null || imagePreviewForConcessione.size() == 0) {
LOG.info("Into " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session the mongoConcessioneId " // LOG.info("Into " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session the mongoConcessioneId "
+ mongoConcessioneId + " is empty or null, loading from service and filling it"); // + mongoConcessioneId + " is empty or null, loading from service and filling it");
lUI = getUploadedImagesForId(httpServletRequest, itemType, mongoConcessioneId, 1); // lUI = getUploadedImagesForId(httpServletRequest, itemType, mongoConcessioneId, 1);
mapImages.put(mongoConcessioneId, lUI); // mapImages.put(mongoConcessioneId, lUI);
} // }
//
lUI = mapImages.get(mongoConcessioneId); // lUI = mapImages.get(mongoConcessioneId);
LOG.info("From " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session read image: " + lUI); // LOG.info("From " + CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE + " object session read image: " + lUI);
session.setAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE, mapImages); // session.setAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE, mapImages);
//
} catch (Exception e) { // } catch (Exception e) {
LOG.warn("Error occurred when instancing the " + UrlShortener.class.getSimpleName(), e); // LOG.warn("Error occurred when instancing the " + UrlShortener.class.getSimpleName(), e);
} // }
//
if (lUI == null || lUI.isEmpty()) // if (lUI == null || lUI.isEmpty())
return null; // return null;
//
return lUI.get(0); // return lUI.get(0);
} // }
/** /**
* Gets the uploaded images for id. * Gets the uploaded images for id.
@ -1135,7 +1134,7 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
// Expected 1 feature // Expected 1 feature
FeatureRow fRow = features.get(0); FeatureRow fRow = features.get(0);
if (fRow.getMapProperties() != null) { if (fRow.getMapProperties() != null) {
List<String> productIDs = fRow.getMapProperties().get("projectid"); List<String> productIDs = fRow.getMapProperties().get(GeoportalDataViewerConstants.PROJECT_ID_KEY_FEATURE);
if (productIDs != null && productIDs.size() > 0) { if (productIDs != null && productIDs.size() > 0) {
String projectID = productIDs.get(0); String projectID = productIDs.get(0);
layerObject.setProjectID(projectID); layerObject.setProjectID(projectID);
@ -1197,49 +1196,42 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
// TODO CHECK THIS // TODO CHECK THIS
// Getting the projectid from WFS features, but limiting to the first one, Do we // Getting the projectid from WFS features, but limiting to the first one, Do we
// have more than one centroid in the same position?? // have more than one centroid in the same position??
//Mininal set of info for displaying into popup
if (layerObject.getProjectDV() == null) { 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; Project theProject;
try { try {
theProject = GeoportalClientCaller.projects().getProjectByID(layerObject.getProfileID(), theProject = GeoportalClientCaller.projects().getProjectByID(layerObject.getProfileID(),
layerObject.getProjectID()); layerObject.getProjectID());
ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder().fullDocumentMap(false);
ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(theProject, projectBuilder); LinkedHashMap<String, Object> documentAsMap = new LinkedHashMap<String, Object>(1);
layerObject.setProjectDV(projectDV);
Entry<String, Object> 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) { } 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); LOG.warn(erroMsg, e);
} }
} }
// for (FeatureRow fRow : features) { LOG.debug("Case PROJECT_LAYER/GENERIC_LAYER setting layerObject: " + layerObject);
// if (fRow.getMapProperties() != null) {
// List<String> 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);
// }
// }
// }
// }
geoDAO.setSourceLayerObject(layerObject); geoDAO.setSourceLayerObject(layerObject);
LOG.info("For layer name: " + layerObject.getLayerItem().getName() + " got " + features.size() LOG.info("For layer name: " + layerObject.getLayerItem().getName() + " got " + features.size()
+ " feature/s"); + " feature/s");