package name.abuchen.portfolio.ui.util; import java.io.File; import java.io.IOException; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.PortfolioPlugin; import org.apache.commons.csv.CSVStrategy; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.FileDialog; public abstract class AbstractCSVExporter { protected static final CSVStrategy STRATEGY = new CSVStrategy(';', '"', CSVStrategy.COMMENTS_DISABLED, CSVStrategy.ESCAPE_DISABLED, false, false, false, false); protected abstract Control getControl(); protected abstract void writeToFile(File file) throws IOException; public void export(String fileName) { FileDialog dialog = new FileDialog(getControl().getShell(), SWT.SAVE); dialog.setFileName(fileName); String name = dialog.open(); if (name == null) return; File file = new File(name); try { writeToFile(file); } catch (IOException e) { PortfolioPlugin.log(e); MessageDialog.openError(getControl().getShell(), Messages.ExportWizardErrorExporting, e.getMessage()); } } }