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

148 lines
3.5 KiB
Java

/**
*
*/
package org.gcube.portlets.user.td.client;
import java.util.List;
import org.gcube.portlets.user.sdmximportwizard.client.SDMXImportWizardWindow;
import org.gcube.portlets.user.sdmximportwizard.client.SDMXWizardSelectionEvent;
import org.gcube.portlets.user.sdmximportwizard.client.SDMXWizardSelectionEvent.WizardSelectionHandler;
import org.gcube.portlets.user.sdmximportwizard.shared.Dataset;
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.importer.client.TabularDataImporterListener;
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.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 {
protected EventBus 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());
}
});
}
public void doImportTable(ImportTableType importType)
{
Log.trace("doImportTable importType: "+importType);
Info.display("ImportTableEvent", "importType: "+importType);
switch (importType) {
case SDMX: openSDMXDatasetImportWizard(); break;
case CSV: openCSVImportWizard(); break;
default:
break;
}
}
protected void openSDMXDatasetImportWizard()
{
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
SDMXImportWizardWindow<Dataset> importWizard = SDMXImportWizardWindow.getDatasetWizard();
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 doSDMXDatasetImport(List<Dataset> datasets)
{
}
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");
}
}