package de.open4me.depot.tools;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import de.open4me.depot.gui.dialogs.CSVImportConfigDialog;
import de.open4me.depot.gui.dialogs.CSVImportFeldDefinitionenDialog;
import de.open4me.depot.sql.GenericObjectHashMap;
import de.open4me.depot.tools.io.FeldDefinitionen;
import de.willuhn.jameica.gui.GUI;
import de.willuhn.jameica.system.OperationCanceledException;
import de.willuhn.util.ApplicationException;
public class CSVImportHelper {
private String savename;
public CSVImportHelper(String savename) {
this.savename = savename;
}
public List<GenericObjectHashMap> run(ArrayList<FeldDefinitionen> fd) throws Exception {
File file = getFilename();
if (file == null) {
return null;
}
// CSV Daten in ein passendes Format bringen
CSVImportConfigDialog dialog = new CSVImportConfigDialog(file, savename);
try {
dialog.open();
} catch (OperationCanceledException e) {
return null;
}
List<GenericObjectHashMap> csvdata = dialog.getCSVData();
// Und nun die Daten der CSV Datei den gewünschten Feldern zu weisen
List<String> header = dialog.getCSVHeader();
CSVImportFeldDefinitionenDialog fdDialog = new CSVImportFeldDefinitionenDialog(fd, csvdata, header, savename);
try {
fdDialog.open();
} catch (OperationCanceledException e) {
return null;
}
return fdDialog.getCSVData();
}
public File getFilename() throws ApplicationException {
FileDialog fileopen = new FileDialog(GUI.getShell(),SWT.OPEN);
fileopen.setText("Bitte wählen Sie die CSV Datei aus:");
String filename;
try {
filename = fileopen.open();
} catch (OperationCanceledException e) {
return null;
}
if (filename == null || filename.isEmpty()) {
return null;
}
File file = new File(filename);
if (!file.exists() || !file.isFile()) {
throw new ApplicationException("Datei existiert nicht oder ist nicht lesbar");
}
return file;
}
}