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();
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() + "',";
}

View File

@ -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.

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.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<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)
: 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));

View File

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

View File

@ -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<String, List<UploadedImageDV>> mapImages = null;
List<UploadedImageDV> lUI = null;
try {
mapImages = (LinkedHashMap) session.getAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE);
if (mapImages == null) {
mapImages = new LinkedHashMap<String, List<UploadedImageDV>>();
}
List<UploadedImageDV> 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<String, List<UploadedImageDV>> mapImages = null;
// List<UploadedImageDV> lUI = null;
// try {
// mapImages = (LinkedHashMap) session.getAttribute(CACHE_IMAGE_PREVIEW_FOR_CONCESSIONE);
//
// if (mapImages == null) {
// mapImages = new LinkedHashMap<String, List<UploadedImageDV>>();
// }
//
// List<UploadedImageDV> 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<String> productIDs = fRow.getMapProperties().get("projectid");
List<String> 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<String, Object> documentAsMap = new LinkedHashMap<String, Object>(1);
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) {
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<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);
// }
// }
// }
// }
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");