diff --git a/.classpath b/.classpath index 018649c..4247d22 100644 --- a/.classpath +++ b/.classpath @@ -32,6 +32,7 @@ + diff --git a/pom.xml b/pom.xml index 0fc54bc..47c5ff7 100644 --- a/pom.xml +++ b/pom.xml @@ -109,6 +109,24 @@ geo-utility [1.0.0,2.0.0-SNAPSHOT) + + org.gcube.common + authorization-client + [2.0.0, 3.0.0-SNAPSHOT) + provided + + + org.gcube.resources.discovery + ic-client + [1.0.0, 2.0.0-SNAPSHOT) + provided + + + org.gcube.core + common-scope-maps + [1.1.0, 2.0.0-SNAPSHOT) + compile + org.gcube.common.portal portal-manager diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java index d6b1abd..809ddfe 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java @@ -137,6 +137,7 @@ public class GeoportalDataViewer implements EntryPoint { @Override public void onShowDetails(ShowDetailsEvent showDetailsEvent) { + GWT.log("Fired event: "+showDetailsEvent); FeatureRow fRow = showDetailsEvent.getFeatureRow(); if(fRow!=null) { if(showDetailsEvent.getProductType().equals(ProductType.CONCESSIONE)) { @@ -147,7 +148,7 @@ public class GeoportalDataViewer implements EntryPoint { @Override public void onFailure(Throwable caught) { - // TODO Auto-generated method stub + Window.alert(caught.getMessage()); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java index 83da54a..3f1aaef 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java @@ -23,13 +23,20 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.wms.ZAxis; import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.constants.ButtonType; 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.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.HandlerManager; +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.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.VerticalPanel; import ol.Coordinate; @@ -131,10 +138,12 @@ public class LayerManager { flex.setCellSpacing(1); flex.getElement().addClassName("popup-table"); boolean featureFound = false; + FeatureRow feature = null; for (GeoNaDataObject geoNaDataObject : result) { List features = geoNaDataObject.getFeatures(); if(features!=null && features.size()>0) { + feature = features.get(0); Map> entries = features.get(0).getMapProperties(); for (String key : entries.keySet()) { @@ -147,27 +156,56 @@ public class LayerManager { flex.setHTML(2, 0, new HTML(""+entries.get(key).get(0)).toString()+""); } } - Button button = new Button("Open Details"); - button.setType(ButtonType.LINK); - button.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - applicationBus.fireEvent(new ShowDetailsEvent(ProductType.CONCESSIONE, features.get(0))); - - } - }); - flex.add(button); + featureFound = true; break; //Only the first one } } - + FeatureRow theFeature = feature; + Button button = null; if(!featureFound) { flex.setHTML(0, 0, new HTML("No data available").toString()); + }else { + button = new Button("Open Details"); + button.getElement().setId("open-details"); + button.setType(ButtonType.LINK); } - olMap.showPopup(flex.toString(), queryEvent.getoLCoordinate()); + VerticalPanel vpPanel = new VerticalPanel(); + vpPanel.add(flex); + + if(button!=null) + vpPanel.add(button); + + olMap.showPopup(vpPanel.toString(), queryEvent.getoLCoordinate()); + + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + + @Override + public void execute() { + Element buttonElement = DOM.getElementById("open-details"); + 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(ProductType.CONCESSIONE, theFeature)); + } + } + }); + } + }); + button.setType(ButtonType.LINK); + button.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + GWT.log("qui"); + applicationBus.fireEvent(new ShowDetailsEvent(ProductType.CONCESSIONE, theFeature)); + + } + }); } }); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java index 0588a74..3188f97 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java @@ -8,9 +8,11 @@ import org.gcube.application.geoportal.managers.AbstractRecordManager; import org.gcube.application.geoportal.managers.ManagerFactory; import org.gcube.application.geoportal.model.Record; import org.gcube.application.geoportal.model.concessioni.Concessione; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerService; import org.gcube.portlets.user.geoportaldataviewer.server.gis.FeatureParser; import org.gcube.portlets.user.geoportaldataviewer.server.gis.WMSUrlValidator; +import org.gcube.portlets.user.geoportaldataviewer.server.util.SessionUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaDataObject; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BoundsMap; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; @@ -123,15 +125,22 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme @Override public ConcessioneDV getConcessioneForId(Long id) throws Exception{ - LOG.info(""); + LOG.info("getConcessioneForId "+id+ "called"); + if(!SessionUtil.isIntoPortal()) { + LOG.warn("OUT OF PORTAL setting HARD-CODED SCOPE"); + String scope = "/gcube/devNext/NextNext"; + LOG.warn("SCOPE is: "+scope); + ScopeProvider.instance.set(scope); + } + if(id==null) throw new Exception("Invalid parameter. The Id is null"); try { - //saving into back-end + LOG.info("Trying to get record for id "+id); AbstractRecordManager abmRecord = ManagerFactory.getByRecordID(id); - + LOG.info("Got record for id "+id); Record record = abmRecord.getRecord(); Concessione concessione = null; if(record !=null && record instanceof Concessione) { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/util/SessionUtil.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/util/SessionUtil.java index 0d86b74..18a004b 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/util/SessionUtil.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/util/SessionUtil.java @@ -41,7 +41,7 @@ public class SessionUtil { UserLocalServiceUtil.getService(); return true; }catch (Exception ex) { - LOG.debug("Development Mode ON"); + LOG.warn("Development Mode ON"); return false; } }