gcube-ckan-datacatalog/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java

277 lines
8.9 KiB
Java

package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.IFrameInstanciedEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.IFrameInstanciedEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent;
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.NotifyLogoutEventHandler;
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.ShowStatisticsEvent;
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.ShowUserOrganizationsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.CreateDatasetForm;
import com.github.gwtbootstrap.client.ui.Modal;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @author Costantino Perciante costantino.perciante@isti.cnr.it Jun 10, 2016
*/
public class CkanEventHandlerManager {
private HandlerManager eventBus = new HandlerManager(null);
private GCubeCkanDataCatalogPanel panel;
/**
*
*/
public CkanEventHandlerManager() {
bind();
}
/**
* @param panel
* the panel to set
*/
public void setPanel(GCubeCkanDataCatalogPanel panel) {
this.panel = panel;
}
private void bind() {
// bind on show home event
eventBus.addHandler(ShowHomeEvent.TYPE, new ShowHomeEventHandler() {
@Override
public void onShowHome(ShowHomeEvent showHomeEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
panel.instanceCkanFrame(ckan.buildURI());
}
});
// bind on insert metadata
eventBus.addHandler(InsertMetadataEvent.TYPE, new InsertMetadataEventHandler() {
@Override
public void onInsertMetadata(
InsertMetadataEvent loadSelecteReleaseEvent) {
final Modal modal = new Modal(true, true);
// request who's doing the insert
GCubeCkanDataCatalog.service.getUser(new AsyncCallback<String>() {
@Override
public void onSuccess(String username) {
if (username != null) {
modal.setTitle("Publish Product");
modal.addStyleName("insert-metadata-modal-style");
modal.add(new CreateDatasetForm(username));
modal.setCloseVisible(true);
modal.show();
}
else
Window.alert("Please, logout and login again then retry.");
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Please, logout and login again then retry.");
}
});
}
});
// bind on edit (TODO)
eventBus.addHandler(
EditMetadataEvent.TYPE, new EditMetadataEventHandler() {
@Override
public void onEditMetadata(EditMetadataEvent editMetadataEvent) {
// TODO Auto-generated method stub
}
});
// show datasets event
eventBus.addHandler(
ShowUserDatasetsEvent.TYPE, new ShowUserDatasetsEventHandler() {
@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());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/dashboard/datasets");
panel.instanceCkanFrame(ckan.buildURI());
}
});
eventBus.addHandler(
ShowUserOrganizationsEvent.TYPE,
new ShowUserOrganizationsEventHandler() {
@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());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
ckan.addPathInfo("/dashboard/organizations");
panel.instanceCkanFrame(ckan.buildURI());
}
});
// show statistics event
eventBus.addHandler(
ShowStatisticsEvent.TYPE, new ShowStatisticsEventHandler() {
@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");
panel.instanceCkanFrame(ckan.buildURI());
}
});
eventBus.addHandler(NotifyLogoutEvent.TYPE, new NotifyLogoutEventHandler() {
@Override
public void onLogout(NotifyLogoutEvent editMetadataEvent) {
GCubeCkanDataCatalog.service.logoutFromCkan(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(Void result) {
// TODO Auto-generated method stub
}
});
}
});
eventBus.addHandler(IFrameInstanciedEvent.TYPE, new IFrameInstanciedEventHandler() {
@Override
public void onNewInstance(IFrameInstanciedEvent iFrameInstanciedEent) {
panel.updateSize();
}
});
}
/**
* @return
*/
public HandlerManager getEventBus() {
return eventBus;
}
}