added patch for #6171 (sobigdata). Added more tabs to the portlet to let user perform catalogue navigation more easily

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@139913 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2016-12-12 13:49:42 +00:00
parent ca4f796b72
commit a3c3dd2070
9 changed files with 185 additions and 61 deletions

View File

@ -9,18 +9,18 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMeta
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.NotifyLogoutEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.NotifyLogoutEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.NotifyLogoutEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.NotifyLogoutEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowGroupsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowGroupsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowManageProductWidgetEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowManageProductWidgetEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowManageProductWidgetEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowManageProductWidgetEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowOrganizationsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowOrganizationsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserDatasetsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserDatasetsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.ui.ManageProductWidget; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.ui.ManageProductWidget;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
@ -117,35 +117,48 @@ public class CkanEventHandlerManager {
// show datasets event // show datasets event
eventBus.addHandler( eventBus.addHandler(
ShowUserDatasetsEvent.TYPE, new ShowUserDatasetsEventHandler() { ShowDatasetsEvent.TYPE, new ShowDatasetsEventHandler() {
@Override @Override
public void onShowDatasets( public void onShowDatasets(
ShowUserDatasetsEvent showUserDatasetsEvent) { ShowDatasetsEvent showUserDatasetsEvent) {
String request = getCkanRequest("/dashboard/datasets", null); String request = null;
if(showUserDatasetsEvent.isOwnOnly())
request = getCkanRequest("/dashboard/datasets", null);
else
request = getCkanRequest("/dataset", null);
panel.instanceCkanFrame(request); panel.instanceCkanFrame(request);
} }
}); });
eventBus.addHandler( eventBus.addHandler(
ShowUserOrganizationsEvent.TYPE, ShowOrganizationsEvent.TYPE,
new ShowUserOrganizationsEventHandler() { new ShowOrganizationsEventHandler() {
@Override @Override
public void onShowOrganizations( public void onShowOrganizations(
ShowUserOrganizationsEvent showUserDatasetsEvent) { ShowOrganizationsEvent showUserDatasetsEvent) {
panel.showOrganizations();
if(showUserDatasetsEvent.isOwnOnly())
panel.showOrganizations();
else{
String request = getCkanRequest("/organization", null);
panel.instanceCkanFrame(request);
}
} }
}); });
eventBus.addHandler( eventBus.addHandler(
ShowUserGroupsEvent.TYPE, new ShowUserGroupsEventHandler() { ShowGroupsEvent.TYPE, new ShowGroupsEventHandler() {
@Override @Override
public void onShowGroups(ShowUserGroupsEvent showUserDatasetsEvent) { public void onShowGroups(ShowGroupsEvent showGroupsEvent) {
//String request = getCkanRequest("/dashboard/groups", null); //String request = getCkanRequest("/dashboard/groups", null);
//panel.instanceCkanFrame(request); //panel.instanceCkanFrame(request);
panel.showGroups(); if(showGroupsEvent.isOwnOnly())
panel.showGroups();
else{
String request = getCkanRequest("/group", null);
panel.instanceCkanFrame(request);
}
} }
}); });
@ -187,8 +200,8 @@ public class CkanEventHandlerManager {
@Override @Override
public void onShowManageProductWidget(ShowManageProductWidgetEvent event) { public void onShowManageProductWidget(ShowManageProductWidgetEvent event) {
new ManageProductWidget(event.getProductIdentifier()); new ManageProductWidget(event.getProductIdentifier());
} }
}); });

View File

@ -6,21 +6,30 @@ import com.google.gwt.event.shared.GwtEvent;
* Raised when the user wants to see his datasets. * Raised when the user wants to see his datasets.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/ */
public class ShowUserDatasetsEvent extends GwtEvent<ShowUserDatasetsEventHandler>{ public class ShowDatasetsEvent extends GwtEvent<ShowDatasetsEventHandler>{
public static Type<ShowUserDatasetsEventHandler> TYPE = new Type<ShowUserDatasetsEventHandler>(); public static Type<ShowDatasetsEventHandler> TYPE = new Type<ShowDatasetsEventHandler>();
private boolean ownOnly;
/** /**
* Instantiates a new show user datasets event. * Instantiates a new show user datasets event.
*/ */
public ShowUserDatasetsEvent() { public ShowDatasetsEvent(boolean ownOnly) {
this.ownOnly = ownOnly;
}
public boolean isOwnOnly() {
return ownOnly;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/ */
@Override @Override
public Type<ShowUserDatasetsEventHandler> getAssociatedType() { public Type<ShowDatasetsEventHandler> getAssociatedType() {
return TYPE; return TYPE;
} }
@ -28,7 +37,7 @@ public class ShowUserDatasetsEvent extends GwtEvent<ShowUserDatasetsEventHandler
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
*/ */
@Override @Override
protected void dispatch(ShowUserDatasetsEventHandler handler) { protected void dispatch(ShowDatasetsEventHandler handler) {
handler.onShowDatasets(this); handler.onShowDatasets(this);
} }

View File

@ -6,12 +6,12 @@ import com.google.gwt.event.shared.EventHandler;
* Event handler for the ShowUserDatasetsEvent * Event handler for the ShowUserDatasetsEvent
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/ */
public interface ShowUserDatasetsEventHandler extends EventHandler { public interface ShowDatasetsEventHandler extends EventHandler {
/** /**
* *
* @param showUserDatasetsEvent * @param showUserDatasetsEvent
*/ */
void onShowDatasets(ShowUserDatasetsEvent showUserDatasetsEvent); void onShowDatasets(ShowDatasetsEvent showUserDatasetsEvent);
} }

View File

@ -9,21 +9,28 @@ import com.google.gwt.event.shared.GwtEvent;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jun 23, 2016 * Jun 23, 2016
*/ */
public class ShowUserGroupsEvent extends GwtEvent<ShowUserGroupsEventHandler>{ public class ShowGroupsEvent extends GwtEvent<ShowGroupsEventHandler>{
public static Type<ShowUserGroupsEventHandler> TYPE = new Type<ShowUserGroupsEventHandler>(); public static Type<ShowGroupsEventHandler> TYPE = new Type<ShowGroupsEventHandler>();
private boolean ownOnly;
/** /**
* Instantiates a new show user organizations event. * Instantiates a new show user organizations event.
*/ */
public ShowUserGroupsEvent() { public ShowGroupsEvent(boolean ownOnly) {
this.ownOnly = ownOnly;
}
public boolean isOwnOnly() {
return ownOnly;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/ */
@Override @Override
public Type<ShowUserGroupsEventHandler> getAssociatedType() { public Type<ShowGroupsEventHandler> getAssociatedType() {
return TYPE; return TYPE;
} }
@ -31,7 +38,7 @@ public class ShowUserGroupsEvent extends GwtEvent<ShowUserGroupsEventHandler>{
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
*/ */
@Override @Override
protected void dispatch(ShowUserGroupsEventHandler handler) { protected void dispatch(ShowGroupsEventHandler handler) {
handler.onShowGroups(this); handler.onShowGroups(this);
} }

View File

@ -9,7 +9,7 @@ import com.google.gwt.event.shared.EventHandler;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jun 23, 2016 * Jun 23, 2016
*/ */
public interface ShowUserGroupsEventHandler extends EventHandler { public interface ShowGroupsEventHandler extends EventHandler {
/** /**
@ -17,6 +17,6 @@ public interface ShowUserGroupsEventHandler extends EventHandler {
* *
* @param showUserDatasetsEvent the show user datasets event * @param showUserDatasetsEvent the show user datasets event
*/ */
void onShowGroups(ShowUserGroupsEvent showUserDatasetsEvent); void onShowGroups(ShowGroupsEvent showUserDatasetsEvent);
} }

View File

@ -6,21 +6,27 @@ import com.google.gwt.event.shared.GwtEvent;
* Raised when the user wants to see his organizations. * Raised when the user wants to see his organizations.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/ */
public class ShowUserOrganizationsEvent extends GwtEvent<ShowUserOrganizationsEventHandler>{ public class ShowOrganizationsEvent extends GwtEvent<ShowOrganizationsEventHandler>{
public static Type<ShowUserOrganizationsEventHandler> TYPE = new Type<ShowUserOrganizationsEventHandler>(); public static Type<ShowOrganizationsEventHandler> TYPE = new Type<ShowOrganizationsEventHandler>();
private boolean ownOnly;
/** /**
* Instantiates a new show user organizations event. * Instantiates a new show user organizations event.
*/ */
public ShowUserOrganizationsEvent() { public ShowOrganizationsEvent(boolean ownOnly) {
this.ownOnly = ownOnly;
}
public boolean isOwnOnly() {
return ownOnly;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/ */
@Override @Override
public Type<ShowUserOrganizationsEventHandler> getAssociatedType() { public Type<ShowOrganizationsEventHandler> getAssociatedType() {
return TYPE; return TYPE;
} }
@ -28,7 +34,7 @@ public class ShowUserOrganizationsEvent extends GwtEvent<ShowUserOrganizationsEv
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
*/ */
@Override @Override
protected void dispatch(ShowUserOrganizationsEventHandler handler) { protected void dispatch(ShowOrganizationsEventHandler handler) {
handler.onShowOrganizations(this); handler.onShowOrganizations(this);
} }

View File

@ -6,12 +6,12 @@ import com.google.gwt.event.shared.EventHandler;
* Event handler for the ShowUserOrganizationsEvent * Event handler for the ShowUserOrganizationsEvent
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/ */
public interface ShowUserOrganizationsEventHandler extends EventHandler { public interface ShowOrganizationsEventHandler extends EventHandler {
/** /**
* *
* @param showUserDatasetsEvent * @param showUserDatasetsEvent
*/ */
void onShowOrganizations(ShowUserOrganizationsEvent showUserDatasetsEvent); void onShowOrganizations(ShowOrganizationsEvent showUserDatasetsEvent);
} }

View File

@ -5,12 +5,12 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowGroupsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowManageProductWidgetEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowManageProductWidgetEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowOrganizationsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserDatasetsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEvent;
import com.github.gwtbootstrap.client.ui.AlertBlock; import com.github.gwtbootstrap.client.ui.AlertBlock;
import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.Button;
@ -23,6 +23,7 @@ import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.InlineHTML;
/** /**
@ -35,13 +36,25 @@ import com.google.gwt.user.client.ui.FlowPanel;
public class CkanMetadataManagementPanel extends FlowPanel{ public class CkanMetadataManagementPanel extends FlowPanel{
private AlertBlock nav = new AlertBlock(); private AlertBlock nav = new AlertBlock();
// generic
private Button home = new Button("Home"); private Button home = new Button("Home");
private Button insertMeta = new Button("Publish Product"); private Button organizations = new Button("Organizations");
private Button editMeta = new Button("Edit Product"); private Button groups = new Button("Groups");
private Button products = new Button("Products");
// user's own
private InlineHTML separatorAdminButtons = null;
private Button myDatasets = new Button("My Products"); private Button myDatasets = new Button("My Products");
private Button myOrganizations = new Button("My Organizations"); private Button myOrganizations = new Button("My Organizations");
private Button myGroups = new Button("My Groups"); private Button myGroups = new Button("My Groups");
// statistics
private Button statistics = new Button("Statistics"); private Button statistics = new Button("Statistics");
// other stuff
private Button insertMeta = new Button("Publish Product");
private Button editMeta = new Button("Edit Product");
private Button manageProduct = new Button("Manage Product"); private Button manageProduct = new Button("Manage Product");
private HandlerManager eventBus; private HandlerManager eventBus;
@ -56,17 +69,26 @@ public class CkanMetadataManagementPanel extends FlowPanel{
// set link style buttons // set link style buttons
home.setType(ButtonType.LINK); home.setType(ButtonType.LINK);
organizations.setType(ButtonType.LINK);
groups.setType(ButtonType.LINK);
products.setType(ButtonType.LINK);
myDatasets.setType(ButtonType.LINK); myDatasets.setType(ButtonType.LINK);
myOrganizations.setType(ButtonType.LINK); myOrganizations.setType(ButtonType.LINK);
myGroups.setType(ButtonType.LINK); myGroups.setType(ButtonType.LINK);
statistics.setType(ButtonType.LINK);
insertMeta.setType(ButtonType.LINK); insertMeta.setType(ButtonType.LINK);
editMeta.setType(ButtonType.LINK); editMeta.setType(ButtonType.LINK);
statistics.setType(ButtonType.LINK);
manageProduct.setType(ButtonType.LINK); manageProduct.setType(ButtonType.LINK);
manageProduct.getElement().getStyle().setFloat(Float.RIGHT); manageProduct.getElement().getStyle().setFloat(Float.RIGHT);
// set icons // set icons
home.setIcon(IconType.HOME); home.setIcon(IconType.HOME);
organizations.setIcon(IconType.BUILDING);
groups.setIcon(IconType.GROUP);
products.setIcon(IconType.SITEMAP);
myDatasets.setIcon(IconType.SITEMAP); myDatasets.setIcon(IconType.SITEMAP);
myOrganizations.setIcon(IconType.BUILDING); myOrganizations.setIcon(IconType.BUILDING);
myGroups.setIcon(IconType.GROUP); myGroups.setIcon(IconType.GROUP);
@ -74,7 +96,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
editMeta.setIcon(IconType.EDIT_SIGN); editMeta.setIcon(IconType.EDIT_SIGN);
statistics.setIcon(IconType.BAR_CHART); statistics.setIcon(IconType.BAR_CHART);
manageProduct.setIcon(IconType.CHECK_SIGN); manageProduct.setIcon(IconType.CHECK_SIGN);
// hide edit and insert // hide edit and insert
editMeta.setVisible(false); editMeta.setVisible(false);
insertMeta.setVisible(false); insertMeta.setVisible(false);
@ -83,10 +105,17 @@ public class CkanMetadataManagementPanel extends FlowPanel{
// add to navigation bar // add to navigation bar
nav.add(home); nav.add(home);
nav.add(organizations);
nav.add(groups);
nav.add(products);
nav.add(statistics);
nav.add(new InlineHTML("<span style=\"font-weight:bold;vertical-alignment:middle;\">|</span>"));
nav.add(myDatasets); nav.add(myDatasets);
nav.add(myOrganizations); nav.add(myOrganizations);
nav.add(myGroups); nav.add(myGroups);
nav.add(statistics); separatorAdminButtons = new InlineHTML("<span style=\"font-weight:bold;vertical-alignment:middle;\">|</span>");
separatorAdminButtons.setVisible(false);
nav.add(separatorAdminButtons);
nav.add(insertMeta); nav.add(insertMeta);
nav.add(editMeta); nav.add(editMeta);
nav.add(manageProduct); nav.add(manageProduct);
@ -101,7 +130,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
/** /**
* *
*/ */
private void addHandlers() { private void addHandlers() {
home.addClickHandler(new ClickHandler() { home.addClickHandler(new ClickHandler() {
@ -113,6 +142,36 @@ public class CkanMetadataManagementPanel extends FlowPanel{
} }
}); });
organizations.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowOrganizationsEvent(false));
}
});
groups.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowGroupsEvent(false));
}
});
products.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowDatasetsEvent(false));
}
});
insertMeta.addClickHandler(new ClickHandler() { insertMeta.addClickHandler(new ClickHandler() {
@Override @Override
@ -136,7 +195,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
@Override @Override
public void onClick(ClickEvent event) { public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserDatasetsEvent()); eventBus.fireEvent(new ShowDatasetsEvent(true));
} }
}); });
@ -146,7 +205,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
@Override @Override
public void onClick(ClickEvent event) { public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserOrganizationsEvent()); eventBus.fireEvent(new ShowOrganizationsEvent(true));
} }
}); });
@ -157,7 +216,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
@Override @Override
public void onClick(ClickEvent event) { public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserGroupsEvent()); eventBus.fireEvent(new ShowGroupsEvent(true));
} }
}); });
@ -199,6 +258,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
public void showInsertAndEditProductButtons(boolean show){ public void showInsertAndEditProductButtons(boolean show){
//editMeta.setVisible(show); TODO //editMeta.setVisible(show); TODO
separatorAdminButtons.setVisible(show);
insertMeta.setVisible(show); insertMeta.setVisible(show);
} }
@ -211,14 +271,14 @@ public class CkanMetadataManagementPanel extends FlowPanel{
public void showManageProductButton(boolean value){ public void showManageProductButton(boolean value){
manageProduct.setVisible(value); manageProduct.setVisible(value);
} }
/** /**
* Enable or disable the manage product button * Enable or disable the manage product button
*/ */
public void enableManageProductButton(boolean value){ public void enableManageProductButton(boolean value){
manageProduct.setEnabled(value); manageProduct.setEnabled(value);
} }
/** /**
* Show only home/statistics buttons * Show only home/statistics buttons
*/ */

View File

@ -38,6 +38,7 @@ import eu.trentorise.opendata.jackan.model.CkanOrganization;
public class UserUtil { public class UserUtil {
private static Logger logger = LoggerFactory.getLogger(UserUtil.class); private static Logger logger = LoggerFactory.getLogger(UserUtil.class);
private static final String SOBIGDATA_VO_CONTEXT = "/d4science.research-infrastructures.eu/SoBigData";
/** /**
* Gets the list vre for user. * Gets the list vre for user.
@ -59,16 +60,24 @@ public class UserUtil {
List<GCubeGroup> listOfGroups = groupManager.listGroupsByUser(user.getUserId()); List<GCubeGroup> listOfGroups = groupManager.listGroupsByUser(user.getUserId());
logger.info("List of VREs for "+userEMail+ " is/are: "+listOfGroups.size()); logger.info("List of VREs for "+userEMail+ " is/are: "+listOfGroups.size());
List<String> vreNames = new ArrayList<String>(listOfGroups.size()); List<String> vreNames = new ArrayList<String>(listOfGroups.size());
boolean containsSoBigDataVRE = false;
for (GCubeGroup gCubeGroup : listOfGroups) { for (GCubeGroup gCubeGroup : listOfGroups) {
// TODO: why only the VRES??...however check for the production root vo
// if(gCubeGroup.getGroupName().equals(CKanUtilsImpl.PRODUCTION_LIFERAY_ORGNAME_ROOT))
// vreNames.add(CKanUtilsImpl.PRODUCTION_CKAN_ORGNAME_ROOT);
//if(groupManager.isVRE(gCubeGroup.getGroupId())) //Is it a VRE?
// else
vreNames.add(gCubeGroup.getGroupName()); vreNames.add(gCubeGroup.getGroupName());
// in case of sobigdata vres (under the SoBigData VO) we need to let users access all the sobigdata organizations in ckan
// The VO scope is "/d4science.research-infrastructures.eu/SoBigData"
// This code will work only if all the sobigdata organizations are on the same ckan, of course
if(!containsSoBigDataVRE)
if(gCubeGroup.getParentGroupId() != -1 && SOBIGDATA_VO_CONTEXT.equals(groupManager.getInfrastructureScope(gCubeGroup.getParentGroupId())))
containsSoBigDataVRE = true;
} }
// check if we need to add also sobigdata vres
if(containsSoBigDataVRE)
addSoBigDataVREs(groupManager, vreNames);
logger.debug("Returning VRE names: "+vreNames); logger.debug("Returning VRE names: "+vreNames);
return vreNames; return vreNames;
}catch (UserManagementSystemException | UserRetrievalFault | GroupRetrievalFault e) { }catch (UserManagementSystemException | UserRetrievalFault | GroupRetrievalFault e) {
@ -77,6 +86,26 @@ public class UserUtil {
} }
} }
/**
* Fetch (if needed) the groups' names of the vres under sobigdata
* @param groupManager
* @param vreNames
*/
private static void addSoBigDataVREs(GroupManager groupManager, List<String> vreNames){
try{
// fetch all sobigdata contexts
GCubeGroup sobigdataVO = groupManager.getGroup(groupManager.getGroupIdFromInfrastructureScope(SOBIGDATA_VO_CONTEXT));
List<GCubeGroup> children = sobigdataVO.getChildren();
for (GCubeGroup gcubeSobigDataChild : children) {
vreNames.add(gcubeSobigDataChild.getGroupName());
}
}catch(Exception e){
logger.error("Unable to retrieve SoBigData vres", e);
}
}
/** /**
* Retrieve the highest ckan role the user has and also retrieve the list of organizations (scopes) in which the user has the ckan-admin or ckan-editor role * Retrieve the highest ckan role the user has and also retrieve the list of organizations (scopes) in which the user has the ckan-admin or ckan-editor role
* @param currentScope the current scope * @param currentScope the current scope