3751: Create Ckan Data Catalogue Portlet

Task-Url: https://support.d4science.org/issues/3751

Added My Groups Link

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@129390 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2016-06-23 16:30:01 +00:00
parent 7fe5e298b8
commit 5405ca56c1
7 changed files with 147 additions and 176 deletions

View File

@ -15,6 +15,8 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatis
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.view.GCubeCkanDataCatalogPanel;
@ -59,8 +61,10 @@ public class CkanEventHandlerManager {
@Override
public void onShowHome(ShowHomeEvent showHomeEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector());
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo();
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
}
});
@ -114,42 +118,10 @@ public class CkanEventHandlerManager {
@Override
public void onShowDatasets(
ShowUserDatasetsEvent showUserDatasetsEvent) {
// // get the current path
// String currentPath = Window.Location.getHref();
//
// // check if the "path" parameter is already present
// String currentParameter =
// Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
//
// // the final path must be
// String queryPar = "?" +
// GCubeCkanDataCatalog.GET_PATH_PARAMETER + "=" +
// "/dashboard/datasets";
//
// String finalPath;
//
// if(currentParameter == null){
// finalPath = currentPath + queryPar;
//
// }else{
//
// // remove from the first "path" on
// int index =
// currentPath.lastIndexOf("?"+GCubeCkanDataCatalog.GET_PATH_PARAMETER);
// String firstPartOfThePath = currentPath.substring(0,
// index);
// finalPath = firstPartOfThePath + queryPar;
//
// }
//
// // redirect
// Window.Location.assign(finalPath);
// redirect
// String baseUrlCkanConnector = panel.getBaseURLCKANConnector();
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector());
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/dashboard/datasets");
String newPath = panel.getPathInfo() + "/dashboard/datasets";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
}
});
@ -160,38 +132,27 @@ public class CkanEventHandlerManager {
@Override
public void onShowOrganizations(
ShowUserOrganizationsEvent showUserDatasetsEvent) {
// get the current path
/*String currentPath = Window.Location.getHref();
// check if the "path" parameter is already present
String currentParameter =
Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
// the final path must be
String queryPar =
"?" + GCubeCkanDataCatalog.GET_PATH_PARAMETER + "=" +
"/dashboard/organizations";
String finalPath;
if (currentParameter == null) {
finalPath = currentPath + queryPar;
}
else {
// remove from the first "path" on
int index =
currentPath.lastIndexOf("?" +
GCubeCkanDataCatalog.GET_PATH_PARAMETER);
String firstPartOfThePath =
currentPath.substring(0, index);
finalPath = firstPartOfThePath + queryPar;
}
Window.Location.assign(finalPath);
*/
// redirect
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector());
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/dashboard/organizations");
String newPath = panel.getPathInfo() + "/dashboard/organizations";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
}
});
eventBus.addHandler(
ShowUserGroupsEvent.TYPE, new ShowUserGroupsEventHandler() {
@Override
public void onShowGroups(ShowUserGroupsEvent showUserDatasetsEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo() + "/dashboard/groups";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
}
});
// show statistics event
eventBus.addHandler(
ShowStatisticsEvent.TYPE, new ShowStatisticsEventHandler() {
@ -199,35 +160,10 @@ public class CkanEventHandlerManager {
@Override
public void onShowStatistics(
ShowStatisticsEvent showStatisticsEvent) {
// get the current path
/*String currentPath = Window.Location.getHref();
// check if the "path" parameter is already present
String currentParameter =
Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
// the final path must be
String queryPar =
"?" + GCubeCkanDataCatalog.GET_PATH_PARAMETER + "=" +
"/stats";
String finalPath;
if (currentParameter == null) {
finalPath = currentPath + queryPar;
}
else {
// remove from the first "path" on
int index =
currentPath.lastIndexOf("?" +
GCubeCkanDataCatalog.GET_PATH_PARAMETER);
String firstPartOfThePath =
currentPath.substring(0, index);
finalPath = firstPartOfThePath + queryPar;
}
// redirect
Window.Location.assign(finalPath);*/
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/stats");
String newPath = panel.getPathInfo() + "/stats";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
}
});

View File

@ -30,20 +30,6 @@ public class GCubeCkanDataCatalog implements EntryPoint {
* This is the entry point method.
*/
public void onModuleLoad() {
// if (BrowserCloseDetector.get().wasClosed()) {
// GWT.log("Browser was closed.");
// }
// else {
// GWT.log("Refreshing or returning from another page.");
// }
// Window.addCloseHandler(new CloseHandler<Window>() {
//
// public void onClose(CloseEvent<Window> windowCloseEvent) {
//
// Window.alert("I'm closing");
// }
// });
Window.addWindowClosingHandler(new Window.ClosingHandler() {

View File

@ -0,0 +1,38 @@
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event;
import com.google.gwt.event.shared.GwtEvent;
/**
* The Class ShowUserGroupsEvent.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jun 23, 2016
*/
public class ShowUserGroupsEvent extends GwtEvent<ShowUserGroupsEventHandler>{
public static Type<ShowUserGroupsEventHandler> TYPE = new Type<ShowUserGroupsEventHandler>();
/**
* Instantiates a new show user organizations event.
*/
public ShowUserGroupsEvent() {
}
/* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/
@Override
public Type<ShowUserGroupsEventHandler> getAssociatedType() {
return TYPE;
}
/* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
*/
@Override
protected void dispatch(ShowUserGroupsEventHandler handler) {
handler.onShowGroups(this);
}
}

View File

@ -0,0 +1,22 @@
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event;
import com.google.gwt.event.shared.EventHandler;
/**
* The Interface ShowUserGroupsEventHandler.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jun 23, 2016
*/
public interface ShowUserGroupsEventHandler extends EventHandler {
/**
* On show groups.
*
* @param showUserDatasetsEvent the show user datasets event
*/
void onShowGroups(ShowUserGroupsEvent showUserDatasetsEvent);
}

View File

@ -1,40 +0,0 @@
/**
*
*/
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.utility;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jun 23, 2016
*/
import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.Window;
public class BrowserCloseDetector {
private static final String COOKIE = "ckan-browser-detector-closed";
private static BrowserCloseDetector instance;
private BrowserCloseDetector() {
Window.addWindowClosingHandler(new Window.ClosingHandler() {
public void onWindowClosing(Window.ClosingEvent closingEvent) {
Cookies.setCookie(COOKIE, "");
}
});
}
public static BrowserCloseDetector get() {
return instance == null
? instance = new BrowserCloseDetector() : instance;
}
public boolean wasClosed() {
return Cookies.getCookie(COOKIE) == null;
}
}

View File

@ -8,6 +8,7 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMeta
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEvent;
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;
@ -37,6 +38,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
private Button editMeta = new Button("Edit Product");
private Button myDatasets = new Button("My Products");
private Button myOrganizations = new Button("My Organizations");
private Button myGroups = new Button("My Groups");
private Button statistics = new Button("Statistics");
private HandlerManager eventBus;
@ -53,6 +55,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
home.setType(ButtonType.LINK);
myDatasets.setType(ButtonType.LINK);
myOrganizations.setType(ButtonType.LINK);
myGroups.setType(ButtonType.LINK);
insertMeta.setType(ButtonType.LINK);
editMeta.setType(ButtonType.LINK);
statistics.setType(ButtonType.LINK);
@ -61,18 +64,20 @@ public class CkanMetadataManagementPanel extends FlowPanel{
home.setIcon(IconType.HOME);
myDatasets.setIcon(IconType.SITEMAP);
myOrganizations.setIcon(IconType.BUILDING);
myGroups.setIcon(IconType.GROUP);
insertMeta.setIcon(IconType.FILE);
editMeta.setIcon(IconType.EDIT_SIGN);
statistics.setIcon(IconType.BAR_CHART);
// hide edit and insert
editMeta.setVisible(false);
editMeta.setVisible(false);
insertMeta.setVisible(false);
// add to navigation bar
nav.add(home);
nav.add(myDatasets);
nav.add(myOrganizations);
nav.add(myGroups);
nav.add(statistics);
nav.add(insertMeta);
nav.add(editMeta);
@ -88,14 +93,14 @@ public class CkanMetadataManagementPanel extends FlowPanel{
*
*/
private void addHandlers() {
home.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowHomeEvent());
}
});
@ -116,34 +121,45 @@ public class CkanMetadataManagementPanel extends FlowPanel{
eventBus.fireEvent(new EditMetadataEvent());
}
});
myDatasets.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserDatasetsEvent());
}
});
myOrganizations.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserOrganizationsEvent());
}
});
statistics.addClickHandler(new ClickHandler() {
myGroups.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserGroupsEvent());
}
});
statistics.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowStatisticsEvent());
}
});
@ -157,15 +173,15 @@ public class CkanMetadataManagementPanel extends FlowPanel{
public int getCurrentHeight(){
return this.getOffsetHeight();
}
/**
* Those buttons can be only visible when the logged user has role editr/admin/sysadmin
* @param show
*/
public void showInsertAndEditProductButtons(boolean show){
editMeta.setVisible(show);
insertMeta.setVisible(show);
}
}

View File

@ -35,8 +35,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
private Image loading = new Image(CkanPortletResources.ICONS.loading());
private RootPanel rootPanel;
private HandlerManager eventBus;
private String baseURLCKANConnector;
private String gCubeTokeValue;
private CkanConnectorAccessPoint ckanAccessPoint;
/**
* Instantiates a new g cube ckan data catalog panel.
@ -57,9 +56,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
@Override
public void onSuccess(CkanConnectorAccessPoint ckan) {
// GWT.log("Instancing CKAN iframe with url: "+uriToCkan);
baseURLCKANConnector = ckan.getBaseUrl();
gCubeTokeValue = ckan.getGcubeTokenValue();
ckanAccessPoint = ckan;
instanceCkanFrame(ckan.buildURI());
GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading);
}
@ -189,17 +186,24 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
GWT.log("New iFrame size w: "+rootWidth + " h: "+rootHeight);
this.setSize(rootWidth+"px",rootHeight+"px");
int height = rootHeight - getTopPanelHeight();
if(ckanFramePanel.getFrame()!=null)
// if(height<2000)
// height = 2000;
if(ckanFramePanel.getFrame()!=null){
ckanFramePanel.getFrame().setSize(rootWidth+"px", height+"px");
int newH = managementPanel!=null && managementPanel.getCurrentHeight()>0?managementPanel.getOffsetHeight()+height:height;
// managementPanel.setHeight(height+50+"px");
this.setHeight(newH+"px");
}
}
/**
* Gets the base urlckan connector.
*
* @return the baseURLCKANConnector
* @return the base urlckan connector
*/
public String getBaseURLCKANConnector() {
return baseURLCKANConnector;
return ckanAccessPoint.getBaseUrl();
}
@ -209,7 +213,16 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
* @return the gcube token value to ckan connector
*/
public String getGcubeTokenValueToCKANConnector() {
return gCubeTokeValue;
return ckanAccessPoint.getGcubeTokenValue();
}
/**
* Gets the path info.
*
* @return the path info
*/
public String getPathInfo() {
return ckanAccessPoint.getPathInfoParameter();
}
}