diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 5fe3680..f7f80be 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -4,6 +4,9 @@
+
+ uses
+
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java
index 1227476..cf27481 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java
@@ -138,18 +138,18 @@ public class CkanEventHandlerManager {
panel.instanceCkanFrame(request);
}
});
-
+
eventBus.addHandler(ShowTypesEvent.TYPE,
new ShowTypesEventHandler() {
-
+
@Override
public void onShowTypes(ShowTypesEvent showTypes) {
String request = getCkanRequest("/type", null);
panel.instanceCkanFrame(request);
-
+
}
});
-
+
eventBus.addHandler(
ShowOrganizationsEvent.TYPE,
new ShowOrganizationsEventHandler() {
@@ -193,26 +193,26 @@ public class CkanEventHandlerManager {
}
});
- eventBus.addHandler(NotifyLogoutEvent.TYPE, new NotifyLogoutEventHandler() {
-
- @Override
- public void onLogout(NotifyLogoutEvent editMetadataEvent) {
-
- // CKanLeaveFrame frame = new CKanLeaveFrame(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
- // DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
- }
- });
-
- eventBus.addHandler(IFrameInstanciedEvent.TYPE, new IFrameInstanciedEventHandler() {
-
- @Override
- public void onNewInstance(IFrameInstanciedEvent iFrameInstanciedEvent) {
-
- panel.updateSize();
- if(logoutFromCKANURL==null)
- instanceLogoutSystem();
- }
- });
+ // eventBus.addHandler(NotifyLogoutEvent.TYPE, new NotifyLogoutEventHandler() {
+ //
+ // @Override
+ // public void onLogout(NotifyLogoutEvent editMetadataEvent) {
+ //
+ // // CKanLeaveFrame frame = new CKanLeaveFrame(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
+ // // DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
+ // }
+ // });
+ //
+ // eventBus.addHandler(IFrameInstanciedEvent.TYPE, new IFrameInstanciedEventHandler() {
+ //
+ // @Override
+ // public void onNewInstance(IFrameInstanciedEvent iFrameInstanciedEvent) {
+ //
+ // panel.updateSize();
+ // if(logoutFromCKANURL==null)
+ // instanceLogoutSystem();
+ // }
+ // });
eventBus.addHandler(ShowManageProductWidgetEvent.TYPE, new ShowManageProductWidgetEventHandler() {
@@ -221,25 +221,25 @@ public class CkanEventHandlerManager {
new ManageProductWidget(event.getProductIdentifier(), eventBus);
}
});
-
+
eventBus.addHandler(ShareLinkEvent.TYPE, new ShareLinkEventHandler() {
-
+
@Override
public void onShareLink(ShareLinkEvent event) {
-
+
new ShareCatalogueWidget(event.getUuidItem());
-
+
}
});
-
+
// hide management panel if user is not allowed to manage
eventBus.addHandler(HideManagementPanelEvent.TYPE, new HideManagementPanelEventHandler() {
-
+
@Override
public void onEvent(HideManagementPanelEvent hideEvent) {
-
+
panel.showManagementPanel(false);
-
+
}
});
}
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
index 24cdbad..dcbd2ca 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
@@ -2,6 +2,8 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.server;
import static org.gcube.common.authorization.client.Constants.authorizationService;
+import java.net.URL;
+import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -49,6 +51,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
public static String CKANCONNECTORCONTEXT = "CkanConnectorContext";
public static String CKANCONNECTORLOGOUT = "CkanConnectorLogout";
private static final Log logger = LogFactoryUtil.getLog(GcubeCkanDataCatalogServiceImpl.class);
+ private static final String VIEW_PER_ORGANIZATION_LIFERAY_CUSTOM_FIELD = "ViewPerVRECatalogue";
/**
* Instanciate the ckan util library.
@@ -88,7 +91,17 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
queryStringParameters = new String(valueDecoded);
logger.info("queryStringParameters detected like Base64 and decoded like: "+queryStringParameters);
}
+
+ if(pathInfoParameter == null || pathInfoParameter.isEmpty()){
+ boolean viewEnabled = viewPerOrganizationEnabled();
+ if(viewEnabled){
+ GroupManager gm = new LiferayGroupManager();
+ String groupName = gm.getGroup(gm.getGroupIdFromInfrastructureScope(scopePerCurrentUrl)).getGroupName().toLowerCase();
+ pathInfoParameter = "/organization_vre/" + groupName;
+ }
+ }
+
CkanConnectorAccessPoint ckAP = getCkanConnectorAccessPoint(pathInfoParameter, queryStringParameters, scopePerCurrentUrl);
SessionUtil.saveCkanAccessPoint(this.getThreadLocalRequest().getSession(), scopePerCurrentUrl, ckAP);
logger.info("Builded URI to CKAN Connector: "+ckAP.buildURI());
@@ -537,4 +550,26 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
}
}
}
+
+ /**
+ * Ask to liferay
+ * @return
+ */
+ public boolean viewPerOrganizationEnabled(){
+
+ boolean enabled = false;
+ String scopePerCurrentUrl = SessionUtil.getScopeFromClientUrl(getThreadLocalRequest());
+
+
+ try{
+ GroupManager gm = new LiferayGroupManager();
+ enabled = (boolean) gm.readCustomAttr(gm.getGroupIdFromInfrastructureScope(scopePerCurrentUrl), VIEW_PER_ORGANIZATION_LIFERAY_CUSTOM_FIELD);
+ logger.debug("Read value for " + VIEW_PER_ORGANIZATION_LIFERAY_CUSTOM_FIELD + " is " + enabled);
+ }catch(Exception e){
+ logger.error("Failed to parse custom field value", e);
+ }
+ return enabled;
+
+ }
+
}