tabular-data-manager/src/main/java/org/gcube/portlets/user/td/client/TabularDataController.java

294 lines
6.7 KiB
Java

/**
*
*/
package org.gcube.portlets.user.td.client;
import org.gcube.portlets.user.td.ciw.client.CSVImporterWidget;
import org.gcube.portlets.user.td.client.event.ImportTableEvent;
import org.gcube.portlets.user.td.client.event.ImportTableType;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceEvent;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceType;
import org.gcube.portlets.user.td.importer.client.TabularDataImporterListener;
import org.gcube.portlets.user.td.open.client.TDOpen;
import org.gcube.portlets.user.sdmximportwizardtd.client.SDMXImportWizardTD;
import org.gcube.portlets.user.sdmximportwizardtd.client.general.WizardListener;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.RunAsyncCallback;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.HasCloseHandlers;
import com.google.gwt.event.logical.shared.HasOpenHandlers;
import com.google.gwt.event.logical.shared.OpenEvent;
import com.google.gwt.event.logical.shared.OpenHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.web.bindery.event.shared.EventBus;
import com.google.web.bindery.event.shared.SimpleEventBus;
import com.sencha.gxt.widget.core.client.info.Info;
/**
* @author "Federico De Faveri defaveri@isti.cnr.it"
*
*/
public class TabularDataController {
//implements HasCloseHandlers<Long>, HasOpenHandlers<Long> {
protected SimpleEventBus eventBus;
public TabularDataController() {
eventBus = new SimpleEventBus();
bindToEvents();
}
/**
* @return the eventBus
*/
public EventBus getEventBus() {
return eventBus;
}
protected void bindToEvents() {
eventBus.addHandler(ImportTableEvent.TYPE,
new ImportTableEvent.ImportTableHandler() {
@Override
public void onImportTable(ImportTableEvent event) {
doImportTable(event.getImportType());
}
});
eventBus.addHandler(OpenTabularResourceEvent.TYPE,
new OpenTabularResourceEvent.OpenTabularResourceHandler() {
@Override
public void onOpenTabularResource(OpenTabularResourceEvent event) {
doOpenTabularResource(event.getOpenType());
}
});
}
public void doImportTable(ImportTableType importType) {
Log.trace("doImportTable importType: " + importType);
Info.display("ImportTableEvent", "importType: " + importType);
try {
switch (importType) {
case SDMX:
openSDMXImportWizard();
break;
case CSV:
openCSVImportWizard();
break;
case JSON:
openCSVImportWizard();
break;
default:
break;
}
} catch (Exception e) {
Log.error("doImportTable Error : " + e.getLocalizedMessage()+ " \n "+e.getCause());
}
}
public void doOpenTabularResource(OpenTabularResourceType openType) {
Log.trace("doOpenTabularResource openType: " + openType);
Info.display("OpenTabularResourceEvent", "openType: " + openType);
try {
switch (openType) {
case TABLE:
openTabularResources();
break;
default:
break;
}
} catch (Exception e) {
Log.error("doOpenTable Error : " + e.getLocalizedMessage()+ " \n "+e.getCause());
}
}
protected void openSDMXImportWizard() {
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
SDMXImportWizardTD importWizard= new SDMXImportWizardTD("SDMX Import");
importWizard.addListener(new WizardListener(){
@Override
public void completed() {
//TableId importWizard.getTable(index);
}
@Override
public void aborted() {
// TODO Auto-generated method stub
}
@Override
public void failed(Throwable throwable, String reason,
String details) {
// TODO Auto-generated method stub
}
});
/*
importWizard.addWizardSelectionHandler(new WizardSelectionHandler<Dataset>() {
@Override
public void onSelected(
SDMXWizardSelectionEvent<Dataset> event) {
doSDMXDatasetImport(event.getSelected());
}
@Override
public void onClosed(
SDMXWizardSelectionEvent<Dataset> event) {
}
});*/
importWizard.show();
}
@Override
public void onFailure(Throwable reason) {
asyncCodeLoadingFailed(reason);
}
});
}
protected void openTabularResources() {
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
TDOpen tdOpen= new TDOpen("Tabular Resources Open");
tdOpen.addListener(new org.gcube.portlets.user.td.open.client.general.WizardListener(){
@Override
public void completed() {
// TODO Auto-generated method stub
}
@Override
public void aborted() {
// TODO Auto-generated method stub
}
@Override
public void failed(Throwable throwable, String reason,
String details) {
// TODO Auto-generated method stub
}
});
tdOpen.show();
}
@Override
public void onFailure(Throwable reason) {
asyncCodeLoadingFailed(reason);
}
});
}
/*
protected void doSDMXDatasetImport(List<Dataset> datasets) {
Log.info("doSDMXDatasetImport: " + datasets.size());
for (Dataset d : datasets) {
Log.info("Dataset: " + d.getId() + d.getName() + d.getAgencyId());
}
}
*/
protected void openCSVImportWizard() {
/*
* GWT.runAsync(new RunAsyncCallback() {
*
* @Override public void onSuccess() {
*/
CSVImporterWidget csvImporterWidget = new CSVImporterWidget();
csvImporterWidget.show(new TabularDataImporterListener() {
@Override
public void failed(Throwable throwable, String reason,
String details) {
// TODO Auto-generated method stub
}
@Override
public void completed() {
// TODO Auto-generated method stub
}
@Override
public void aborted() {
// TODO Auto-generated method stub
}
});
/*
* }
*
* @Override public void onFailure(Throwable reason) {
* asyncCodeLoadingFailed(reason); } });
*/
}
protected void asyncCodeLoadingFailed(Throwable reason) {
Log.error("Async code loading failed", reason);
Info.display("Async code loading failed",
"Please retry to lunch the operation");
}
/**
* {@inheritDoc}
@Override
public HandlerRegistration addCloseHandler(CloseHandler<Long> handler) {
//return eventBus.addHandler(CloseEvent.getType(), handler);
}
/**
* {@inheritDoc}
@Override
public HandlerRegistration addOpenHandler(OpenHandler<Long> handler) {
//return eventBus.addHandler(OpenEvent.getType(), handler);
}
*/
/**
* {@inheritDoc}
@Override
public void fireEvent(GwtEvent<?> event) {
eventBus.fireEvent(event);
}
*/
}