package com.tibco.as.spacebar.ui.editor.snapshot;
import java.io.File;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.FileTransfer;
import com.tibco.as.spacebar.ui.SpaceBarPlugin;
import com.tibco.as.spacebar.ui.preferences.Preferences;
import com.tibco.as.spacebar.ui.transfer.MetaspaceTransferJob;
import com.tibco.as.io.IMetaspaceTransfer;
import com.tibco.as.io.IOUtils;
import com.tibco.as.excel.ExcelImport;
import com.tibco.as.excel.ExcelImporter;
import com.tibco.as.file.text.delimited.DelimitedImport;
import com.tibco.as.file.text.delimited.DelimitedImporter;
import com.tibco.as.space.Metaspace;
public class DropAdapter extends DropTargetAdapter {
public final static String EXTENSION_CSV = "csv";
public final static String EXTENSION_XLS = "xls";
public final static String EXTENSION_XLSX = "xlsx";
private FileTransfer fileTransfer;
private SnapshotBrowser editor;
public DropAdapter(FileTransfer fileTransfer, SnapshotBrowser browser) {
this.fileTransfer = fileTransfer;
this.editor = browser;
}
@Override
public void drop(DropTargetEvent event) {
if (fileTransfer.isSupportedType(event.currentDataType)) {
for (String filename : (String[]) event.data) {
File file = new File(filename);
String extension = IOUtils.getExtension(filename);
Metaspace metaspace = editor.getSpace().getParent().getParent()
.getConnection().getMetaspace();
if (extension.equals(EXTENSION_CSV)) {
DelimitedImporter importer = new DelimitedImporter(
metaspace, file.getParentFile());
importer.setOutputStream(editor.getChangeOutputStream());
DelimitedImport config = (DelimitedImport) importer
.addImport(file.getName());
Preferences.configureDelimitedImport(config);
execute(importer, file);
} else if (extension.equals(EXTENSION_XLS)
|| extension.equals(EXTENSION_XLSX)) {
ExcelImporter importer = new ExcelImporter(metaspace, file);
importer.setOutputStream(editor.getChangeOutputStream());
ExcelImport config = new ExcelImport();
Preferences.configureExcelImport(config);
importer.setDefaultTransfer(config);
execute(importer, file);
} else {
SpaceBarPlugin
.errorDialog(
"Unsupported File Extension",
NLS.bind(
"File ''{0}'' has unknown extension ''{1}''",
filename, extension));
}
editor.activate();
}
}
}
private <T> void execute(IMetaspaceTransfer transfer, File file) {
new MetaspaceTransferJob("Import",
NLS.bind("Importing file {0}", file), transfer, NLS.bind(
"Could not import file ''{0}''", file)).schedule();
}
}