package com.tibco.as.spacebar.ui.wizards.transfer.csv;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.IWizardPage;
import com.tibco.as.spacebar.ui.Image;
import com.tibco.as.spacebar.ui.SpaceBarPlugin;
import com.tibco.as.spacebar.ui.preferences.Preferences;
import com.tibco.as.spacebar.ui.wizards.transfer.AbstractImportWizard;
import com.tibco.as.io.IMetaspaceTransfer;
import com.tibco.as.io.AbstractImport;
import com.tibco.as.io.AbstractTransfer;
import com.tibco.as.file.text.delimited.DelimitedImport;
import com.tibco.as.file.text.delimited.DelimitedImporter;
import com.tibco.as.space.Metaspace;
public class DelimitedImportWizard extends AbstractImportWizard<String[]> {
public DelimitedImportWizard() {
super("DelimitedImportWizard", Image.WIZBAN_CSV);
}
@Override
protected DelimitedImport createTransfer() {
DelimitedImport config = new DelimitedImport();
Preferences.configureDelimitedImport(config);
return config;
}
@Override
protected IWizardPage getConfigurationPage(AbstractTransfer transfer) {
return new DelimitedImportConfigurationPage((DelimitedImport) transfer);
}
@Override
protected DelimitedImportMainPage getMainPage(IStructuredSelection selection) {
return new DelimitedImportMainPage();
}
@Override
protected Collection<IMetaspaceTransfer> getImporters(List<File> files,
AbstractImport defaultImport) {
Map<File, Collection<File>> dirs = new HashMap<File, Collection<File>>();
for (File file : files) {
File dir = file.getParentFile();
if (!dirs.containsKey(dir)) {
dirs.put(dir, new ArrayList<File>());
}
dirs.get(dir).add(file);
}
Map<String, Metaspace> metaspaces = getConnectedMetaspaces();
if (metaspaces.isEmpty()) {
SpaceBarPlugin
.errorDialog("Import Error",
"No connected metaspace, connect to a metaspace before importing.");
}
Collection<IMetaspaceTransfer> importers = new ArrayList<IMetaspaceTransfer>();
for (File dir : dirs.keySet()) {
String metaspaceName = dir.getName();
Metaspace metaspace = metaspaces.containsKey(metaspaceName) ? metaspaces
.get(metaspaceName) : metaspaces.values().iterator().next();
DelimitedImporter importer = new DelimitedImporter(metaspace, dir);
importer.setDefaultTransfer(defaultImport);
for (File file : dirs.get(dir)) {
importer.addImport(file.getName());
}
importers.add(importer);
}
return importers;
}
}