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.ShowStatisticsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserDatasetsEvent; 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.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.ShowUserOrganizationsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel;
@ -59,8 +61,10 @@ public class CkanEventHandlerManager {
@Override @Override
public void onShowHome(ShowHomeEvent showHomeEvent) { public void onShowHome(ShowHomeEvent showHomeEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector()); CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo();
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI()); panel.instanceCkanFrame(ckan.buildURI());
} }
}); });
@ -114,42 +118,10 @@ public class CkanEventHandlerManager {
@Override @Override
public void onShowDatasets( public void onShowDatasets(
ShowUserDatasetsEvent showUserDatasetsEvent) { ShowUserDatasetsEvent showUserDatasetsEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
// // 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());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/dashboard/datasets"); String newPath = panel.getPathInfo() + "/dashboard/datasets";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI()); panel.instanceCkanFrame(ckan.buildURI());
} }
}); });
@ -160,38 +132,27 @@ public class CkanEventHandlerManager {
@Override @Override
public void onShowOrganizations( public void onShowOrganizations(
ShowUserOrganizationsEvent showUserDatasetsEvent) { ShowUserOrganizationsEvent showUserDatasetsEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
// 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());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/dashboard/organizations"); String newPath = panel.getPathInfo() + "/dashboard/organizations";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI()); 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 // show statistics event
eventBus.addHandler( eventBus.addHandler(
ShowStatisticsEvent.TYPE, new ShowStatisticsEventHandler() { ShowStatisticsEvent.TYPE, new ShowStatisticsEventHandler() {
@ -199,35 +160,10 @@ public class CkanEventHandlerManager {
@Override @Override
public void onShowStatistics( public void onShowStatistics(
ShowStatisticsEvent showStatisticsEvent) { 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()); CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/stats"); String newPath = panel.getPathInfo() + "/stats";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI()); panel.instanceCkanFrame(ckan.buildURI());
} }
}); });

View File

@ -30,20 +30,6 @@ public class GCubeCkanDataCatalog implements EntryPoint {
* This is the entry point method. * This is the entry point method.
*/ */
public void onModuleLoad() { 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() { 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.ShowHomeEvent;
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.ShowUserDatasetsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEvent;
import com.github.gwtbootstrap.client.ui.AlertBlock; 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 editMeta = new Button("Edit Product");
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 statistics = new Button("Statistics"); private Button statistics = new Button("Statistics");
private HandlerManager eventBus; private HandlerManager eventBus;
@ -53,6 +55,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
home.setType(ButtonType.LINK); home.setType(ButtonType.LINK);
myDatasets.setType(ButtonType.LINK); myDatasets.setType(ButtonType.LINK);
myOrganizations.setType(ButtonType.LINK); myOrganizations.setType(ButtonType.LINK);
myGroups.setType(ButtonType.LINK);
insertMeta.setType(ButtonType.LINK); insertMeta.setType(ButtonType.LINK);
editMeta.setType(ButtonType.LINK); editMeta.setType(ButtonType.LINK);
statistics.setType(ButtonType.LINK); statistics.setType(ButtonType.LINK);
@ -61,18 +64,20 @@ public class CkanMetadataManagementPanel extends FlowPanel{
home.setIcon(IconType.HOME); home.setIcon(IconType.HOME);
myDatasets.setIcon(IconType.SITEMAP); myDatasets.setIcon(IconType.SITEMAP);
myOrganizations.setIcon(IconType.BUILDING); myOrganizations.setIcon(IconType.BUILDING);
myGroups.setIcon(IconType.GROUP);
insertMeta.setIcon(IconType.FILE); insertMeta.setIcon(IconType.FILE);
editMeta.setIcon(IconType.EDIT_SIGN); editMeta.setIcon(IconType.EDIT_SIGN);
statistics.setIcon(IconType.BAR_CHART); statistics.setIcon(IconType.BAR_CHART);
// hide edit and insert // hide edit and insert
editMeta.setVisible(false); editMeta.setVisible(false);
insertMeta.setVisible(false); insertMeta.setVisible(false);
// add to navigation bar // add to navigation bar
nav.add(home); nav.add(home);
nav.add(myDatasets); nav.add(myDatasets);
nav.add(myOrganizations); nav.add(myOrganizations);
nav.add(myGroups);
nav.add(statistics); nav.add(statistics);
nav.add(insertMeta); nav.add(insertMeta);
nav.add(editMeta); nav.add(editMeta);
@ -88,14 +93,14 @@ public class CkanMetadataManagementPanel extends FlowPanel{
* *
*/ */
private void addHandlers() { private void addHandlers() {
home.addClickHandler(new ClickHandler() { home.addClickHandler(new ClickHandler() {
@Override @Override
public void onClick(ClickEvent event) { public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowHomeEvent()); eventBus.fireEvent(new ShowHomeEvent());
} }
}); });
@ -116,34 +121,45 @@ public class CkanMetadataManagementPanel extends FlowPanel{
eventBus.fireEvent(new EditMetadataEvent()); eventBus.fireEvent(new EditMetadataEvent());
} }
}); });
myDatasets.addClickHandler(new ClickHandler() { myDatasets.addClickHandler(new ClickHandler() {
@Override @Override
public void onClick(ClickEvent event) { public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserDatasetsEvent()); eventBus.fireEvent(new ShowUserDatasetsEvent());
} }
}); });
myOrganizations.addClickHandler(new ClickHandler() { myOrganizations.addClickHandler(new ClickHandler() {
@Override @Override
public void onClick(ClickEvent event) { public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserOrganizationsEvent()); eventBus.fireEvent(new ShowUserOrganizationsEvent());
} }
}); });
statistics.addClickHandler(new ClickHandler() {
myGroups.addClickHandler(new ClickHandler() {
@Override @Override
public void onClick(ClickEvent event) { public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowUserGroupsEvent());
}
});
statistics.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new ShowStatisticsEvent()); eventBus.fireEvent(new ShowStatisticsEvent());
} }
}); });
@ -157,15 +173,15 @@ public class CkanMetadataManagementPanel extends FlowPanel{
public int getCurrentHeight(){ public int getCurrentHeight(){
return this.getOffsetHeight(); return this.getOffsetHeight();
} }
/** /**
* Those buttons can be only visible when the logged user has role editr/admin/sysadmin * Those buttons can be only visible when the logged user has role editr/admin/sysadmin
* @param show * @param show
*/ */
public void showInsertAndEditProductButtons(boolean show){ public void showInsertAndEditProductButtons(boolean show){
editMeta.setVisible(show); editMeta.setVisible(show);
insertMeta.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 Image loading = new Image(CkanPortletResources.ICONS.loading());
private RootPanel rootPanel; private RootPanel rootPanel;
private HandlerManager eventBus; private HandlerManager eventBus;
private String baseURLCKANConnector; private CkanConnectorAccessPoint ckanAccessPoint;
private String gCubeTokeValue;
/** /**
* Instantiates a new g cube ckan data catalog panel. * Instantiates a new g cube ckan data catalog panel.
@ -57,9 +56,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
@Override @Override
public void onSuccess(CkanConnectorAccessPoint ckan) { public void onSuccess(CkanConnectorAccessPoint ckan) {
// GWT.log("Instancing CKAN iframe with url: "+uriToCkan); ckanAccessPoint = ckan;
baseURLCKANConnector = ckan.getBaseUrl();
gCubeTokeValue = ckan.getGcubeTokenValue();
instanceCkanFrame(ckan.buildURI()); instanceCkanFrame(ckan.buildURI());
GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading); GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading);
} }
@ -189,17 +186,24 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
GWT.log("New iFrame size w: "+rootWidth + " h: "+rootHeight); GWT.log("New iFrame size w: "+rootWidth + " h: "+rootHeight);
this.setSize(rootWidth+"px",rootHeight+"px"); this.setSize(rootWidth+"px",rootHeight+"px");
int height = rootHeight - getTopPanelHeight(); int height = rootHeight - getTopPanelHeight();
if(ckanFramePanel.getFrame()!=null) // if(height<2000)
// height = 2000;
if(ckanFramePanel.getFrame()!=null){
ckanFramePanel.getFrame().setSize(rootWidth+"px", height+"px"); 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. * Gets the base urlckan connector.
* *
* @return the baseURLCKANConnector * @return the base urlckan connector
*/ */
public String getBaseURLCKANConnector() { 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 * @return the gcube token value to ckan connector
*/ */
public String getGcubeTokenValueToCKANConnector() { public String getGcubeTokenValueToCKANConnector() {
return gCubeTokeValue; return ckanAccessPoint.getGcubeTokenValue();
}
/**
* Gets the path info.
*
* @return the path info
*/
public String getPathInfo() {
return ckanAccessPoint.getPathInfoParameter();
} }
} }