merged in part with the branch cms-projects-support
This commit is contained in:
parent
8e51d51460
commit
1a7ecf78fc
1
pom.xml
1
pom.xml
|
@ -234,6 +234,7 @@
|
|||
<version>4.11</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.GNADataViewerConfigProfile;
|
||||
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||
import org.gcube.application.geoportalcommon.shared.LayerItem;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
|
||||
|
@ -38,14 +37,19 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCent
|
|||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEventHandler;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEventHandler;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.OpenCollectionEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.OpenCollectionEventHandler;
|
||||
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.GeonaDataViewMainPanel;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.util.ControlledCallBack;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.util.LoaderIcon;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.GCubeCollection;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.IndexLayer;
|
||||
|
||||
import com.google.gwt.core.client.EntryPoint;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
|
@ -104,16 +108,14 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
private OLMapManager olMapMng = null;
|
||||
|
||||
int attempt = 0;
|
||||
|
||||
|
||||
private LoaderIcon loaderApp = new LoaderIcon("Loading application... please wait");
|
||||
|
||||
|
||||
private HTML attributionDiv = new HTML();
|
||||
|
||||
|
||||
private static List<BaseMapLayer> listBaseMapLayers = null;
|
||||
|
||||
private List<ItemFieldDV> displayFields = new ArrayList<ItemFieldDV>();
|
||||
private List<ItemFieldDV> sortByFields = new ArrayList<ItemFieldDV>();
|
||||
private List<ItemFieldDV> searchByFields = new ArrayList<ItemFieldDV>();
|
||||
|
||||
private static ViewerStatus viewerStatus = new ViewerStatus();
|
||||
|
||||
/**
|
||||
* This is the entry point method.
|
||||
|
@ -122,7 +124,7 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
|
||||
loaderApp.getElement().addClassName("loader-gna-app");
|
||||
RootPanel.get(APP_DIV).add(loaderApp);
|
||||
|
||||
|
||||
paramWmsRequest = Window.Location.getParameter(GeoportalDataViewerConstants.GET_WMS_PARAMETER);
|
||||
paramGeonaItemType = Window.Location.getParameter(GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE);
|
||||
paramGeonaItemID = Window.Location.getParameter(GeoportalDataViewerConstants.GET_GEONA_ITEM_ID);
|
||||
|
@ -131,162 +133,81 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
GWT.log(GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE + " = " + paramGeonaItemType);
|
||||
GWT.log(GeoportalDataViewerConstants.GET_GEONA_ITEM_ID + " = " + paramGeonaItemID);
|
||||
GWT.log(GeoportalDataViewerConstants.GET_LAYER_TITLE + " = " + paramLayerTitle);
|
||||
|
||||
|
||||
RootPanel.get(APP_DIV).add(loaderApp);
|
||||
|
||||
GeoportalDataViewerServiceAsync.Util.getInstance().listOfFieldsForSearching(new AsyncCallback<Map<String, List<ItemFieldDV>>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert(caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Map<String, List<ItemFieldDV>> mapOfSearchingFilterForUCD) {
|
||||
GWT.log("listOfFieldsForSearching: "+mapOfSearchingFilterForUCD);
|
||||
|
||||
// for (ItemFieldDV itemField : result) {
|
||||
// if(itemField.isDisplayAsResult()) {
|
||||
// displayFields.add(itemField);
|
||||
// }
|
||||
//
|
||||
// if(itemField.isSearchable()) {
|
||||
// searchByFields.add(itemField);
|
||||
// }
|
||||
//
|
||||
// if(itemField.isSortable()) {
|
||||
// sortByFields.add(itemField);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// GWT.log("List display fields: "+result);
|
||||
// SearchingFilter initialSortFilter = new SearchingFilter();
|
||||
// initialSortFilter.setOrder(ORDER.ASC);
|
||||
|
||||
//TODO MUST BE REVISITED
|
||||
//initialSortFilter.setOrderByFields(Arrays.asList(new ItemField("Name", Arrays.asList("name"), true, true, true)));
|
||||
|
||||
mainPanel = new GeonaDataViewMainPanel(applicationBus, getClientHeight(),mapOfSearchingFilterForUCD);
|
||||
RootPanel.get(APP_DIV).add(mainPanel);
|
||||
|
||||
initApplication();
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void initApplication() {
|
||||
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
//LOADING THE BASE MAP LAYERS
|
||||
GeoportalDataViewerServiceAsync.Util.getInstance().getListBaseLayers(new AsyncCallback<List<BaseMapLayer>>() {
|
||||
GeoportalDataViewerServiceAsync.Util.getInstance()
|
||||
.listOfFieldsForSearching(new AsyncCallback<Map<String, List<ItemFieldDV>>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
RootPanel.get(APP_DIV).remove(loaderApp);
|
||||
Window.alert("Sorry, an error occurred on instancing the GeoPortale Viewer. Please, contact the support");
|
||||
Window.alert(caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<BaseMapLayer> listBaseMapLayers) {
|
||||
try {
|
||||
RootPanel.get(APP_DIV).remove(loaderApp);
|
||||
}catch (Exception e) {
|
||||
loaderApp.setVisible(false);
|
||||
}
|
||||
GeoportalDataViewer.listBaseMapLayers = listBaseMapLayers;
|
||||
//now the map is loaded and I'm sure that I can load the GeonaDataViewer Profile
|
||||
loadGeonaDataViewerProfile();
|
||||
mainPanel.setBaseLayers(listBaseMapLayers);
|
||||
|
||||
BaseMapLayer firstBaseLayer = listBaseMapLayers.get(0);
|
||||
//Passing the first base map layer that will be applied as first base layer
|
||||
olMapMng = new OLMapManager(mainPanel.getMapPanel().getElement().getId(),
|
||||
layerManager.getLayerManagerBus(), firstBaseLayer);
|
||||
OpenLayerMap olMap = olMapMng.getOLMap();
|
||||
layerManager.setOLMap(olMap);
|
||||
mainPanel.setMap(olMap);
|
||||
|
||||
updateSize();
|
||||
ScriptInjector.fromUrl("//cdnjs.cloudflare.com/ajax/libs/nanogallery2/3.0.5/jquery.nanogallery2.min.js")
|
||||
.setWindow(ScriptInjector.TOP_WINDOW).inject();
|
||||
|
||||
public void onSuccess(Map<String, List<ItemFieldDV>> mapOfSearchingFilterForUCD) {
|
||||
GWT.log("listOfFieldsForSearching: " + mapOfSearchingFilterForUCD);
|
||||
|
||||
mainPanel = new GeonaDataViewMainPanel(applicationBus, getClientHeight(),
|
||||
mapOfSearchingFilterForUCD);
|
||||
RootPanel.get(APP_DIV).add(mainPanel);
|
||||
|
||||
initApplication();
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
Window.addResizeHandler(new ResizeHandler() {
|
||||
@Override
|
||||
public void onResize(ResizeEvent event) {
|
||||
updateSize();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initApplication() {
|
||||
|
||||
bindEvents();
|
||||
|
||||
RootPanel.get(APP_DIV).add(attributionDiv);
|
||||
|
||||
}
|
||||
|
||||
public static List<BaseMapLayer> getListBaseMapLayers() {
|
||||
return listBaseMapLayers;
|
||||
}
|
||||
|
||||
private void loadGeonaDataViewerProfile() {
|
||||
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
GeoportalDataViewerServiceAsync.Util.getInstance()
|
||||
.getGeoNaDataViewProfile(new AsyncCallback<GNADataViewerConfigProfile>() {
|
||||
.getInitialConfiguration(new ControlledCallBack<ViewerConfiguration>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert(caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(GNADataViewerConfigProfile profile) {
|
||||
geonaDataViewerProfile = profile;
|
||||
GWT.log("Profile: " + geonaDataViewerProfile);
|
||||
Iterator<String> it;
|
||||
|
||||
|
||||
|
||||
String theItemType = null;
|
||||
if (theItemType == null) {
|
||||
it = geonaDataViewerProfile.getMapLayers().keySet().iterator();
|
||||
it.hasNext();
|
||||
theItemType = it.next();
|
||||
}
|
||||
public void after() {
|
||||
RootPanel.get(APP_DIV).remove(loaderApp);
|
||||
}
|
||||
|
||||
LayerItem layerItem = geonaDataViewerProfile.getMapLayers().get(theItemType);
|
||||
@Override
|
||||
public void onSuccess(ViewerConfiguration result) {
|
||||
super.onSuccess(result);
|
||||
|
||||
// if (layerItem == null) {
|
||||
// Window.alert("Not detected any layer with type: " + theItemType);
|
||||
// return;
|
||||
// }
|
||||
GWT.log("Received init config : " + result);
|
||||
GWT.log("Loading base layers, count : " + result.getBaseLayers().size());
|
||||
|
||||
GWT.log("ON module load The layerItem is: " + layerItem);
|
||||
String layerName = URLUtil.getValueOfParameter("layers", layerItem.getWmsLink());
|
||||
layerItem.setName(layerName);
|
||||
layerManager.setBaseLayerFromIsProfile(layerItem);
|
||||
layerManager.addLayer(theItemType, null, null, layerItem.getWmsLink(), false, false,
|
||||
null, false, null, null, null);
|
||||
GeoportalDataViewer.getStatus().setConfig(result);
|
||||
|
||||
listBaseMapLayers = result.getBaseLayers();
|
||||
mainPanel.setBaseLayers(result.getBaseLayers());
|
||||
|
||||
BaseMapLayer firstBaseLayer = result.getBaseLayers().get(0);
|
||||
// Passing the first base map layer that will be applied as first base layer
|
||||
olMapMng = new OLMapManager(mainPanel.getMapPanel().getElement().getId(),
|
||||
layerManager.getLayerManagerBus(), firstBaseLayer);
|
||||
OpenLayerMap olMap = olMapMng.getOLMap();
|
||||
layerManager.setOLMap(olMap);
|
||||
mainPanel.setMap(olMap);
|
||||
|
||||
updateSize();
|
||||
|
||||
ScriptInjector.fromUrl(
|
||||
"//cdnjs.cloudflare.com/ajax/libs/nanogallery2/3.0.5/jquery.nanogallery2.min.js")
|
||||
.setWindow(ScriptInjector.TOP_WINDOW).inject();
|
||||
|
||||
GWT.log("Loading collections, count " + result.getAvailableCollections().size());
|
||||
|
||||
mainPanel.setAvailableCollections(result.getAvailableCollections().values());
|
||||
|
||||
if (paramGeonaItemID != null) {
|
||||
if (paramGeonaItemType == null) {
|
||||
|
@ -300,13 +221,99 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
applicationBus.fireEvent(new ShowDetailsEvent(gir, null, null));
|
||||
}
|
||||
|
||||
// TODO LOAD INITIAL LAYERS
|
||||
|
||||
GWT.log("DONE INIT LOAD");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Window.addResizeHandler(new ResizeHandler() {
|
||||
@Override
|
||||
public void onResize(ResizeEvent event) {
|
||||
updateSize();
|
||||
}
|
||||
});
|
||||
|
||||
bindEvents();
|
||||
|
||||
RootPanel.get(APP_DIV).add(attributionDiv);
|
||||
|
||||
}
|
||||
|
||||
public static ViewerStatus getStatus() {
|
||||
return viewerStatus;
|
||||
}
|
||||
|
||||
public static List<BaseMapLayer> getListBaseMapLayers() {
|
||||
return listBaseMapLayers;
|
||||
}
|
||||
|
||||
// private void loadGeonaDataViewerProfile() {
|
||||
//
|
||||
// Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
//
|
||||
// @Override
|
||||
// public void execute() {
|
||||
// GeoportalDataViewerServiceAsync.Util.getInstance()
|
||||
// .getGeoNaDataViewProfile(new AsyncCallback<GNADataViewerConfigProfile>() {
|
||||
//
|
||||
// @Override
|
||||
// public void onFailure(Throwable caught) {
|
||||
// Window.alert(caught.getMessage());
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onSuccess(GNADataViewerConfigProfile profile) {
|
||||
// geonaDataViewerProfile = profile;
|
||||
// GWT.log("Profile: " + geonaDataViewerProfile);
|
||||
// Iterator<String> it;
|
||||
//
|
||||
// String theItemType = null;
|
||||
// if (theItemType == null) {
|
||||
// it = geonaDataViewerProfile.getMapLayers().keySet().iterator();
|
||||
// it.hasNext();
|
||||
// theItemType = it.next();
|
||||
// }
|
||||
//
|
||||
// GWT.log("getGeoNaDataViewProfile theItemType is: " + theItemType);
|
||||
//
|
||||
// LayerItem layerItem = geonaDataViewerProfile.getMapLayers().get(theItemType);
|
||||
//
|
||||
//// if (layerItem == null) {
|
||||
//// Window.alert("Not detected any layer with type: " + theItemType);
|
||||
//// return;
|
||||
//// }
|
||||
//
|
||||
// GWT.log("ON module load The layerItem is: " + layerItem);
|
||||
// String layerName = URLUtil.getValueOfParameter("layers", layerItem.getWmsLink());
|
||||
// layerItem.setName(layerName);
|
||||
// layerManager.setBaseLayerFromIsProfile(layerItem);
|
||||
// layerManager.addLayer(theItemType, null, null, layerItem.getWmsLink(), false, false,
|
||||
// null, false, null, null, null);
|
||||
//
|
||||
// if (paramGeonaItemID != null) {
|
||||
// if (paramGeonaItemType == null) {
|
||||
// Window.alert(
|
||||
// "Missing parameter " + GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE
|
||||
// + " (GeoNa Data Type) where to search the item id: "
|
||||
// + paramGeonaItemID);
|
||||
// return;
|
||||
// }
|
||||
// GeoNaItemRef gir = new GeoNaItemRef(paramGeonaItemID, paramGeonaItemType);
|
||||
// applicationBus.fireEvent(new ShowDetailsEvent(gir, null, null));
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// }
|
||||
|
||||
/**
|
||||
* Update window size.
|
||||
*/
|
||||
|
@ -331,14 +338,75 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
*/
|
||||
private void bindEvents() {
|
||||
|
||||
applicationBus.addHandler(OpenCollectionEvent.TYPE, new OpenCollectionEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onOpenCollection(OpenCollectionEvent openCollectionEvent) {
|
||||
GWT.log("Fired event: " + openCollectionEvent);
|
||||
// Check if ID is available
|
||||
String collId = openCollectionEvent.getCollectionId();
|
||||
ViewerConfiguration theConfig = GeoportalDataViewer.getStatus().getViewerConfig();
|
||||
|
||||
Set<String> ucdIds = theConfig.getAvailableCollections().keySet();
|
||||
|
||||
if (!ucdIds.contains(collId)) {
|
||||
GWT.log("!! Collection " + collId + " is not available");
|
||||
Window.alert("Collection " + collId + " is not found.");
|
||||
} else {
|
||||
GCubeCollection toOpen = theConfig.getAvailableCollections().get(collId);
|
||||
|
||||
// Check if indexes is empty
|
||||
if (toOpen.getIndexes() == null || toOpen.getIndexes().isEmpty()) {
|
||||
GWT.log("Unexpected empty indexes in collection " + toOpen);
|
||||
Window.alert("Cannot open collection index layer for " + toOpen.getUcd().getName() + ".");
|
||||
}
|
||||
// TODO Get Default Index Layer
|
||||
// For now we just take the first - only 1 is expected
|
||||
IndexLayer layer = toOpen.getIndexes().get(0);
|
||||
// Open Index Layer
|
||||
|
||||
layerManager.addIndexLayer(layer);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// applicationBus.addHandler(OpenCollectionEvent.TYPE, openCollectionEvent -> {
|
||||
// GWT.log("Fired event: " + openCollectionEvent);
|
||||
// // Check if ID is available
|
||||
// String collId = openCollectionEvent.getCollectionId();
|
||||
// ViewerConfiguration theConfig = GeoportalDataViewer.getStatus().getViewerConfig();
|
||||
//
|
||||
// Set<String> ucdIds = theConfig.getAvailableCollections().keySet();
|
||||
//
|
||||
// if (!ucdIds.contains(collId)) {
|
||||
// GWT.log("!! Collection " + collId + " is not available");
|
||||
// Window.alert("Collection " + collId + " is not found.");
|
||||
// } else {
|
||||
// GCubeCollection toOpen = theConfig.getAvailableCollections().get(collId);
|
||||
//
|
||||
// // Check if indexes is empty
|
||||
// if (toOpen.getIndexes() == null || toOpen.getIndexes().isEmpty()) {
|
||||
// GWT.log("Unexpected empty indexes in collection " + toOpen);
|
||||
// Window.alert("Cannot open collection index layer for " + toOpen.getUcd().getName() + ".");
|
||||
// }
|
||||
// // TODO Get Default Index Layer
|
||||
// // For now we just take the first - only 1 is expected
|
||||
// IndexLayer layer = toOpen.getIndexes().get(0);
|
||||
// // Open Index Layer
|
||||
//
|
||||
// layerManager.addIndexLayer(layer);
|
||||
//
|
||||
// }
|
||||
// });
|
||||
|
||||
applicationBus.addHandler(ShowDetailsEvent.TYPE, new ShowDetailsEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onShowDetails(ShowDetailsEvent showDetailsEvent) {
|
||||
GWT.log("Fired event: " + showDetailsEvent);
|
||||
|
||||
String projectID = showDetailsEvent.getGeonaMongoID();
|
||||
String profileID = showDetailsEvent.getGeonaItemType();
|
||||
String projectID = showDetailsEvent.getProjectID();
|
||||
String profileID = showDetailsEvent.getProfileID();
|
||||
|
||||
if (projectID == null) {
|
||||
Window.alert("Item Id not found");
|
||||
|
@ -348,21 +416,21 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
// TODO
|
||||
boolean found = false;
|
||||
GWT.log("Product with id: " + projectID + " found? " + found);
|
||||
|
||||
|
||||
GeoportalDataViewerServiceAsync.Util.getInstance().getProjectViewForId(profileID, projectID, new AsyncCallback<ProjectView>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
GeoportalDataViewerServiceAsync.Util.getInstance().getProjectViewForId(profileID, projectID,
|
||||
new AsyncCallback<ProjectView>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(ProjectView result) {
|
||||
mainPanel.showAsDetails(result, showDetailsEvent.getGeonaItemRef());
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(ProjectView result) {
|
||||
mainPanel.showAsDetails(result, showDetailsEvent.getGeonaItemRef());
|
||||
}
|
||||
});
|
||||
|
||||
// if (!found) {
|
||||
//
|
||||
|
@ -394,48 +462,40 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
|
||||
@Override
|
||||
public void onLayerRendered(AddedLayerToMapEvent addedLayerToMapEvent) {
|
||||
GWT.log("Fired AddedLayerToMapEvent " + addedLayerToMapEvent.getLayerItem() + "layer type: "+addedLayerToMapEvent.getLayerType());
|
||||
|
||||
GWT.log("Fired AddedLayerToMapEvent " + addedLayerToMapEvent.getLayerItem() + "layer type: "
|
||||
+ addedLayerToMapEvent.getLayerType());
|
||||
|
||||
try {
|
||||
|
||||
GWT.log("onLayerRendered Timer PART MUST BE REVISITED");
|
||||
/*
|
||||
attempt = 0;
|
||||
|
||||
if (paramGeonaItemID != null) {
|
||||
// waiting for record retrieved by service before calling the WFS
|
||||
final int MAX_RETRY = 15;
|
||||
Timer timer = new com.google.gwt.user.client.Timer() {
|
||||
@Override
|
||||
public void run() {
|
||||
attempt++;
|
||||
GWT.log("waiting get record: " + attempt);
|
||||
|
||||
|
||||
|
||||
|
||||
RecordDV record = mainPanel.getDisplayedRecord();
|
||||
if (record != null) {
|
||||
this.cancel();
|
||||
GWT.log("cancelled timer");
|
||||
performWFSQueryOnCentroid(record);
|
||||
}
|
||||
|
||||
if (attempt > MAX_RETRY) {
|
||||
GWT.log("MAX_RETRY reached, cancelled timer");
|
||||
this.cancel();
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
timer.scheduleRepeating(1000);
|
||||
|
||||
}
|
||||
*/
|
||||
* attempt = 0;
|
||||
*
|
||||
* if (paramGeonaItemID != null) { // waiting for record retrieved by service
|
||||
* before calling the WFS final int MAX_RETRY = 15; Timer timer = new
|
||||
* com.google.gwt.user.client.Timer() {
|
||||
*
|
||||
* @Override public void run() { attempt++; GWT.log("waiting get record: " +
|
||||
* attempt);
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* RecordDV record = mainPanel.getDisplayedRecord(); if (record != null) {
|
||||
* this.cancel(); GWT.log("cancelled timer"); performWFSQueryOnCentroid(record);
|
||||
* }
|
||||
*
|
||||
* if (attempt > MAX_RETRY) { GWT.log("MAX_RETRY reached, cancelled timer");
|
||||
* this.cancel(); }
|
||||
*
|
||||
* } }; timer.scheduleRepeating(1000);
|
||||
*
|
||||
* }
|
||||
*/
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
|
||||
LAYER_TYPE layerType = addedLayerToMapEvent.getLayerType();
|
||||
|
||||
if (layerType != null) {
|
||||
|
@ -497,29 +557,29 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
public void onDoActionOnDetailLayers(DoActionOnDetailLayersEvent doLayerActionEvent) {
|
||||
|
||||
DO_LAYER_ACTION doAction = doLayerActionEvent.getDoAction();
|
||||
GWT.log("event: "+doAction);
|
||||
GWT.log("layer source: "+doLayerActionEvent.getLayerItem().getName());
|
||||
GWT.log("event: " + doAction);
|
||||
GWT.log("layer source: " + doLayerActionEvent.getLayerItem().getName());
|
||||
OpenLayerMap olMap = olMapMng.getOLMap();
|
||||
|
||||
|
||||
switch (doAction) {
|
||||
case OPACITY:
|
||||
GWT.log("opacity: "+doLayerActionEvent.getOpacity());
|
||||
olMap.setWMSDetailLayerOpacity(doLayerActionEvent.getLayerItem(),
|
||||
doLayerActionEvent.getOpacity());
|
||||
GWT.log("opacity: " + doLayerActionEvent.getOpacity());
|
||||
olMap.setWMSDetailLayerOpacity(doLayerActionEvent.getLayerItem(), doLayerActionEvent.getOpacity());
|
||||
break;
|
||||
|
||||
case SWAP:
|
||||
SwapLayer swLS = doLayerActionEvent.getSourceLayerSwap();
|
||||
SwapLayer swLT = doLayerActionEvent.getTargetLayerSwap();
|
||||
GWT.log("SWAPPING source "+swLS.getLayerItem().getName() +", target: "+swLT.getLayerItem().getName());
|
||||
GWT.log("SWAPPING source " + swLS.getLayerItem().getName() + ", target: "
|
||||
+ swLT.getLayerItem().getName());
|
||||
olMap.swapDetailsLayers(swLS, swLT);
|
||||
break;
|
||||
|
||||
case VISIBILITY:
|
||||
GWT.log("visibility: "+doLayerActionEvent.getVisibility());
|
||||
GWT.log("visibility: " + doLayerActionEvent.getVisibility());
|
||||
olMap.setWMSDetailLayerVisible(doLayerActionEvent.getLayerItem(),
|
||||
doLayerActionEvent.getVisibility());
|
||||
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -528,8 +588,7 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
applicationBus.addHandler(ChangeMapLayerEvent.TYPE, new ChangeMapLayerEventHandler() {
|
||||
|
||||
@Override
|
||||
|
@ -552,48 +611,47 @@ public class GeoportalDataViewer implements EntryPoint {
|
|||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
applicationBus.addHandler(ShowPopupOnCentroiEvent.TYPE, new ShowPopupOnCentroiEventHandler() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onShowPopup(ShowPopupOnCentroiEvent showPopupOnCentroiEvent) {
|
||||
|
||||
if(showPopupOnCentroiEvent.getRecord()!=null)
|
||||
|
||||
if (showPopupOnCentroiEvent.getRecord() != null)
|
||||
performWFSQueryOnCentroid(showPopupOnCentroiEvent.getRecord());
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
applicationBus.addHandler(SearchPerformedEvent.TYPE, new SearchPerformedEventHandler() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onSearchDone(SearchPerformedEvent searchPerformedEvent) {
|
||||
|
||||
if(searchPerformedEvent!=null) {
|
||||
|
||||
|
||||
if (searchPerformedEvent != null) {
|
||||
|
||||
LinkedHashMap<String, Image> wmsMap = olMapMng.getOLMap().getWmsLayerMap();
|
||||
String firstWMSKey = wmsMap.keySet().iterator().next();
|
||||
List<? extends DocumentDV> result = searchPerformedEvent.getData();
|
||||
|
||||
if(result!=null && result.size()>0) {
|
||||
|
||||
if (result != null && result.size() > 0) {
|
||||
String cqlFilter = "product_id IN(";
|
||||
for (DocumentDV documentDV : result) {
|
||||
cqlFilter+="'"+documentDV.getProjectID()+"',";
|
||||
cqlFilter += "'" + documentDV.getProjectID() + "',";
|
||||
}
|
||||
cqlFilter = cqlFilter.substring(0,cqlFilter.length()-1)+")";
|
||||
|
||||
cqlFilter = cqlFilter.substring(0, cqlFilter.length() - 1) + ")";
|
||||
|
||||
olMapMng.getOLMap().setCQLFilterToWMSLayer(firstWMSKey, cqlFilter);
|
||||
}else {
|
||||
} else {
|
||||
olMapMng.getOLMap().setCQLFilterToWMSLayer(firstWMSKey, null);
|
||||
}
|
||||
|
||||
if(searchPerformedEvent.isSearchReset()) {
|
||||
|
||||
if (searchPerformedEvent.isSearchReset()) {
|
||||
olMapMng.getOLMap().setCQLFilterToWMSLayer(firstWMSKey, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
|||
import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessioneDV;
|
||||
import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaSpatialQueryResult;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.GeoInformationForWMSRequest;
|
||||
|
@ -177,4 +178,37 @@ public interface GeoportalDataViewerService extends RemoteService {
|
|||
ResultSetPaginatedData getListProjects(String theProfileID, Integer start, Integer limit, SearchingFilter filter,
|
||||
boolean reloadFromService) throws Exception;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* NEW CODE HERE
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
ViewerConfiguration getInitialConfiguration() throws Exception;
|
||||
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
|||
import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessioneDV;
|
||||
import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaSpatialQueryResult;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.GeoInformationForWMSRequest;
|
||||
|
@ -75,4 +76,6 @@ public interface GeoportalDataViewerServiceAsync {
|
|||
void getListProjects(String theProfileID, Integer start, Integer limit, SearchingFilter filter,
|
||||
boolean reloadFromService, AsyncCallback<ResultSetPaginatedData> callback);
|
||||
|
||||
void getInitialConfiguration(AsyncCallback<ViewerConfiguration> callback);
|
||||
|
||||
}
|
||||
|
|
|
@ -10,13 +10,10 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.gis.BoundsMap;
|
||||
import org.gcube.application.geoportalcommon.shared.products.BaseConcessioneDV;
|
||||
import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
|
||||
import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessioneDV;
|
||||
import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.LayerType;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MapEventType;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEventHandler;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEvent;
|
||||
|
@ -32,22 +29,20 @@ 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;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.IndexLayer;
|
||||
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.LayerObjectType;
|
||||
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.ZAxis;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Button;
|
||||
import com.github.gwtbootstrap.client.ui.Heading;
|
||||
import com.github.gwtbootstrap.client.ui.Label;
|
||||
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
||||
import com.github.gwtbootstrap.client.ui.constants.IconType;
|
||||
import com.github.gwtbootstrap.client.ui.constants.LabelType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
||||
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.event.shared.HandlerManager;
|
||||
|
@ -57,7 +52,6 @@ import com.google.gwt.user.client.DOM;
|
|||
import com.google.gwt.user.client.Element;
|
||||
import com.google.gwt.user.client.Event;
|
||||
import com.google.gwt.user.client.EventListener;
|
||||
import com.google.gwt.user.client.Random;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.FlexTable;
|
||||
|
@ -196,10 +190,14 @@ public class LayerManager {
|
|||
public void onSuccess(List<GeoNaSpatialQueryResult> listGeonaDataObjects) {
|
||||
|
||||
GWT.log("GeoNaDataObject's is/are " + listGeonaDataObjects.size());
|
||||
|
||||
// GWT.log("GeoNaDataObject's: " + listGeonaDataObjects);
|
||||
// GeoportalDataViewerConstants.print("GeoNaDataObject's:
|
||||
// "+listGeonaDataObjects);
|
||||
|
||||
GWT.log("GeoNaDataObject's must be revisited");
|
||||
/*
|
||||
|
||||
|
||||
if (listGeonaDataObjects == null || listGeonaDataObjects.isEmpty())
|
||||
return;
|
||||
|
||||
|
@ -350,6 +348,9 @@ public class LayerManager {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -388,11 +389,11 @@ public class LayerManager {
|
|||
/**
|
||||
* Parses the geona references.
|
||||
*
|
||||
* @param itemType the item type
|
||||
* @param fRow the f row
|
||||
* @param layerObject the layer object
|
||||
* @param fRow the f row
|
||||
* @return the show details event
|
||||
*/
|
||||
private ShowDetailsEvent parseGeonaReferences(String itemType, FeatureRow fRow) {
|
||||
private ShowDetailsEvent parseGeonaReferences(LayerObject layerObject, FeatureRow fRow) {
|
||||
if (fRow == null)
|
||||
return null;
|
||||
|
||||
|
@ -405,31 +406,66 @@ public class LayerManager {
|
|||
itemName = listName.get(0);
|
||||
}
|
||||
|
||||
return new ShowDetailsEvent(itemType, productId, itemName, fRow);
|
||||
LayerObjectType layerObjectType = layerObject.getType();
|
||||
return new ShowDetailsEvent(layerObjectType != null ? layerObjectType.name() : null, layerObject.getUcid(),
|
||||
productId, itemName, fRow);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// ******************************** LAYERS Management
|
||||
|
||||
/**
|
||||
* Adds the layer.
|
||||
*
|
||||
* @param geonaItemType the geona item type
|
||||
* @param layerTitle the layer title
|
||||
* @param layerName the layer name
|
||||
* @param wmsLink the wms link
|
||||
* @param isBase the is base
|
||||
* @param displayInLayerSwitcher the display in layer switcher
|
||||
* @param UUID the uuid
|
||||
* @param asDetailLayer the as detail layer
|
||||
* @param minResolution the min resolution
|
||||
* @param maxResolution the max resolution
|
||||
* @param refersToBaseConcessione the refers to base concessione
|
||||
* @param object the object
|
||||
*/
|
||||
public void addLayer(final String geonaItemType, final String layerTitle, final String layerName,
|
||||
public void addLayer(LayerObject object) {
|
||||
GWT.log("Layers management : Add layer " + object);
|
||||
|
||||
switch (object.getType()) {
|
||||
case BASE_LAYER: {
|
||||
GWT.log("ERROR : cannot add base layers ");
|
||||
break;
|
||||
}
|
||||
case GENERIC_LAYER: {
|
||||
GWT.log("SUPPORT TO EXTERNAL LAYERS TO BE IMPLEMENTED");
|
||||
break;
|
||||
}
|
||||
|
||||
case PROJECT_LAYER: {
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case INDEX_LAYER: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds the layer.
|
||||
*
|
||||
* @param lot the lot
|
||||
* @param layerTitle the layer title
|
||||
* @param layerName the layer name
|
||||
* @param wmsLink the wms link
|
||||
* @param isBase the is base
|
||||
* @param displayInLayerSwitcher the display in layer switcher
|
||||
* @param UUID the uuid
|
||||
* @param asDetailLayer the as detail layer
|
||||
* @param minResolution the min resolution
|
||||
* @param maxResolution the max resolution
|
||||
* @param profileID the profile ID
|
||||
* @param projectID the project ID
|
||||
*/
|
||||
public void addLayer(final LayerObjectType lot, final String layerTitle, final String layerName,
|
||||
final String wmsLink, final boolean isBase, final boolean displayInLayerSwitcher, final String UUID,
|
||||
final boolean asDetailLayer, Double minResolution, Double maxResolution,
|
||||
BaseConcessioneDV refersToBaseConcessione) {
|
||||
String profileID, String projectID) {
|
||||
|
||||
// final LayoutContainer westPanel = (LayoutContainer) layersPanel.getParent();
|
||||
//
|
||||
|
@ -473,14 +509,13 @@ public class LayerManager {
|
|||
|
||||
LayerObject lo = new LayerObject();
|
||||
lo.setLayerItem(layerItem);
|
||||
lo.setItemType(geonaItemType);
|
||||
lo.setSourceConcessione(refersToBaseConcessione);
|
||||
lo.setType(lot);
|
||||
lo.setProjectId(projectID);
|
||||
|
||||
String key = layerItem.getName(); // should be unique
|
||||
// layerObjects.put(key, lo);
|
||||
String key = layerItem.getName(); // should be unique //
|
||||
//layerObjects.put(key, lo);
|
||||
|
||||
if (!asDetailLayer) {
|
||||
// is a base layer
|
||||
if (!asDetailLayer) { // is a base layer LayerObject blo =
|
||||
LayerObject blo = mapBaseLayerObjects.get(key);
|
||||
if (blo == null) {
|
||||
olMap.addWMSLayer(layerItem);
|
||||
|
@ -493,16 +528,30 @@ public class LayerManager {
|
|||
if (dlo == null) {
|
||||
mapDetailLayerObjects.put(key, lo);
|
||||
olMap.addWMSDetailLayer(layerItem);
|
||||
overlayLayerManager.addLayerItem(lo);
|
||||
// overlayLayerManager.show();
|
||||
} else {
|
||||
overlayLayerManager.addLayerItem(lo); // overlayLayerManager.show(); } else {
|
||||
GWT.log("Skipping detail layer " + key + " already added to Map");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the index layer.
|
||||
*
|
||||
* @param layer the layer
|
||||
*/
|
||||
public void addIndexLayer(IndexLayer layer) {
|
||||
|
||||
addLayer(LayerObjectType.INDEX_LAYER, null, null, layer.getLayer().getOgcLinks().get("wms"), false, false, null, false,
|
||||
null, null, null, null);
|
||||
|
||||
// toLayerItem(null, null, null, null, null, false, false, false, null, null,
|
||||
// false, null, false, null, null, null, null)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* To layer item.
|
||||
*
|
||||
|
@ -663,106 +712,82 @@ public class LayerManager {
|
|||
continue;
|
||||
}
|
||||
|
||||
String nomeConcessione = lo.getSourceConcessione().getNome();
|
||||
if (prevConcessioneName.compareTo(nomeConcessione) != 0) {
|
||||
String concessioneIntro = nomeConcessione.length() > 100
|
||||
? StringUtil.ellipsize(nomeConcessione, 100)
|
||||
: nomeConcessione;
|
||||
Heading heading = new Heading(4, concessioneIntro);
|
||||
heading.setTitle(nomeConcessione);
|
||||
heading.getElement().getStyle().setMarginBottom(10, Unit.PX);
|
||||
flowPanel.add(heading);
|
||||
GWT.log("showPopupInfoForLayer must be REVISITED");
|
||||
/*
|
||||
* String nomeConcessione = lo.getSourceConcessione().getNome(); if
|
||||
* (prevConcessioneName.compareTo(nomeConcessione) != 0) { String
|
||||
* concessioneIntro = nomeConcessione.length() > 100 ?
|
||||
* StringUtil.ellipsize(nomeConcessione, 100) : nomeConcessione; Heading heading
|
||||
* = new Heading(4, concessioneIntro); heading.setTitle(nomeConcessione);
|
||||
* heading.getElement().getStyle().setMarginBottom(10, Unit.PX);
|
||||
* flowPanel.add(heading);
|
||||
*
|
||||
* Button buttOpenProject = new Button("Open Project"); final String buttId =
|
||||
* "open-details-" + Random.nextInt(); Element bEl =
|
||||
* buttOpenProject.getElement(); bEl.setId(buttId);
|
||||
* bEl.getStyle().setPaddingLeft(0, Unit.PX);
|
||||
* buttOpenProject.setType(ButtonType.LINK);
|
||||
*
|
||||
* if (buttOpenProject != null) { flowPanel.add(buttOpenProject);
|
||||
* buttOpenProject.setType(ButtonType.LINK);
|
||||
* Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
*
|
||||
* @Override public void execute() { Element buttonElement =
|
||||
* DOM.getElementById(buttId); Event.sinkEvents(buttonElement, Event.ONCLICK);
|
||||
* Event.setEventListener(buttonElement, new EventListener() {
|
||||
*
|
||||
* @Override public void onBrowserEvent(Event event) { if (Event.ONCLICK ==
|
||||
* event.getTypeInt()) { applicationBus.fireEvent(new
|
||||
* ShowDetailsEvent("concessione", lo.getSourceConcessione().getItemId(),
|
||||
* nomeConcessione, null));
|
||||
*
|
||||
* } } }); } }); } listOpenProject.add(buttOpenProject);
|
||||
*
|
||||
* HTML subText = new HTML(
|
||||
* "<p style=\"color:#999; font-size:14px; margin:5px 0 5px 0;\">Layers and Properties</p>"
|
||||
* ); flowPanel.add(subText); }
|
||||
*
|
||||
* prevConcessioneName = nomeConcessione;
|
||||
*
|
||||
* Label layerLabel = new Label(); layerLabel.setType(LabelType.INFO);
|
||||
*
|
||||
* String layerName = StringUtil.fullNameToLayerName(layerSourceName, ":");
|
||||
* layerLabel.setText(layerName); layerLabel.setTitle(layerSourceName);
|
||||
* layerLabel.getElement().getStyle().setMarginTop(10, Unit.PX);
|
||||
* layerLabel.getElement().getStyle().setMarginBottom(5, Unit.PX);
|
||||
* flowPanel.add(layerLabel);
|
||||
*
|
||||
* GWT.log("Displaying " + features.size() + " features"); FlexTable intFlex =
|
||||
* new FlexTable(); intFlex.setCellPadding(1); intFlex.setCellSpacing(1);
|
||||
* intFlex.getElement().addClassName("table-feature"); intFlex.setHTML(0, 0, new
|
||||
* HTML("Feature Id").toString());
|
||||
*
|
||||
* int i = 0; for (FeatureRow feature : features) {
|
||||
*
|
||||
* intFlex.setHTML(i + 1, 0, new HTML(feature.getId()).toString());
|
||||
*
|
||||
* // Showing properties belonging to concessioni layer Map<String,
|
||||
* List<String>> entries = feature.getMapProperties();
|
||||
*
|
||||
* if (entries.size() == 0) { // Adding this row to show "no property" for
|
||||
* feature // intFlex.setHTML(i + 1, 1, new
|
||||
* HTML("<i>No property</i>").toString()); } int j = 0; for (String key :
|
||||
* entries.keySet()) { List<String> theValues = entries.get(key); String
|
||||
* valueToDisplay = ""; for (String value : theValues) { valueToDisplay += value
|
||||
* + ", ";
|
||||
*
|
||||
* } valueToDisplay = valueToDisplay.substring(0, valueToDisplay.length() - 2);
|
||||
*
|
||||
* // adding the keys only of first feature row. They are equal for all features
|
||||
* // (beloning to same layer). if (i == 0) intFlex.setHTML(0, j + 1, new
|
||||
* HTML(key).toString());
|
||||
*
|
||||
* intFlex.setHTML(i + 1, j + 1, new HTML(valueToDisplay).toString()); j++;
|
||||
*
|
||||
* } i++; } flowPanel.add(intFlex);
|
||||
*
|
||||
*/
|
||||
|
||||
Button buttOpenProject = new Button("Open Project");
|
||||
final String buttId = "open-details-" + Random.nextInt();
|
||||
Element bEl = buttOpenProject.getElement();
|
||||
bEl.setId(buttId);
|
||||
bEl.getStyle().setPaddingLeft(0, Unit.PX);
|
||||
buttOpenProject.setType(ButtonType.LINK);
|
||||
|
||||
if (buttOpenProject != null) {
|
||||
flowPanel.add(buttOpenProject);
|
||||
buttOpenProject.setType(ButtonType.LINK);
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
Element buttonElement = DOM.getElementById(buttId);
|
||||
Event.sinkEvents(buttonElement, Event.ONCLICK);
|
||||
Event.setEventListener(buttonElement, new EventListener() {
|
||||
|
||||
@Override
|
||||
public void onBrowserEvent(Event event) {
|
||||
if (Event.ONCLICK == event.getTypeInt()) {
|
||||
applicationBus.fireEvent(new ShowDetailsEvent("concessione",
|
||||
lo.getSourceConcessione().getItemId(), nomeConcessione, null));
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
listOpenProject.add(buttOpenProject);
|
||||
|
||||
HTML subText = new HTML(
|
||||
"<p style=\"color:#999; font-size:14px; margin:5px 0 5px 0;\">Layers and Properties</p>");
|
||||
flowPanel.add(subText);
|
||||
}
|
||||
|
||||
prevConcessioneName = nomeConcessione;
|
||||
|
||||
Label layerLabel = new Label();
|
||||
layerLabel.setType(LabelType.INFO);
|
||||
|
||||
String layerName = StringUtil.fullNameToLayerName(layerSourceName, ":");
|
||||
layerLabel.setText(layerName);
|
||||
layerLabel.setTitle(layerSourceName);
|
||||
layerLabel.getElement().getStyle().setMarginTop(10, Unit.PX);
|
||||
layerLabel.getElement().getStyle().setMarginBottom(5, Unit.PX);
|
||||
flowPanel.add(layerLabel);
|
||||
|
||||
GWT.log("Displaying " + features.size() + " features");
|
||||
FlexTable intFlex = new FlexTable();
|
||||
intFlex.setCellPadding(1);
|
||||
intFlex.setCellSpacing(1);
|
||||
intFlex.getElement().addClassName("table-feature");
|
||||
intFlex.setHTML(0, 0, new HTML("Feature Id").toString());
|
||||
|
||||
int i = 0;
|
||||
for (FeatureRow feature : features) {
|
||||
|
||||
intFlex.setHTML(i + 1, 0, new HTML(feature.getId()).toString());
|
||||
|
||||
// Showing properties belonging to concessioni layer
|
||||
Map<String, List<String>> entries = feature.getMapProperties();
|
||||
|
||||
if (entries.size() == 0) {
|
||||
// Adding this row to show "no property" for feature
|
||||
// intFlex.setHTML(i + 1, 1, new HTML("<i>No property</i>").toString());
|
||||
}
|
||||
int j = 0;
|
||||
for (String key : entries.keySet()) {
|
||||
List<String> theValues = entries.get(key);
|
||||
String valueToDisplay = "";
|
||||
for (String value : theValues) {
|
||||
valueToDisplay += value + ", ";
|
||||
|
||||
}
|
||||
valueToDisplay = valueToDisplay.substring(0, valueToDisplay.length() - 2);
|
||||
|
||||
// adding the keys only of first feature row. They are equal for all features
|
||||
// (beloning to same layer).
|
||||
if (i == 0)
|
||||
intFlex.setHTML(0, j + 1, new HTML(key).toString());
|
||||
|
||||
intFlex.setHTML(i + 1, j + 1, new HTML(valueToDisplay).toString());
|
||||
j++;
|
||||
|
||||
}
|
||||
i++;
|
||||
}
|
||||
flowPanel.add(intFlex);
|
||||
} catch (Exception e) {
|
||||
GeoportalDataViewerConstants.printJs("Error: " + e.getMessage());
|
||||
}
|
||||
|
@ -859,8 +884,7 @@ public class LayerManager {
|
|||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
ShowDetailsEvent toEvent = parseGeonaReferences(
|
||||
geoNaDataObject.getSourceLayerObject().getItemType(), theFeature);
|
||||
ShowDetailsEvent toEvent = parseGeonaReferences(geoNaDataObject.getSourceLayerObject(), theFeature);
|
||||
applicationBus.fireEvent(toEvent);
|
||||
|
||||
}
|
||||
|
@ -934,8 +958,8 @@ public class LayerManager {
|
|||
@Override
|
||||
public void onBrowserEvent(Event event) {
|
||||
if (Event.ONCLICK == event.getTypeInt()) {
|
||||
ShowDetailsEvent toEvent = parseGeonaReferences(
|
||||
geoNaDataObject.getSourceLayerObject().getItemType(), theFeature);
|
||||
ShowDetailsEvent toEvent = parseGeonaReferences(geoNaDataObject.getSourceLayerObject(),
|
||||
theFeature);
|
||||
applicationBus.fireEvent(toEvent);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
|
||||
|
||||
public class ViewerStatus {
|
||||
|
||||
private ViewerConfiguration viewerConfig;
|
||||
|
||||
public void setConfig(ViewerConfiguration result) {
|
||||
this.viewerConfig = result;
|
||||
|
||||
}
|
||||
|
||||
public ViewerConfiguration getViewerConfig() {
|
||||
return viewerConfig;
|
||||
}
|
||||
|
||||
}
|
|
@ -5,53 +5,70 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wfs.FeatureRow;
|
|||
|
||||
import com.google.gwt.event.shared.GwtEvent;
|
||||
|
||||
|
||||
/**
|
||||
* The Class ShowDetailsEvent.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Jul 30, 2021
|
||||
* Jul 30, 2021
|
||||
*/
|
||||
public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
||||
public static Type<ShowDetailsEventHandler> TYPE = new Type<ShowDetailsEventHandler>();
|
||||
private String geonaItemType;
|
||||
private String layerObjectType;
|
||||
private FeatureRow featureRow;
|
||||
private String geonaMongoID;
|
||||
private String itemName;
|
||||
|
||||
private String profileID;
|
||||
private String projectID;
|
||||
|
||||
/**
|
||||
* Instantiates a new show details event.
|
||||
*
|
||||
* @param geonaItemType the geona item type
|
||||
* @param geonaMongoID the geona mongo ID
|
||||
* @param itemName the item name
|
||||
* @param featureRow the feature row
|
||||
* @param layerObjectType the geona item type
|
||||
* @param geonaMongoID the geona mongo ID
|
||||
* @param itemName the item name
|
||||
* @param featureRow the feature row
|
||||
*/
|
||||
public ShowDetailsEvent(String geonaItemType, String geonaMongoID, String itemName, FeatureRow featureRow) {
|
||||
this.geonaItemType = geonaItemType;
|
||||
this.geonaMongoID = geonaMongoID;
|
||||
public ShowDetailsEvent(String layerObjectType, String profileID, String projectID, String itemName,
|
||||
FeatureRow featureRow) {
|
||||
this.layerObjectType = layerObjectType;
|
||||
this.profileID = profileID;
|
||||
this.projectID = projectID;
|
||||
this.itemName = itemName;
|
||||
this.featureRow = featureRow;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new show details event.
|
||||
*
|
||||
* @param gir the gir
|
||||
* @param itemName the item name
|
||||
* @param gir the gir
|
||||
* @param itemName the item name
|
||||
* @param featureRow the feature row
|
||||
*/
|
||||
public ShowDetailsEvent(GeoNaItemRef gir, String itemName, FeatureRow featureRow) {
|
||||
this.geonaItemType = gir.getItemType();
|
||||
this.geonaMongoID = gir.getItemId();
|
||||
this.layerObjectType = gir.getLayerObjectType();
|
||||
this.profileID = gir.getProfileID();
|
||||
this.projectID = gir.getProjectID();
|
||||
this.itemName = itemName;
|
||||
this.featureRow = featureRow;
|
||||
}
|
||||
|
||||
public static Type<ShowDetailsEventHandler> getTYPE() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
public String getLayerObjectType() {
|
||||
return layerObjectType;
|
||||
}
|
||||
|
||||
public String getProfileID() {
|
||||
return profileID;
|
||||
}
|
||||
|
||||
public String getProjectID() {
|
||||
return projectID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the associated type.
|
||||
*
|
||||
|
@ -73,15 +90,6 @@ public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the geona item type.
|
||||
*
|
||||
* @return the geona item type
|
||||
*/
|
||||
public String getGeonaItemType() {
|
||||
return geonaItemType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the feature row.
|
||||
*
|
||||
|
@ -91,15 +99,6 @@ public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
|||
return featureRow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the geona mongo ID.
|
||||
*
|
||||
* @return the geona mongo ID
|
||||
*/
|
||||
public String getGeonaMongoID() {
|
||||
return geonaMongoID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the item name.
|
||||
*
|
||||
|
@ -117,18 +116,14 @@ public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
|||
public void setItemName(String itemName) {
|
||||
this.itemName = itemName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Gets the geona item ref.
|
||||
*
|
||||
* @return the geona item ref
|
||||
*/
|
||||
public GeoNaItemRef getGeonaItemRef() {
|
||||
return new GeoNaItemRef(geonaMongoID, geonaItemType);
|
||||
return new GeoNaItemRef(projectID, profileID, layerObjectType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.events.collections;
|
||||
|
||||
|
||||
import com.google.gwt.event.shared.GwtEvent;
|
||||
|
||||
public class CloseCollectionEvent extends GwtEvent<CloseCollectionEventHandler> {
|
||||
|
||||
|
||||
private String collectionId = null;
|
||||
|
||||
public static Type<CloseCollectionEventHandler> TYPE = new Type<CloseCollectionEventHandler>();
|
||||
|
||||
@Override
|
||||
public Type<CloseCollectionEventHandler> getAssociatedType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispatch(CloseCollectionEventHandler h) {
|
||||
|
||||
}
|
||||
|
||||
public CloseCollectionEvent(String collectionId) {
|
||||
this.collectionId=collectionId;
|
||||
}
|
||||
public String getCollectionId() {
|
||||
return collectionId;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.events.collections;
|
||||
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
|
||||
public interface CloseCollectionEventHandler extends EventHandler{
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.events.collections;
|
||||
|
||||
import com.google.gwt.event.shared.GwtEvent;
|
||||
|
||||
public class OpenCollectionEvent extends GwtEvent<OpenCollectionEventHandler> {
|
||||
|
||||
private String collectionId = null;
|
||||
|
||||
public static Type<OpenCollectionEventHandler> TYPE = new Type<OpenCollectionEventHandler>();
|
||||
|
||||
/**
|
||||
* Gets the associated type.
|
||||
*
|
||||
* @return the associated type
|
||||
*/
|
||||
@Override
|
||||
public Type<OpenCollectionEventHandler> getAssociatedType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch.
|
||||
*
|
||||
* @param handler the handler
|
||||
*/
|
||||
@Override
|
||||
protected void dispatch(OpenCollectionEventHandler handler) {
|
||||
handler.onOpenCollection(this);
|
||||
|
||||
}
|
||||
|
||||
public OpenCollectionEvent(String collectionId) {
|
||||
this.collectionId = collectionId;
|
||||
}
|
||||
|
||||
public String getCollectionId() {
|
||||
return collectionId;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.events.collections;
|
||||
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
|
||||
public interface OpenCollectionEventHandler extends EventHandler {
|
||||
|
||||
|
||||
void onOpenCollection(OpenCollectionEvent event);
|
||||
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.ui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -12,15 +13,19 @@ import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
|
|||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ChangeMapLayerEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.CloseCollectionEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.OpenCollectionEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerMap;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAIcons;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAImages;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.search.SearchFacilityUI;
|
||||
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.shared.GCubeCollection;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Button;
|
||||
import com.github.gwtbootstrap.client.ui.CheckBox;
|
||||
import com.github.gwtbootstrap.client.ui.DropdownButton;
|
||||
import com.github.gwtbootstrap.client.ui.NavLink;
|
||||
import com.github.gwtbootstrap.client.ui.NavList;
|
||||
|
@ -95,7 +100,13 @@ public class GeonaDataViewMainPanel extends Composite {
|
|||
|
||||
@UiField
|
||||
Button linkLayers;
|
||||
|
||||
@UiField
|
||||
DropdownButton openCollectionDropDown;
|
||||
|
||||
@UiField
|
||||
HTMLPanel openCollectionPanel;
|
||||
|
||||
@UiField
|
||||
DropdownButton searchFacilityButton;
|
||||
|
||||
|
@ -126,77 +137,6 @@ public class GeonaDataViewMainPanel extends Composite {
|
|||
|
||||
private HandlerManager applicationBus;
|
||||
|
||||
// /**
|
||||
// * Instantiates a new geona data view main panel.
|
||||
// *
|
||||
// * @param applicationBus the application bus
|
||||
// * @param mapHeight the map height
|
||||
// * @param sortByFields the sort by fields
|
||||
// * @param searchForFields the search for fields
|
||||
// * @param initialSortFilter the initial sort filter
|
||||
// */
|
||||
// public GeonaDataViewMainPanel(HandlerManager applicationBus, int mapHeight, List<ItemFieldDV> sortByFields,
|
||||
// List<ItemFieldDV> searchForFields, SearchingFilter initialSortFilter) {
|
||||
// initWidget(uiBinder.createAndBindUi(this));
|
||||
// this.applicationBus = applicationBus;
|
||||
// mapPanel = new MapPanel(mapHeight + "px");
|
||||
// detailsPanel.setHeight(mapHeight + "px");
|
||||
// detailsPanel.setApplicationBus(applicationBus);
|
||||
// mainContainerPanel.add(mapPanel);
|
||||
// bindHandlers();
|
||||
// dataPointSelection.setIcon(IconType.SCREENSHOT);
|
||||
// dataBoxSelection.setIcon(IconType.BOOKMARK);
|
||||
// removeQuery.setIcon(IconType.REMOVE);
|
||||
//
|
||||
// Image italyImg = new Image(GNAImages.ICONS.italyIcon());
|
||||
// italyImg.getElement().getStyle().setPaddingLeft(20, Unit.PX);
|
||||
// extentToItaly.getElement().appendChild(italyImg.getElement());
|
||||
// extentToItaly.setWidth("140px");
|
||||
//
|
||||
// Image worldImg = new Image(GNAImages.ICONS.worldIcon());
|
||||
// worldImg.getElement().getStyle().setPaddingLeft(20, Unit.PX);
|
||||
// extentToEarth.getElement().appendChild(worldImg.getElement());
|
||||
// extentToEarth.setWidth("140px");
|
||||
//
|
||||
// linkMap.setCustomIconStyle(GNAIcons.CustomIconType.MAP.get());
|
||||
// linkPresetLocation.setCustomIconStyle(GNAIcons.CustomIconType.PRESET_LOCATION.get());
|
||||
// linkLayers.setCustomIconStyle(GNAIcons.CustomIconType.LAYERS.get());
|
||||
//
|
||||
// SearchingFilter initialSortFilter = new SearchingFilter();
|
||||
// initialSortFilter.setOrder(ORDER.ASC);
|
||||
//
|
||||
// for (ItemFieldDV itemField : result) {
|
||||
// if (itemField.isDisplayAsResult()) {
|
||||
// displayFields.add(itemField);
|
||||
// }
|
||||
//
|
||||
// if (itemField.isSearchable()) {
|
||||
// searchByFields.add(itemField);
|
||||
// }
|
||||
//
|
||||
// if (itemField.isSortable()) {
|
||||
// sortByFields.add(itemField);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// searchFacility = new SearchFacilityUI(applicationBus, sortByFields, searchForFields, initialSortFilter);
|
||||
// searchFacility.setSearchButton(searchFacilityButton);
|
||||
// searchFacilityButton.setIcon(IconType.SEARCH);
|
||||
// searchFacilityPanel.add(searchFacility);
|
||||
// Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
//
|
||||
// @Override
|
||||
// public void execute() {
|
||||
// searchFacilityPanel.getElement().getParentElement().getStyle().setOpacity(0.9);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// });
|
||||
//
|
||||
// // layersDDB.setToggle(true);
|
||||
// bindEvents();
|
||||
//
|
||||
// }
|
||||
|
||||
public GeonaDataViewMainPanel(HandlerManager applicationBus, int mapHeight,
|
||||
Map<String, List<ItemFieldDV>> mapOfSearchingFilterForUCD) {
|
||||
|
@ -225,6 +165,8 @@ public class GeonaDataViewMainPanel extends Composite {
|
|||
linkPresetLocation.setCustomIconStyle(GNAIcons.CustomIconType.PRESET_LOCATION.get());
|
||||
linkLayers.setCustomIconStyle(GNAIcons.CustomIconType.LAYERS.get());
|
||||
|
||||
openCollectionDropDown.setCustomIconStyle(GNAIcons.CustomIconType.MAP.get());
|
||||
|
||||
SearchingFilter initialSortFilter = new SearchingFilter();
|
||||
initialSortFilter.setOrder(ORDER.ASC);
|
||||
|
||||
|
@ -528,6 +470,48 @@ public class GeonaDataViewMainPanel extends Composite {
|
|||
*
|
||||
* @param listBaseLayers the new base layers
|
||||
*/
|
||||
|
||||
public void setAvailableCollections(Collection<GCubeCollection> collection) {
|
||||
GWT.log("Init Available collections menu");
|
||||
if(collection == null || collection.isEmpty())
|
||||
GWT.log("!!! No Available collections");
|
||||
|
||||
|
||||
for(GCubeCollection coll : collection) {
|
||||
GWT.log("Found available collection "+coll);
|
||||
String label = coll.getUcd().getName();
|
||||
String id=coll.getUcd().getId();
|
||||
|
||||
CheckBox checkbox = new CheckBox(label);
|
||||
checkbox.setId("gcubeCollectionSelector_"+id);
|
||||
|
||||
checkbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
||||
|
||||
@Override
|
||||
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
||||
GWT.log("Collection selector flag changed to value : "+event.toDebugString());
|
||||
|
||||
String collectionID = ((CheckBox)event.getSource()).getId().replace("gcubeCollectionSelector_", "");
|
||||
|
||||
GWT.log("Collection ID is : "+collectionID + ", event value: "+event.getValue());
|
||||
if(event.getValue()) {
|
||||
// OPEN COLLECTION
|
||||
applicationBus.fireEvent(new OpenCollectionEvent(collectionID));
|
||||
}else {
|
||||
// CLOSE COLLECTION
|
||||
applicationBus.fireEvent(new CloseCollectionEvent(collectionID));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
openCollectionPanel.add(checkbox);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setBaseLayers(List<BaseMapLayer> listBaseLayers) {
|
||||
|
||||
if (listBaseLayers == null)
|
||||
|
|
|
@ -35,17 +35,22 @@
|
|||
</g:HTMLPanel>
|
||||
</g:HTMLPanel>
|
||||
</b:DropdownButton>
|
||||
<b:DropdownButton type="LINK" text="Search"
|
||||
ui:field="searchFacilityButton">
|
||||
<b:NavList ui:field="navListSearch"></b:NavList>
|
||||
<g:ScrollPanel ui:field="searchFacilityPanel"
|
||||
addStyleNames="search-facility"></g:ScrollPanel>
|
||||
<b:DropdownButton type="LINK"
|
||||
text="Open Collection" ui:field="openCollectionDropDown">
|
||||
<g:HTMLPanel ui:field="openCollectionPanel">
|
||||
</g:HTMLPanel>
|
||||
</b:DropdownButton>
|
||||
<b:DropdownButton type="LINK"
|
||||
title="Select the Map" text="Map" ui:field="linkMap">
|
||||
<g:HTMLPanel ui:field="panelBaseLayers">
|
||||
</g:HTMLPanel>
|
||||
</b:DropdownButton>
|
||||
<b:DropdownButton type="LINK" text="Search"
|
||||
ui:field="searchFacilityButton">
|
||||
<b:NavList ui:field="navListSearch"></b:NavList>
|
||||
<g:ScrollPanel ui:field="searchFacilityPanel"
|
||||
addStyleNames="search-facility"></g:ScrollPanel>
|
||||
</b:DropdownButton>
|
||||
<b:DropdownButton type="LINK"
|
||||
title="Center Map to Location" text="Preset Location"
|
||||
ui:field="linkPresetLocation">
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.products.BaseConcessioneDV;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.DO_LAYER_ACTION;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.SwapLayer;
|
||||
|
@ -60,10 +59,10 @@ public class DragDropLayer extends FlowPanel {
|
|||
this.labelLayerName.setTitle(layerItem.getName());
|
||||
this.labelLayerName.setType(LabelType.INFO);
|
||||
|
||||
BaseConcessioneDV refConcessione = layerObject.getSourceConcessione();
|
||||
String nameConcessione = StringUtil.ellipsize(refConcessione.getNome(), 40);
|
||||
LayerItem refConcessione = layerObject.getLayerItem();
|
||||
String nameConcessione = StringUtil.ellipsize(refConcessione.getName(), 40);
|
||||
com.google.gwt.user.client.ui.Label labelConcessione = new com.google.gwt.user.client.ui.Label(nameConcessione);
|
||||
labelConcessione.setTitle(refConcessione.getNome());
|
||||
labelConcessione.setTitle(refConcessione.getName());
|
||||
|
||||
getElement().getStyle().setMarginTop(5, Unit.PX);
|
||||
getElement().getStyle().setMarginBottom(10, Unit.PX);
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.util;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.faults.ControlledError;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
public abstract class ControlledCallBack<T> implements AsyncCallback<T> {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
before();
|
||||
if(caught instanceof ControlledError) {
|
||||
GWT.log("Controlled error "+caught);
|
||||
Window.alert(caught.getMessage());
|
||||
}else {
|
||||
GWT.log("Uncontrolled failure, check server log.", caught);
|
||||
Window.alert("Sorry, an unexpected error occurred. Please, contact the support");
|
||||
}
|
||||
after();
|
||||
}
|
||||
|
||||
public void before() {}
|
||||
|
||||
public void after() {}
|
||||
|
||||
@Override
|
||||
public void onSuccess(T result) {
|
||||
before();
|
||||
after();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.client.util;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.products.model.RecordDV;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
|
||||
public class OGCUtils {
|
||||
|
||||
public static void performWFSQueryOnCentroid(RecordDV record) {
|
||||
GWT.log("WFS Query for : "+record);
|
||||
|
||||
if (record != null) {
|
||||
// GWT.log("record instanceof ConcessioneDV: " + (record instanceof ConcessioneDV) + " with mongo item id: "
|
||||
// + record.getItemId());
|
||||
// GeoportalDataViewerConstants.print("record instanceof ConcessioneDV: "
|
||||
// +(record instanceof ConcessioneDV));
|
||||
// if (record instanceof ConcessioneDV) {
|
||||
// ConcessioneDV concessioneDV = (ConcessioneDV) record;
|
||||
// Double x = concessioneDV.getCentroidLong();
|
||||
// Double y = concessioneDV.getCentroidLat();
|
||||
// GWT.log("X: " + x + ", Y:" + y);
|
||||
// if (x != null && y != null) {
|
||||
// Coordinate transfCoord = MapUtils.transformCoordiante(new Coordinate(x, y),
|
||||
// GeoportalDataViewerConstants.MAP_PROJECTION.EPSG_4326.getName(), GeoportalDataViewerConstants.MAP_PROJECTION.EPSG_3857.getName());
|
||||
// GeoQuery select = olMapMng.toDataPointQuery(transfCoord, false);
|
||||
// GWT.log("GeoQuery: " + select);
|
||||
// // GeoportalDataViewerConstants.print("fireEvent QueryDataEvent");
|
||||
// ExtentWrapped toExt = new ExtentWrapped(transfCoord.getX(), transfCoord.getY(), transfCoord.getX(),
|
||||
// transfCoord.getY());
|
||||
// layerManager.getLayerManagerBus().fireEvent(new QueryDataEvent(select, toExt, record.getItemId(),
|
||||
// true, GeoportalDataViewerConstants.MapEventType.ADDED_CENTROID_LAYER_TO_MAP));
|
||||
// } else {
|
||||
// GeoportalDataViewerConstants.printJs(
|
||||
// "I cannot select the point one or both coordiantes are null. X: " + x + ", Y:" + y);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.server;
|
||||
|
||||
import javax.servlet.annotation.WebListener;
|
||||
import javax.servlet.http.HttpSessionEvent;
|
||||
import javax.servlet.http.HttpSessionListener;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@WebListener
|
||||
public class GeoportalDataViewerHttpSessionListener implements HttpSessionListener {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GeoportalDataViewerHttpSessionListener.class);
|
||||
|
||||
@Override
|
||||
public void sessionDestroyed(HttpSessionEvent event) {
|
||||
LOG.info("sessionDestroyed called");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sessionCreated(HttpSessionEvent arg0) {
|
||||
LOG.info("sessionCreated called. Session id is: "+arg0.getSession().getId());
|
||||
}
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
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.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
@ -15,8 +18,12 @@ 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;
|
||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||
import org.gcube.application.geoportal.common.rest.Projects;
|
||||
import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel;
|
||||
import org.gcube.application.geoportalcommon.GeoportalCommon;
|
||||
import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller;
|
||||
|
@ -51,12 +58,19 @@ import org.gcube.application.geoportalcommon.shared.products.model.LayerConcessi
|
|||
import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV;
|
||||
import org.gcube.application.geoportalcommon.util.URLParserUtil;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerService;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.server.faults.InvalidObjectException;
|
||||
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.mongoservice.GeoportalServiceIdentityProxy;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.server.util.ContextRequest;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.server.util.DVConversion;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.server.util.SessionUtil;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.GCubeCollection;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaSpatialQueryResult;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.faults.ControlledError;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.IndexLayer;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wfs.FeatureRow;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.GeoInformationForWMSRequest;
|
||||
|
@ -493,11 +507,11 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
|
|||
if (item == null)
|
||||
throw new Exception("Bad request, the item is null");
|
||||
|
||||
if (item.getItemId() == null)
|
||||
throw new Exception("Bad request, the item id is null");
|
||||
if (item.getProjectID() == null)
|
||||
throw new Exception("Bad request, the projectID is null");
|
||||
|
||||
if (item.getItemType() == null)
|
||||
throw new Exception("Bad request, the item type is null");
|
||||
if (item.getProfileID() == null)
|
||||
throw new Exception("Bad request, the profileID is null");
|
||||
|
||||
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
|
||||
GeoportalCommon gc = new GeoportalCommon();
|
||||
|
@ -701,6 +715,97 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
|
|||
*
|
||||
*/
|
||||
|
||||
@Override
|
||||
public ViewerConfiguration getInitialConfiguration() throws Exception {
|
||||
LOG.debug("getInitialConfiguration called");
|
||||
|
||||
return new ContextRequest<ViewerConfiguration>(this.getThreadLocalRequest()) {
|
||||
@Override
|
||||
protected ViewerConfiguration run() throws Exception, ControlledError {
|
||||
try {
|
||||
|
||||
// ************* LOAD BASE LAYERS
|
||||
|
||||
final ViewerConfiguration config = new ViewerConfiguration();
|
||||
LOG.info("Getting initial configuration ");
|
||||
LOG.debug("Loading base layers..");
|
||||
List<BaseMapLayer> listBL = SessionUtil.getGNABaseMaps(request);
|
||||
|
||||
LOG.debug("getListBaseLayers returning " + listBL.size() + " base maps");
|
||||
config.setBaseLayers(listBL);
|
||||
|
||||
// ************** LOAD AVAILABLE COLLECTIONS
|
||||
|
||||
LOG.debug("Loading available collections.. ");
|
||||
config.setAvailableCollections(new HashMap<String, GCubeCollection>());
|
||||
|
||||
// TODO filter by
|
||||
// configured ?
|
||||
// gis indexed
|
||||
QueryRequest request = new QueryRequest();
|
||||
|
||||
// TODO Constant
|
||||
String Id = "org.gcube.portlets.user.geoportaldataviewer";
|
||||
request.setFilter(Document.parse("{\"" + UseCaseDescriptor.HANDLERS + "."
|
||||
+ org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration.ID
|
||||
+ "\" : " + "{\"$eq\" : \"" + Id + "\"}}"));
|
||||
|
||||
useCaseDescriptors().build().query(new QueryRequest()).forEachRemaining(u -> {
|
||||
try {
|
||||
LOG.debug("Checking configuration for collection " + u.getId());
|
||||
|
||||
Projects<Project> p = projects(u.getId()).build();
|
||||
UseCaseDescriptorDV ucd = ConvertToDataValueObjectModel.toUseCaseDescriptorDV(u, null);
|
||||
Configuration ucdConfig = p.getConfiguration();
|
||||
GCubeCollection coll = new GCubeCollection();
|
||||
coll.setUcd(ucd);
|
||||
|
||||
// TODO TO Check index flag should be in configuration or evaluated according to
|
||||
// user credentials
|
||||
|
||||
String toCheckFlag = "internal";
|
||||
|
||||
// TODO constant
|
||||
coll.setIndexes(new ArrayList());
|
||||
|
||||
LOG.debug("Checking if " + u.getId() + " is GIS Indexed. Index flag needed is "
|
||||
+ toCheckFlag);
|
||||
|
||||
for (Index index : ucdConfig.getIndexes()) {
|
||||
try {
|
||||
IndexLayer toAdd = DVConversion.convert(index);
|
||||
if (toAdd.getFlag().equals(toCheckFlag))
|
||||
coll.getIndexes().add(toAdd);
|
||||
} catch (InvalidObjectException e) {
|
||||
LOG.debug("Skipping invalid index ", e);
|
||||
} catch (Throwable t) {
|
||||
LOG.error("Unable to check index ", t);
|
||||
}
|
||||
}
|
||||
|
||||
// Return only if gis indexed
|
||||
if (coll.getIndexes().isEmpty())
|
||||
LOG.info("No available GIS Index for collection " + coll.getUcd().getName());
|
||||
else
|
||||
config.getAvailableCollections().put(coll.getUcd().getId(), coll);
|
||||
|
||||
} catch (Throwable t) {
|
||||
LOG.warn("Invalid UCD, can't translate to DV. UCID : " + u.getId(), t);
|
||||
}
|
||||
});
|
||||
// TODO load initial layers from query parameters
|
||||
LOG.debug("Found " + config.getAvailableCollections().size() + " collections");
|
||||
|
||||
return config;
|
||||
} catch (Throwable t) {
|
||||
LOG.error("Unexpected exception while loading initial config", t);
|
||||
throw new ControlledError("Unable to configure viewer. Please retry in a few minutes.");
|
||||
}
|
||||
}
|
||||
|
||||
}.execute().getResult();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<ItemFieldDV>> listOfFieldsForSearching() throws Exception {
|
||||
LOG.info("listOfFieldsForSearching called");
|
||||
|
@ -1021,222 +1126,12 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
|
|||
GeoportalServiceIdentityProxy cms = new GeoportalServiceIdentityProxy(this.getThreadLocalRequest());
|
||||
ProjectDV theProjectDV = cms.getProjectByID(profileID, projectID);
|
||||
|
||||
String theWholeProjectAsJSON = theProjectDV.getTheDocument().getDocumentAsJSON();
|
||||
ProjectView projectView = loadProjectView(theProjectDV, scope, userName);
|
||||
|
||||
LOG.debug("theProjectDV as JSON: " + theWholeProjectAsJSON);
|
||||
LOG.debug("theProjectDV as MAP: " + theProjectDV.getTheDocument().getDocumentAsMap());
|
||||
|
||||
ProjectView projectView = new ProjectView();
|
||||
projectView.setTheProjectDV(theProjectDV);
|
||||
|
||||
LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> linkedMap_UCDId_gCubeProfiles = GcubeProfilesPerUCDIdCache
|
||||
.get(scope);
|
||||
|
||||
// NO UCD defined, applyong default
|
||||
if (linkedMap_UCDId_gCubeProfiles.size() == 0) {
|
||||
LOG.warn("No " + GEOPORTAL_CONFIGURATION_TYPE.gcube_profiles + " found in the UCD");
|
||||
LOG.info("Applying default business logic to display the project");
|
||||
SectionView sectionView = new SectionView();
|
||||
sectionView.setSectionTitle("Document");
|
||||
SubDocumentView subDocumentView = new SubDocumentView();
|
||||
|
||||
Document sectionDoc = Document.parse(theProjectDV.getTheDocument().getDocumentAsJSON());
|
||||
boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, JSON_$_POINTER,
|
||||
userName);
|
||||
|
||||
// If is accessible
|
||||
if (isAccessibleSection) {
|
||||
|
||||
// Creating one Project with one SectionView and SubDocumentView
|
||||
String wholeSectionDoc = sectionDoc.toJson();
|
||||
subDocumentView.setMetadataAsJSON(wholeSectionDoc);
|
||||
|
||||
List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
||||
List<FilesetDV> listImages = new ArrayList<FilesetDV>();
|
||||
String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, "fileset");
|
||||
List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, wholeSectionDoc);
|
||||
FilesetDV filesetDV = new FilesetDV();
|
||||
filesetDV.setName("fileset");
|
||||
for (Payload payload : listPayloads) {
|
||||
PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
||||
filesetDV.addPayloadDV(payloadDV);
|
||||
boolean isImage = ImageDetector.isImage(payload.getMimetype());
|
||||
|
||||
if (isImage) {
|
||||
listImages.add(filesetDV);
|
||||
} else {
|
||||
listFiles.add(filesetDV);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO LAYERS
|
||||
subDocumentView.setListImages(listImages);
|
||||
subDocumentView.setListFiles(listFiles);
|
||||
sectionView.addSubDocument(subDocumentView);
|
||||
projectView.addSectionView(sectionView);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
List<GcubeProfilesMetadataForUCD> listProfilesBean = linkedMap_UCDId_gCubeProfiles.get(profileID);
|
||||
|
||||
com.jayway.jsonpath.Configuration configuration = com.jayway.jsonpath.Configuration.builder()
|
||||
.jsonProvider(new JsonOrgJsonProvider()).build();
|
||||
|
||||
// Reading the Project according to list of Profile defined in the UCD
|
||||
for (GcubeProfilesMetadataForUCD gcubeProfileMetaForUCD : listProfilesBean) {
|
||||
|
||||
GcubeProfileDV gcubeProfileDV = gcubeProfileMetaForUCD.getGcubeProfile();
|
||||
SectionView sectionView = new SectionView();
|
||||
sectionView.setSectionTitle(gcubeProfileDV.getSectionTitle());
|
||||
LOG.debug("\n\nThe profile is: " + gcubeProfileDV);
|
||||
// Building JSON/section full PATH and section name
|
||||
String sectionJSONPath = "";
|
||||
String parentPathFromProfile = gcubeProfileDV.getParentName() == null ? ""
|
||||
: gcubeProfileDV.getParentName();
|
||||
String theSectionName = gcubeProfileDV.getSectionName();
|
||||
|
||||
if (theSectionName.compareTo(JSON_$_POINTER) == 0
|
||||
|| theSectionName.compareTo(JSON_$_POINTER + ".") == 0) {
|
||||
sectionJSONPath = JSON_$_POINTER;
|
||||
theSectionName = "";
|
||||
} else {
|
||||
sectionJSONPath = String.format("%s%s",
|
||||
parentPathFromProfile.endsWith(".") ? parentPathFromProfile : parentPathFromProfile + ".",
|
||||
theSectionName);
|
||||
}
|
||||
|
||||
LOG.debug("The sectionJSONPath is: " + sectionJSONPath);
|
||||
|
||||
JsonPath theSectionJsonPath = JsonPath.compile(sectionJSONPath);
|
||||
Object data = theSectionJsonPath.read(theWholeProjectAsJSON, configuration);
|
||||
|
||||
LOG.debug("Data is instace of: " + data.getClass());
|
||||
LOG.debug("data to string: " + data.toString());
|
||||
|
||||
// Splitting the General Document in bson.Document according to list of
|
||||
// GcubeProfiles
|
||||
List<Document> listBSONDocument = new ArrayList<Document>();
|
||||
if (data instanceof org.json.JSONObject) {
|
||||
String jsonString = data.toString();
|
||||
LOG.debug("the JSON to string: " + jsonString);
|
||||
Document sectionDoc = Document.parse(jsonString);
|
||||
boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, sectionJSONPath,
|
||||
userName);
|
||||
if (isAccessibleSection) {
|
||||
listBSONDocument.add(sectionDoc);
|
||||
}
|
||||
|
||||
} else if (data instanceof org.json.JSONArray) {
|
||||
org.json.JSONArray dataArray = (org.json.JSONArray) data;
|
||||
for (int i = 0; i < dataArray.length(); i++) {
|
||||
String jsonString = dataArray.get(i).toString();
|
||||
LOG.debug("the array " + i + " JSON to string: " + jsonString);
|
||||
Document sectionDoc = Document.parse(jsonString);
|
||||
boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, sectionJSONPath,
|
||||
userName);
|
||||
if (isAccessibleSection) {
|
||||
listBSONDocument.add(sectionDoc);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
LOG.debug("Result for " + gcubeProfileDV.getSectionName() + " is: " + listBSONDocument);
|
||||
List<MetaDataProfileBean> theProfileBeans = gcubeProfileMetaForUCD.getListMetadataProfileBean();
|
||||
MetaDataProfileBean theProfileBean = theProfileBeans.get(0);
|
||||
|
||||
// For each bson.Document creating the SubDocumentView
|
||||
for (int i = 0; i < listBSONDocument.size(); i++) {
|
||||
Document fromSectionDoc = listBSONDocument.get(i);
|
||||
SubDocumentView subDocumentView = new SubDocumentView();
|
||||
Document toSectionDoc = new Document();
|
||||
// Filling the SubDocumentView metadata with the metadataField.getFieldName()
|
||||
// read from the Profile
|
||||
for (MetadataFieldWrapper metadataField : theProfileBean.getMetadataFields()) {
|
||||
|
||||
String theFieldName = metadataField.getFieldId() != null ? metadataField.getFieldId()
|
||||
: metadataField.getFieldName();
|
||||
LOG.debug("reading theFieldName: " + theFieldName);
|
||||
Object theOBJFieldValue = fromSectionDoc.get(theFieldName);
|
||||
|
||||
// NB: Using ALWAYS THE metadataField.getFieldName() as LABEL
|
||||
toSectionDoc = sanitizeDocumentValue(toSectionDoc, metadataField.getFieldName(),
|
||||
theOBJFieldValue);
|
||||
|
||||
}
|
||||
String subToJSON = toSectionDoc.toJson();
|
||||
LOG.debug("theSubSetionDoc is: " + subToJSON);
|
||||
subDocumentView.setMetadataAsJSON(toSectionDoc.toJson());
|
||||
|
||||
// Reading filePaths
|
||||
List<FilePathDV> filePaths = gcubeProfileDV.getFilePaths();
|
||||
|
||||
// READING fileset* field ACCORDING TO filePaths OF THE 'gcubeProfiles' CONFIG
|
||||
if (filePaths != null) {
|
||||
String fromSectionDocJSON = fromSectionDoc.toJson();
|
||||
List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
||||
List<FilesetDV> listImages = new ArrayList<FilesetDV>();
|
||||
for (FilePathDV filePath : filePaths) {
|
||||
|
||||
String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, filePath.getFieldName());
|
||||
List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, fromSectionDocJSON);
|
||||
FilesetDV filesetDV = new FilesetDV();
|
||||
filesetDV.setName(filePath.getGcubeProfileFieldName());
|
||||
for (Payload payload : listPayloads) {
|
||||
PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
||||
filesetDV.addPayloadDV(payloadDV);
|
||||
boolean isImage = ImageDetector.isImage(payload.getMimetype());
|
||||
|
||||
if (isImage) {
|
||||
listImages.add(filesetDV);
|
||||
} else {
|
||||
listFiles.add(filesetDV);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
subDocumentView.setListFiles(listFiles);
|
||||
subDocumentView.setListImages(listImages);
|
||||
}
|
||||
|
||||
sectionView.addSubDocument(subDocumentView);
|
||||
|
||||
}
|
||||
|
||||
projectView.addSectionView(sectionView);
|
||||
}
|
||||
|
||||
// for (SectionView section : projectView.getListSections()) {
|
||||
// System.out.println("\n\n###### Section Title: " + section.getSectionTitle() + " ######");
|
||||
// int i = 1;
|
||||
// for (SubDocumentView subDocument : section.getListSubDocuments()) {
|
||||
// System.out.println("## " + SubDocumentView.class.getSimpleName() + " n." + i);
|
||||
// System.out.println("***** Metadata");
|
||||
// System.out.println(prettyPrintJSON(subDocument.getMetadataAsJSON()));
|
||||
// System.out.println("***** Files");
|
||||
// if (subDocument.getListFiles() != null) {
|
||||
// for (FilesetDV filesetDV : subDocument.getListFiles()) {
|
||||
// System.out.println("******* File Fileset name: " + filesetDV.getName());
|
||||
// for (PayloadDV payload : filesetDV.getListPayload()) {
|
||||
// System.out.println("********* Payload: " + payload);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// System.out.println("***** Images");
|
||||
// if (subDocument.getListImages() != null) {
|
||||
// for (FilesetDV filesetDV : subDocument.getListImages()) {
|
||||
// System.out.println("******* Image Fileset name: " + filesetDV.getName());
|
||||
// for (PayloadDV payload : filesetDV.getListPayload()) {
|
||||
// System.out.println("********* Payload: " + payload);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// i++;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
if(LOG.isDebugEnabled())
|
||||
prettyPrintProjectView(projectView);
|
||||
|
||||
LOG.info("returning project view for id: " + projectView.getTheProjectDV().getId());
|
||||
return projectView;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
@ -1247,6 +1142,235 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
|
|||
|
||||
}
|
||||
|
||||
public ProjectView loadProjectView(ProjectDV theProjectDV, String scope, String username) throws Exception {
|
||||
|
||||
String theWholeProjectAsJSON = theProjectDV.getTheDocument().getDocumentAsJSON();
|
||||
|
||||
LOG.debug("theProjectDV as JSON: " + theWholeProjectAsJSON);
|
||||
LOG.debug("theProjectDV as MAP: " + theProjectDV.getTheDocument().getDocumentAsMap());
|
||||
|
||||
ProjectView projectView = new ProjectView();
|
||||
projectView.setTheProjectDV(theProjectDV);
|
||||
|
||||
LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> linkedMap_UCDId_gCubeProfiles = GcubeProfilesPerUCDIdCache
|
||||
.get(scope);
|
||||
|
||||
// NO UCD defined, applying default
|
||||
if (linkedMap_UCDId_gCubeProfiles.size() == 0) {
|
||||
LOG.warn("No " + GEOPORTAL_CONFIGURATION_TYPE.gcube_profiles + " found in the UCD");
|
||||
LOG.info("Applying default business logic to display the project");
|
||||
SectionView sectionView = new SectionView();
|
||||
sectionView.setSectionTitle("Document");
|
||||
SubDocumentView subDocumentView = new SubDocumentView();
|
||||
|
||||
Document sectionDoc = Document.parse(theProjectDV.getTheDocument().getDocumentAsJSON());
|
||||
boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, JSON_$_POINTER, username);
|
||||
|
||||
// If is accessible
|
||||
if (isAccessibleSection) {
|
||||
|
||||
// Creating one Project with one SectionView and SubDocumentView
|
||||
String wholeSectionDoc = sectionDoc.toJson();
|
||||
subDocumentView.setMetadataAsJSON(wholeSectionDoc);
|
||||
|
||||
List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
||||
List<FilesetDV> listImages = new ArrayList<FilesetDV>();
|
||||
String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, "fileset");
|
||||
List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, wholeSectionDoc);
|
||||
FilesetDV filesetDV = new FilesetDV();
|
||||
filesetDV.setName("fileset");
|
||||
for (Payload payload : listPayloads) {
|
||||
PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
||||
filesetDV.addPayloadDV(payloadDV);
|
||||
boolean isImage = ImageDetector.isImage(payload.getMimetype());
|
||||
|
||||
if (isImage) {
|
||||
listImages.add(filesetDV);
|
||||
} else {
|
||||
listFiles.add(filesetDV);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO LAYERS
|
||||
subDocumentView.setListImages(listImages);
|
||||
subDocumentView.setListFiles(listFiles);
|
||||
sectionView.addSubDocument(subDocumentView);
|
||||
projectView.addSectionView(sectionView);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
List<GcubeProfilesMetadataForUCD> listProfilesBean = linkedMap_UCDId_gCubeProfiles
|
||||
.get(theProjectDV.getProfileID());
|
||||
|
||||
com.jayway.jsonpath.Configuration configuration = com.jayway.jsonpath.Configuration.builder()
|
||||
.jsonProvider(new JsonOrgJsonProvider()).build();
|
||||
|
||||
// Reading the Project according to list of Profile defined in the UCD
|
||||
for (GcubeProfilesMetadataForUCD gcubeProfileMetaForUCD : listProfilesBean) {
|
||||
|
||||
GcubeProfileDV gcubeProfileDV = gcubeProfileMetaForUCD.getGcubeProfile();
|
||||
SectionView sectionView = new SectionView();
|
||||
sectionView.setSectionTitle(gcubeProfileDV.getSectionTitle());
|
||||
LOG.debug("\n\nThe profile is: " + gcubeProfileDV);
|
||||
// Building JSON/section full PATH and section name
|
||||
String sectionJSONPath = "";
|
||||
String parentPathFromProfile = gcubeProfileDV.getParentName() == null ? "" : gcubeProfileDV.getParentName();
|
||||
String theSectionName = gcubeProfileDV.getSectionName();
|
||||
|
||||
if (theSectionName.compareTo(JSON_$_POINTER) == 0 || theSectionName.compareTo(JSON_$_POINTER + ".") == 0) {
|
||||
sectionJSONPath = JSON_$_POINTER;
|
||||
theSectionName = "";
|
||||
} else {
|
||||
sectionJSONPath = String.format("%s%s",
|
||||
parentPathFromProfile.endsWith(".") ? parentPathFromProfile : parentPathFromProfile + ".",
|
||||
theSectionName);
|
||||
}
|
||||
|
||||
LOG.debug("The sectionJSONPath is: " + sectionJSONPath);
|
||||
|
||||
JsonPath theSectionJsonPath = null;
|
||||
Object data = null;
|
||||
try {
|
||||
theSectionJsonPath = JsonPath.compile(sectionJSONPath);
|
||||
data = theSectionJsonPath.read(theWholeProjectAsJSON, configuration);
|
||||
}catch (Exception e) {
|
||||
LOG.warn("Error on searching the section " + sectionJSONPath +" in the JSON Project: "+theWholeProjectAsJSON);
|
||||
continue;
|
||||
}
|
||||
|
||||
LOG.debug("Data is instace of: " + data.getClass());
|
||||
LOG.debug("data to string: " + data.toString());
|
||||
|
||||
// Splitting the General Document in bson.Document according to list of
|
||||
// GcubeProfiles
|
||||
List<Document> listBSONDocument = new ArrayList<Document>();
|
||||
if (data instanceof org.json.JSONObject) {
|
||||
String jsonString = data.toString();
|
||||
LOG.debug("the JSON to string: " + jsonString);
|
||||
Document sectionDoc = Document.parse(jsonString);
|
||||
boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, sectionJSONPath,
|
||||
username);
|
||||
if (isAccessibleSection) {
|
||||
listBSONDocument.add(sectionDoc);
|
||||
}
|
||||
|
||||
} else if (data instanceof org.json.JSONArray) {
|
||||
org.json.JSONArray dataArray = (org.json.JSONArray) data;
|
||||
for (int i = 0; i < dataArray.length(); i++) {
|
||||
String jsonString = dataArray.get(i).toString();
|
||||
LOG.debug("the array " + i + " JSON to string: " + jsonString);
|
||||
Document sectionDoc = Document.parse(jsonString);
|
||||
boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, sectionJSONPath,
|
||||
username);
|
||||
if (isAccessibleSection) {
|
||||
listBSONDocument.add(sectionDoc);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
LOG.debug("Result for " + gcubeProfileDV.getSectionName() + " is: " + listBSONDocument);
|
||||
List<MetaDataProfileBean> theProfileBeans = gcubeProfileMetaForUCD.getListMetadataProfileBean();
|
||||
MetaDataProfileBean theProfileBean = theProfileBeans.get(0);
|
||||
|
||||
// For each bson.Document creating the SubDocumentView
|
||||
for (int i = 0; i < listBSONDocument.size(); i++) {
|
||||
Document fromSectionDoc = listBSONDocument.get(i);
|
||||
SubDocumentView subDocumentView = new SubDocumentView();
|
||||
Document toSectionDoc = new Document();
|
||||
// Filling the SubDocumentView metadata with the metadataField.getFieldName()
|
||||
// read from the Profile
|
||||
for (MetadataFieldWrapper metadataField : theProfileBean.getMetadataFields()) {
|
||||
|
||||
String theFieldName = metadataField.getFieldId() != null ? metadataField.getFieldId()
|
||||
: metadataField.getFieldName();
|
||||
LOG.debug("reading theFieldName: " + theFieldName);
|
||||
Object theOBJFieldValue = fromSectionDoc.get(theFieldName);
|
||||
|
||||
// NB: Using ALWAYS THE metadataField.getFieldName() as LABEL
|
||||
toSectionDoc = sanitizeDocumentValue(toSectionDoc, metadataField.getFieldName(), theOBJFieldValue);
|
||||
|
||||
}
|
||||
String subToJSON = toSectionDoc.toJson();
|
||||
LOG.debug("theSubSetionDoc is: " + subToJSON);
|
||||
subDocumentView.setMetadataAsJSON(toSectionDoc.toJson());
|
||||
|
||||
// Reading filePaths
|
||||
List<FilePathDV> filePaths = gcubeProfileDV.getFilePaths();
|
||||
|
||||
// READING fileset* field ACCORDING TO filePaths OF THE 'gcubeProfiles' CONFIG
|
||||
if (filePaths != null) {
|
||||
String fromSectionDocJSON = fromSectionDoc.toJson();
|
||||
List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
||||
List<FilesetDV> listImages = new ArrayList<FilesetDV>();
|
||||
for (FilePathDV filePath : filePaths) {
|
||||
|
||||
String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, filePath.getFieldName());
|
||||
List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, fromSectionDocJSON);
|
||||
FilesetDV filesetDV = new FilesetDV();
|
||||
filesetDV.setName(filePath.getGcubeProfileFieldName());
|
||||
for (Payload payload : listPayloads) {
|
||||
PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
||||
filesetDV.addPayloadDV(payloadDV);
|
||||
boolean isImage = ImageDetector.isImage(payload.getMimetype());
|
||||
|
||||
if (isImage) {
|
||||
listImages.add(filesetDV);
|
||||
} else {
|
||||
listFiles.add(filesetDV);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
subDocumentView.setListFiles(listFiles);
|
||||
subDocumentView.setListImages(listImages);
|
||||
}
|
||||
|
||||
sectionView.addSubDocument(subDocumentView);
|
||||
|
||||
}
|
||||
|
||||
projectView.addSectionView(sectionView);
|
||||
}
|
||||
|
||||
return projectView;
|
||||
}
|
||||
|
||||
public void prettyPrintProjectView(ProjectView projectView) {
|
||||
|
||||
for (SectionView section : projectView.getListSections()) {
|
||||
System.out.println("\n\n###### Section Title: " + section.getSectionTitle() + " ######");
|
||||
int i = 1;
|
||||
for (SubDocumentView subDocument : section.getListSubDocuments()) {
|
||||
System.out.println("## " + SubDocumentView.class.getSimpleName() + " n." + i);
|
||||
System.out.println("***** Metadata");
|
||||
System.out.println(prettyPrintJSON(subDocument.getMetadataAsJSON()));
|
||||
System.out.println("***** Files");
|
||||
if (subDocument.getListFiles() != null) {
|
||||
for (FilesetDV filesetDV : subDocument.getListFiles()) {
|
||||
System.out.println("******* File Fileset name: " + filesetDV.getName());
|
||||
for (PayloadDV payload : filesetDV.getListPayload()) {
|
||||
System.out.println("********* Payload: " + payload);
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("***** Images");
|
||||
if (subDocument.getListImages() != null) {
|
||||
for (FilesetDV filesetDV : subDocument.getListImages()) {
|
||||
System.out.println("******* Image Fileset name: " + filesetDV.getName());
|
||||
for (PayloadDV payload : filesetDV.getListPayload()) {
|
||||
System.out.println("********* Payload: " + payload);
|
||||
}
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read payloads for fileset.
|
||||
*
|
||||
|
@ -1279,8 +1403,7 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
|
|||
|
||||
LOG.info("returning list of payloads {}", listPayloads);
|
||||
} catch (Exception e) {
|
||||
LOG.error("Error on reading the JSON Path {} in the doc {} ", _payloadsJSONPath, sectionJSONDocument);
|
||||
e.printStackTrace();
|
||||
LOG.warn("Error on reading the JSON Path "+_payloadsJSONPath+" in the doc "+sectionJSONDocument, e);
|
||||
}
|
||||
|
||||
return listPayloads;
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.server.faults;
|
||||
|
||||
public class InvalidObjectException extends Exception {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 7577708930172470038L;
|
||||
|
||||
public InvalidObjectException() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidObjectException(String message) {
|
||||
super(message);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidObjectException(Throwable cause) {
|
||||
super(cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidObjectException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidObjectException(String message, Throwable cause, boolean enableSuppression,
|
||||
boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.server.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.faults.ControlledError;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public abstract class ContextRequest<T> {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ContextRequest.class);
|
||||
|
||||
private static List<Runnable> preoperations = new ArrayList<>();
|
||||
|
||||
public static void addPreoperation(Runnable preoperation) {
|
||||
preoperations.add(preoperation);
|
||||
}
|
||||
|
||||
protected HttpServletRequest request;
|
||||
private T result = null;
|
||||
|
||||
public ContextRequest(HttpServletRequest httpRequest) {
|
||||
this.request = httpRequest;
|
||||
}
|
||||
|
||||
public ContextRequest<T> execute() throws Exception, ControlledError {
|
||||
try {
|
||||
if (!preoperations.isEmpty()) {
|
||||
LOG.trace("Running preops (size : {} )", preoperations.size());
|
||||
for (Runnable r : preoperations)
|
||||
r.run();
|
||||
}
|
||||
|
||||
LOG.debug("Context is " + SessionUtil.getCurrentContext(request, true));
|
||||
LOG.debug("Context is " + SessionUtil.getCurrentToken(request, true) == null ? null : "***");
|
||||
LOG.trace("Executing actual method..");
|
||||
result = run();
|
||||
return this;
|
||||
} catch (ControlledError e) {
|
||||
throw e;
|
||||
} catch (Throwable t) {
|
||||
LOG.error("Unexpected error ", t);
|
||||
throw new Exception("Unexpected error contacting the infrastructure", t);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public T getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
protected abstract T run() throws Exception, ControlledError;
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.server.util;
|
||||
|
||||
import org.gcube.application.geoportal.client.utils.Serialization;
|
||||
import org.gcube.application.geoportal.common.model.configuration.Index;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.server.faults.InvalidObjectException;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.IndexLayer;
|
||||
|
||||
public class DVConversion {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* {
|
||||
"_type": "GIS-CENTROIDS",
|
||||
"layer": {
|
||||
"_type": "gcube-sdi-layer",
|
||||
"_platformInfo": [
|
||||
{
|
||||
"_type": "Geoserver",
|
||||
"workspace": "profiledconcessioni_devvre",
|
||||
"storeName": "profiledconcessioni_devvre_centroids",
|
||||
"_host": "geoserver-218.dev.d4science.org"
|
||||
}
|
||||
],
|
||||
"_bbox": {
|
||||
"_maxX": 180.0,
|
||||
"_minX": -180.0,
|
||||
"_maxY": 90.0,
|
||||
"_minY": -90.0
|
||||
},
|
||||
"_ogcLinks": {
|
||||
"wms": {
|
||||
"wms": "https://geoserver-218.dev.d4science.org/geoserver/profiledconcessioni_devvre/wms?service=WMS&version=1.1.0&request=GetMap&layers=profiledconcessioni_devvre:null&styles=&bbox=-180.000000,-90.000000,180.000000,90.000000&srs=EPSG:4326&format=application/openlayers&width=400&height=400"
|
||||
}
|
||||
}
|
||||
},
|
||||
"indexName": "profiledconcessioni_devvre_centroids",
|
||||
"records": 4,
|
||||
"crossReferencedLayers": {},
|
||||
"flag": "public"
|
||||
}
|
||||
* @throws InvalidObjectException
|
||||
*
|
||||
*/
|
||||
|
||||
public static IndexLayer convert(Index toConvert) throws InvalidObjectException {
|
||||
IndexLayer toReturn = null;
|
||||
|
||||
|
||||
switch(toConvert.getType()) {
|
||||
case "GIS-CENTROIDS" : {
|
||||
toReturn = Serialization.convert(toConvert,IndexLayer.class);
|
||||
// toReturn.setLayer(Serialization.read(toConvert.get("layer"), GCubeSDILayer.class));
|
||||
// toReturn.setFlag(toConvert.getString("flag"));
|
||||
// toReturn.setIndexName(toConvert.getString());
|
||||
break;
|
||||
|
||||
}
|
||||
default:{
|
||||
throw new InvalidObjectException("Unable to convert Index. Unknown type : "+toConvert.getType());
|
||||
}
|
||||
}
|
||||
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.IndexLayer;
|
||||
|
||||
|
||||
public class GCubeCollection implements Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -3915546050671671465L;
|
||||
|
||||
private UseCaseDescriptorDV ucd;
|
||||
private List<IndexLayer> indexes;
|
||||
|
||||
public GCubeCollection() {
|
||||
}
|
||||
|
||||
public UseCaseDescriptorDV getUcd() {
|
||||
return ucd;
|
||||
}
|
||||
|
||||
public List<IndexLayer> getIndexes() {
|
||||
return indexes;
|
||||
}
|
||||
|
||||
|
||||
public void setUcd(UseCaseDescriptorDV ucd) {
|
||||
this.ucd = ucd;
|
||||
}
|
||||
|
||||
public void setIndexes(List<IndexLayer> indexes) {
|
||||
this.indexes = indexes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GCubeCollection [ucd=" + ucd + ", indexes=" + indexes + "]";
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
||||
|
||||
public class ViewerConfiguration implements Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 7838513808590351819L;
|
||||
|
||||
public ViewerConfiguration() {
|
||||
|
||||
}
|
||||
|
||||
// TODO BaseLayers
|
||||
public List<BaseMapLayer> baseLayers;
|
||||
|
||||
public Map<String, GCubeCollection> availableCollections;
|
||||
|
||||
public List<BaseMapLayer> getBaseLayers() {
|
||||
return baseLayers;
|
||||
}
|
||||
|
||||
public void setBaseLayers(List<BaseMapLayer> baseLayers) {
|
||||
this.baseLayers = baseLayers;
|
||||
}
|
||||
|
||||
public Map<String, GCubeCollection> getAvailableCollections() {
|
||||
return availableCollections;
|
||||
}
|
||||
|
||||
public void setAvailableCollections(Map<String, GCubeCollection> availableCollections) {
|
||||
this.availableCollections = availableCollections;
|
||||
}
|
||||
|
||||
// TODO
|
||||
// public List<String> displayedCollections;
|
||||
//
|
||||
//
|
||||
// public Map<String,String> selectedProjects;
|
||||
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared.cl.document.materialization;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class BBOXDV extends HashMap<String,Double>{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -160255589938251081L;
|
||||
|
||||
public BBOXDV() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public final String asGeoJSONBBox(){
|
||||
StringBuilder builder = new StringBuilder("[");
|
||||
builder.append(getMaxX()+","); // W
|
||||
builder.append(getMinY()+","); // S
|
||||
if(is3d()) builder.append(getMinZ()+","); // Z
|
||||
|
||||
builder.append(getMinX()+","); // E
|
||||
builder.append(getMaxY()+","); // N
|
||||
if(is3d()) builder.append(getMaxZ()+","); // Z
|
||||
|
||||
|
||||
builder.deleteCharAt(builder.length());
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
public double[] asGeoJSONArray(){
|
||||
if(is3d()){
|
||||
return new double[]{getMaxX(),getMinY(),getMinZ(),getMinX(),getMaxY(),getMaxZ()};
|
||||
}else return new double[]{getMaxX(),getMinY(),getMinX(),getMaxY()};
|
||||
}
|
||||
|
||||
public static final BBOXDV fromGeoJSON(double[] coords){
|
||||
BBOXDV toReturn = new BBOXDV();
|
||||
toReturn.setMaxX(coords[0]);
|
||||
toReturn.setMinY(coords[1]);
|
||||
|
||||
if(coords.length == 6){
|
||||
// 3D
|
||||
toReturn.setMinZ(coords[2]);
|
||||
toReturn.setMinX(coords[3]);
|
||||
toReturn.setMaxY(coords[4]);
|
||||
toReturn.setMaxZ(coords[5]);
|
||||
}else {
|
||||
toReturn.setMinX(coords[2]);
|
||||
toReturn.setMaxY(coords[3]);
|
||||
}
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
public static final BBOXDV WORLD=new BBOXDV(180d,-180d,90d,-90d);
|
||||
|
||||
public static final BBOXDV WORLD_3D=new BBOXDV(180d,-180d,90d,-90d);
|
||||
|
||||
public static final String MAX_X="_maxX";
|
||||
public static final String MAX_Y="_maxY";
|
||||
public static final String MAX_Z="_maxZ";
|
||||
public static final String MIN_X="_minX";
|
||||
public static final String MIN_Y="_minY";
|
||||
public static final String MIN_Z="_minZ";
|
||||
|
||||
|
||||
public BBOXDV(Double maxX,Double minX,Double maxY,Double minY,Double maxZ,Double minZ){
|
||||
this(maxX,minX,maxY,minY);
|
||||
setMaxZ(maxZ);
|
||||
setMinZ(minZ);
|
||||
}
|
||||
public BBOXDV(Double maxX,Double minX,Double maxY,Double minY){
|
||||
setMaxX(maxX);
|
||||
setMinX(minX);
|
||||
setMaxY(maxY);
|
||||
setMinY(minY);
|
||||
}
|
||||
|
||||
|
||||
public BBOXDV setMaxX(Double d){this.put(MAX_X,d);return this;}
|
||||
|
||||
public BBOXDV setMaxY(Double d){this.put(MAX_Y,d);return this;}
|
||||
|
||||
public BBOXDV setMaxZ(Double d){this.put(MAX_Z,d);return this;}
|
||||
|
||||
public BBOXDV setMinX(Double d){this.put(MIN_X,d);return this;}
|
||||
|
||||
public BBOXDV setMinY(Double d){this.put(MIN_Y,d);return this;}
|
||||
|
||||
public BBOXDV setMinZ(Double d){this.put(MIN_Z,d);return this;}
|
||||
|
||||
public Double getMinY(){return (Double) this.getOrDefault(MIN_Y,-90d);}
|
||||
|
||||
public Double getMaxY(){return (Double) this.getOrDefault(MAX_Y,90d);}
|
||||
|
||||
public Double getMinX(){return (Double) this.getOrDefault(MIN_X,-180d);}
|
||||
|
||||
public Double getMaxX(){return (Double) this.getOrDefault(MAX_X,180d);}
|
||||
|
||||
public Double getMinZ(){return (Double) this.getOrDefault(MIN_Z,null);}
|
||||
|
||||
public Double getMaxZ(){return (Double) this.getOrDefault(MAX_Z,null);}
|
||||
|
||||
|
||||
public Boolean is3d(){
|
||||
return getMinZ()!=null && getMaxZ() !=null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared.cl.document.materialization;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class GCubeSDILayerDV implements Serializable {
|
||||
|
||||
// TODO manage heterogeneus collection
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 5317964084778336268L;
|
||||
@JsonProperty(value = "_type")
|
||||
private String type;
|
||||
@JsonProperty(value = "_platformInfo")
|
||||
private List<GeoServerPlatformInfoDV> platformInfos;
|
||||
@JsonProperty(value = "_bbox")
|
||||
private BBOXDV bbox;
|
||||
@JsonProperty(value = "_ogcLinks")
|
||||
private HashMap<String, String> ogcLinks;
|
||||
|
||||
public GCubeSDILayerDV() {
|
||||
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public List<GeoServerPlatformInfoDV> getPlatformInfos() {
|
||||
return platformInfos;
|
||||
}
|
||||
|
||||
public BBOXDV getBbox() {
|
||||
return bbox;
|
||||
}
|
||||
|
||||
public HashMap<String, String> getOgcLinks() {
|
||||
return ogcLinks;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public void setPlatformInfos(List<GeoServerPlatformInfoDV> platformInfos) {
|
||||
this.platformInfos = platformInfos;
|
||||
}
|
||||
|
||||
public void setBbox(BBOXDV bbox) {
|
||||
this.bbox = bbox;
|
||||
}
|
||||
|
||||
public void setOgcLinks(HashMap<String, String> ogcLinks) {
|
||||
this.ogcLinks = ogcLinks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("GCubeSDILayerDV [type=");
|
||||
builder.append(type);
|
||||
builder.append(", platformInfos=");
|
||||
builder.append(platformInfos);
|
||||
builder.append(", bbox=");
|
||||
builder.append(bbox);
|
||||
builder.append(", ogcLinks=");
|
||||
builder.append(ogcLinks);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared.cl.document.materialization;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class GeoServerPlatformInfoDV implements Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -2630467451758269625L;
|
||||
|
||||
@JsonProperty(value = "_type")
|
||||
private String type;
|
||||
private String workspace;
|
||||
private String storeName;
|
||||
|
||||
public GeoServerPlatformInfoDV() {
|
||||
}
|
||||
|
||||
@JsonProperty(value = "_host")
|
||||
private String host;
|
||||
|
||||
private Map<String, String> ogcLinks;
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getWorkspace() {
|
||||
return workspace;
|
||||
}
|
||||
|
||||
public void setWorkspace(String workspace) {
|
||||
this.workspace = workspace;
|
||||
}
|
||||
|
||||
public String getStoreName() {
|
||||
return storeName;
|
||||
}
|
||||
|
||||
public void setStoreName(String storeName) {
|
||||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public Map<String, String> getOgcLinks() {
|
||||
return ogcLinks;
|
||||
}
|
||||
|
||||
public void setOgcLinks(Map<String, String> ogcLinks) {
|
||||
this.ogcLinks = ogcLinks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("GeoServerPlatformInfoDV [type=");
|
||||
builder.append(type);
|
||||
builder.append(", workspace=");
|
||||
builder.append(workspace);
|
||||
builder.append(", storeName=");
|
||||
builder.append(storeName);
|
||||
builder.append(", host=");
|
||||
builder.append(host);
|
||||
builder.append(", ogcLinks=");
|
||||
builder.append(ogcLinks);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared.faults;
|
||||
|
||||
public class ControlledError extends Exception {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 3471094758439575063L;
|
||||
|
||||
public ControlledError() {
|
||||
super();
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public ControlledError(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public ControlledError(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public ControlledError(String message) {
|
||||
super(message);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public ControlledError(Throwable cause) {
|
||||
super(cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared.gis;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.cl.document.materialization.GCubeSDILayerDV;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class IndexLayer implements Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 5352754312327975329L;
|
||||
|
||||
@JsonProperty(value = "_type")
|
||||
private String type;
|
||||
private GCubeSDILayerDV layer;
|
||||
private String indexName;
|
||||
private int records;
|
||||
private String flag;
|
||||
|
||||
public IndexLayer() {
|
||||
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public GCubeSDILayerDV getLayer() {
|
||||
return layer;
|
||||
}
|
||||
|
||||
public void setLayer(GCubeSDILayerDV layer) {
|
||||
this.layer = layer;
|
||||
}
|
||||
|
||||
public String getIndexName() {
|
||||
return indexName;
|
||||
}
|
||||
|
||||
public void setIndexName(String indexName) {
|
||||
this.indexName = indexName;
|
||||
}
|
||||
|
||||
public int getRecords() {
|
||||
return records;
|
||||
}
|
||||
|
||||
public void setRecords(int records) {
|
||||
this.records = records;
|
||||
}
|
||||
|
||||
public String getFlag() {
|
||||
return flag;
|
||||
}
|
||||
|
||||
public void setFlag(String flag) {
|
||||
this.flag = flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("IndexLayer [type=");
|
||||
builder.append(type);
|
||||
builder.append(", layer=");
|
||||
builder.append(layer);
|
||||
builder.append(", indexName=");
|
||||
builder.append(indexName);
|
||||
builder.append(", records=");
|
||||
builder.append(records);
|
||||
builder.append(", flag=");
|
||||
builder.append(flag);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -2,13 +2,18 @@ package org.gcube.portlets.user.geoportaldataviewer.shared.gis;
|
|||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.gis.BoundsMap;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.LayerType;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.Property;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.ZAxis;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
|
||||
/**
|
||||
* The Class LayerItem.
|
||||
*
|
||||
|
@ -18,6 +23,7 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.ZAxis;
|
|||
*/
|
||||
public class LayerItem implements Serializable, Cloneable {
|
||||
|
||||
|
||||
/** The Constant serialVersionUID. */
|
||||
private static final long serialVersionUID = 1664082688635256899L;
|
||||
|
||||
|
@ -962,4 +968,92 @@ public class LayerItem implements Serializable, Cloneable {
|
|||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* To layer item.
|
||||
*
|
||||
* @param layerType the layer type
|
||||
* @param layerTitle the layer title
|
||||
* @param layerName the layer name
|
||||
* @param layerURL the layer URL
|
||||
* @param mapServerHost the map server host
|
||||
* @param isExternal the is external
|
||||
* @param isBase the is base
|
||||
* @param displayInLayerSwitcher the display in layer switcher
|
||||
* @param styles the styles
|
||||
* @param wmsLink the wms link
|
||||
* @param onTop the on top
|
||||
* @param wmsNotStandardParams the wms not standard params
|
||||
* @param isNcWms the is nc wms
|
||||
* @param UUID the uuid
|
||||
* @param zAxis the z axis
|
||||
* @param minResolution the min resolution
|
||||
* @param maxResolution the max resolution
|
||||
* @return the layer item
|
||||
*/
|
||||
|
||||
|
||||
// TODO Constructor from IndexLayer, GCUBESDILAeryDV or direct info
|
||||
private LayerItem toLayerItem(LayerType layerType, String layerTitle, String layerName, String layerURL,
|
||||
String mapServerHost, boolean isExternal, boolean isBase, boolean displayInLayerSwitcher,
|
||||
ArrayList<String> styles, String wmsLink, boolean onTop, HashMap<String, String> wmsNotStandardParams,
|
||||
boolean isNcWms, String UUID, ZAxis zAxis, Double minResolution, Double maxResolution) {
|
||||
|
||||
// GWT.log("Add addLayerByWms 1");
|
||||
LayerItem layerItem = new LayerItem();
|
||||
layerItem.setBaseLayer(isBase);
|
||||
layerItem.setTitle(layerTitle);
|
||||
layerItem.setName(layerName);
|
||||
layerItem.setUrl(layerURL);
|
||||
layerItem.setMapServerHost(mapServerHost);
|
||||
// l.setExternal(isExternal);
|
||||
layerItem.setOpacity(1d);
|
||||
layerItem.setBuffer(2);
|
||||
layerItem.setWmsLink(wmsLink);
|
||||
layerItem.setWmsNotStandardParams(wmsNotStandardParams);
|
||||
layerItem.setNcWms(isNcWms);
|
||||
layerItem.setUUID(UUID);
|
||||
layerItem.setZAxis(zAxis);
|
||||
layerItem.setMinResolution(minResolution);
|
||||
layerItem.setMaxResolution(maxResolution);
|
||||
|
||||
switch (layerType) {
|
||||
|
||||
// TODO IMPLEMENT THIS CASE
|
||||
case RASTER_BASELAYER:
|
||||
|
||||
// l.setHasLegend(false);
|
||||
layerItem.setBaseLayer(true);
|
||||
layerItem.setTrasparent(false);
|
||||
layerItem.setClickData(false);
|
||||
break;
|
||||
|
||||
case FEATURE_TYPE:
|
||||
|
||||
// CASE FEATURE TYPE
|
||||
layerItem.setBaseLayer(false);
|
||||
layerItem.setClickData(true);
|
||||
layerItem.setTrasparent(true);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
GWT.log("styles " + styles);
|
||||
|
||||
if (styles != null && styles.size() > 0) {
|
||||
layerItem.setHasLegend(true);
|
||||
layerItem.setDefaultStyle(styles.get(0));
|
||||
layerItem.setStyle(styles.get(0));
|
||||
layerItem.setStyles(styles);
|
||||
} else {
|
||||
String style = URLUtil.getValueOfParameter("styles", wmsLink);
|
||||
if (style != null) { // CASE OF STYLE ="";
|
||||
// TENTATIVE TO GET LEGEND
|
||||
layerItem.setHasLegend(true);
|
||||
}
|
||||
}
|
||||
GWT.log("Built layer: " + layerItem);
|
||||
return layerItem;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,15 +2,14 @@ package org.gcube.portlets.user.geoportaldataviewer.shared.gis;
|
|||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.products.BaseConcessioneDV;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.shared.cl.document.materialization.GCubeSDILayerDV;
|
||||
|
||||
|
||||
/**
|
||||
* The Class LayerObject.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
* Represents a layer,
|
||||
* holds the layer item and the related Collection info if existing
|
||||
*
|
||||
*
|
||||
* Sep 9, 2021
|
||||
*/
|
||||
public class LayerObject implements Serializable {
|
||||
|
||||
|
@ -18,101 +17,107 @@ public class LayerObject implements Serializable {
|
|||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -2282478701630148774L;
|
||||
/* This is the layer/product type. E.g. Concessione */
|
||||
private String itemType;
|
||||
|
||||
|
||||
private LayerObjectType type;
|
||||
|
||||
private IndexLayer indexLayer; // expected for INDEX_LAYER type
|
||||
private String ucid; // expected for collection layers
|
||||
private GCubeSDILayerDV projectLayer; // expected for PROJECT_LAYER
|
||||
private String projectId; // expected for PROJECT_LAYER
|
||||
|
||||
private LayerItem layerItem;
|
||||
private BaseConcessioneDV sourceConcessione;
|
||||
|
||||
/**
|
||||
* Instantiates a new layer object.
|
||||
*/
|
||||
public LayerObject() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates a new layer object.
|
||||
*
|
||||
* @param itemType the item type
|
||||
* @param layerItem the layer item
|
||||
* @param sourceConcessione the source concessione
|
||||
*/
|
||||
public LayerObject(String itemType, LayerItem layerItem, BaseConcessioneDV sourceConcessione) {
|
||||
super();
|
||||
this.itemType = itemType;
|
||||
this.layerItem = layerItem;
|
||||
this.sourceConcessione = sourceConcessione;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the item type.
|
||||
*
|
||||
* @return the item type
|
||||
*/
|
||||
public String getItemType() {
|
||||
return itemType;
|
||||
public LayerObject(LayerObjectType type,LayerItem item) {
|
||||
this.setType(type);
|
||||
this.setLayerItem(item);
|
||||
}
|
||||
|
||||
|
||||
public LayerObject(String ucid, IndexLayer indexLayer, LayerItem item) {
|
||||
this(LayerObjectType.INDEX_LAYER,item);
|
||||
this.ucid=ucid;
|
||||
this.indexLayer=indexLayer;
|
||||
}
|
||||
|
||||
public LayerObject(String ucid, String projectId, GCubeSDILayerDV projectLayer, LayerItem item) {
|
||||
this(LayerObjectType.PROJECT_LAYER,item);
|
||||
this.ucid=ucid;
|
||||
this.projectId=projectId;
|
||||
this.projectLayer = projectLayer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the layer item.
|
||||
*
|
||||
* @return the layer item
|
||||
*/
|
||||
|
||||
public LayerObjectType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
public void setType(LayerObjectType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
|
||||
public IndexLayer getIndexLayer() {
|
||||
return indexLayer;
|
||||
}
|
||||
|
||||
|
||||
public void setIndexLayer(IndexLayer indexLayer) {
|
||||
this.indexLayer = indexLayer;
|
||||
}
|
||||
|
||||
|
||||
public String getUcid() {
|
||||
return ucid;
|
||||
}
|
||||
|
||||
|
||||
public void setUcid(String ucid) {
|
||||
this.ucid = ucid;
|
||||
}
|
||||
|
||||
|
||||
public GCubeSDILayerDV getProjectLayer() {
|
||||
return projectLayer;
|
||||
}
|
||||
|
||||
|
||||
public void setProjectLayer(GCubeSDILayerDV projectLayer) {
|
||||
this.projectLayer = projectLayer;
|
||||
}
|
||||
|
||||
|
||||
public String getProjectId() {
|
||||
return projectId;
|
||||
}
|
||||
|
||||
|
||||
public void setProjectId(String projectId) {
|
||||
this.projectId = projectId;
|
||||
}
|
||||
|
||||
|
||||
public LayerItem getLayerItem() {
|
||||
return layerItem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the source concessione.
|
||||
*
|
||||
* @return the source concessione
|
||||
*/
|
||||
public BaseConcessioneDV getSourceConcessione() {
|
||||
return sourceConcessione;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the item type.
|
||||
*
|
||||
* @param itemType the new item type
|
||||
*/
|
||||
public void setItemType(String itemType) {
|
||||
this.itemType = itemType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the layer item.
|
||||
*
|
||||
* @param layerItem the new layer item
|
||||
*/
|
||||
public void setLayerItem(LayerItem layerItem) {
|
||||
this.layerItem = layerItem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the source concessione.
|
||||
*
|
||||
* @param sourceConcessione the new source concessione
|
||||
*/
|
||||
public void setSourceConcessione(BaseConcessioneDV sourceConcessione) {
|
||||
this.sourceConcessione = sourceConcessione;
|
||||
}
|
||||
|
||||
/**
|
||||
* To string.
|
||||
*
|
||||
* @return the string
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("LayerObject [itemType=");
|
||||
builder.append(itemType);
|
||||
builder.append(", layerItem=");
|
||||
builder.append(layerItem);
|
||||
builder.append(", sourceConcessione=");
|
||||
builder.append(sourceConcessione);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
public static long getSerialversionuid() {
|
||||
return serialVersionUID;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer.shared.gis;
|
||||
|
||||
public enum LayerObjectType {
|
||||
BASE_LAYER, PROJECT_LAYER, INDEX_LAYER, GENERIC_LAYER
|
||||
}
|
|
@ -32,9 +32,4 @@
|
|||
<url-pattern>/GeoportalDataViewer/geoportaldataviewerservice</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
|
||||
<listener>
|
||||
<listener-class>org.gcube.portlets.user.geoportaldataviewer.server.GeoportalDataViewerHttpSessionListener</listener-class>
|
||||
</listener>
|
||||
|
||||
</web-app>
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
package org.gcube.portlets.user.geoportaldataviewer;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel;
|
||||
import org.gcube.application.geoportalcommon.ProjectDVBuilder;
|
||||
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.shared.geoportal.project.ProjectDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.portlets.user.geoportaldataviewer.server.GeoportalDataViewerServiceImpl;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* The Class GeoportalViewer_Tests.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Sep 9, 2022
|
||||
*/
|
||||
public class GeoportalViewer_Tests {
|
||||
|
||||
private UseCaseDescriptorCaller clientUCD;
|
||||
|
||||
private ProjectsCaller clientProjects;
|
||||
|
||||
// private static String CONTEXT = "/pred4s/preprod/preVRE";
|
||||
// private static String TOKEN = ""; //preVRE
|
||||
|
||||
private static String CONTEXT = "/gcube/devsec/devVRE";
|
||||
private static String TOKEN = "c41a00c0-7897-48d2-a67a-05190d6ce5e6-98187548"; // devVRE
|
||||
|
||||
private static String PROFILE_ID = "profiledConcessioni";
|
||||
private static String PROJECT_ID = "6311d408900dde90e44d9265";
|
||||
|
||||
private static String USERNAME = "francesco.mangiacrapa";
|
||||
|
||||
/**
|
||||
* Gets the client.
|
||||
*
|
||||
* @return the client
|
||||
*/
|
||||
@Before
|
||||
public void getClient() {
|
||||
// assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||
ScopeProvider.instance.set(CONTEXT);
|
||||
SecurityTokenProvider.instance.set(TOKEN);
|
||||
clientUCD = GeoportalClientCaller.useCaseDescriptors();
|
||||
clientProjects = GeoportalClientCaller.projects();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPreviewObjectForID() {
|
||||
|
||||
try {
|
||||
ScopeProvider.instance.set(CONTEXT);
|
||||
SecurityTokenProvider.instance.set(TOKEN);
|
||||
Project project = clientProjects.getProjectByID(PROFILE_ID, PROJECT_ID);
|
||||
ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder().fullDocumentMap(true);
|
||||
ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(project, projectBuilder);
|
||||
|
||||
ScopeProvider.instance.set(CONTEXT);
|
||||
SecurityTokenProvider.instance.set(TOKEN);
|
||||
GeoportalDataViewerServiceImpl gdvsi = new GeoportalDataViewerServiceImpl();
|
||||
|
||||
ProjectView projectView = gdvsi.loadProjectView(projectDV, CONTEXT, USERNAME);
|
||||
System.out.println(projectView);
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue