Package name.abuchen.portfolio.ui.wizards.datatransfer

Source Code of name.abuchen.portfolio.ui.wizards.datatransfer.ExportWizard

package name.abuchen.portfolio.ui.wizards.datatransfer;

import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;

import name.abuchen.portfolio.datatransfer.AktienfreundeNetExporter;
import name.abuchen.portfolio.datatransfer.CSVExporter;
import name.abuchen.portfolio.model.Account;
import name.abuchen.portfolio.model.AccountTransaction;
import name.abuchen.portfolio.model.Client;
import name.abuchen.portfolio.model.Portfolio;
import name.abuchen.portfolio.model.PortfolioTransaction;
import name.abuchen.portfolio.model.Security;
import name.abuchen.portfolio.model.SecurityPrice;
import name.abuchen.portfolio.ui.Messages;
import name.abuchen.portfolio.ui.PortfolioPlugin;
import name.abuchen.portfolio.ui.wizards.AbstractWizardPage;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.FileDialog;

public class ExportWizard extends Wizard
{
    private final Client client;

    private ExportSelectionPage exportPage;

    public ExportWizard(Client client)
    {
        this.client = client;
    }

    @Override
    public void addPages()
    {
        addPage(exportPage = new ExportSelectionPage(client));
        AbstractWizardPage.attachPageListenerTo(this.getContainer());
    }

    @Override
    public boolean performFinish()
    {
        Object exportItem = exportPage.getExportItem();
        Class<?> exportClass = exportPage.getExportClass();

        File file = getFile(exportItem);

        if (file == null)
            return false;

        try
        {
            // account transactions
            if (exportItem == AccountTransaction.class)
            {
                new CSVExporter().exportAccountTransactions(file, client.getAccounts());
            }
            else if (exportClass == AccountTransaction.class)
            {
                new CSVExporter().exportAccountTransactions(file, (Account) exportItem);
            }

            // portfolio transactions
            else if (exportItem == PortfolioTransaction.class)
            {
                new CSVExporter().exportPortfolioTransactions(file, client.getPortfolios());
            }
            else if (exportClass == PortfolioTransaction.class)
            {
                new CSVExporter().exportPortfolioTransactions(file, (Portfolio) exportItem);
            }

            // master data
            else if (exportItem == Security.class)
            {
                new CSVExporter().exportSecurityMasterData(new File(file, Messages.ExportWizardSecurityMasterData
                                + ".csv"), client.getSecurities()); //$NON-NLS-1$
            }
            else if (exportClass == Security.class)
            {
                if (Messages.ExportWizardSecurityMasterData.equals(exportItem))
                    new CSVExporter().exportSecurityMasterData(file, client.getSecurities());
                else if (Messages.ExportWizardMergedSecurityPrices.equals(exportItem))
                    new CSVExporter().exportMergedSecurityPrices(file, client.getSecurities());
                else if (Messages.ExportWizardAllTransactionsAktienfreundeNet.equals(exportItem))
                    new AktienfreundeNetExporter().exportAllTransactions(file, client);
            }

            // historical quotes
            else if (exportItem == SecurityPrice.class)
            {
                new CSVExporter().exportSecurityPrices(file, client.getSecurities());
            }
            else if (exportClass == SecurityPrice.class)
            {
                new CSVExporter().exportSecurityPrices(file, (Security) exportItem);
            }
            else
            {
                throw new UnsupportedOperationException(MessageFormat.format(Messages.ExportWizardUnsupportedExport,
                                exportClass, exportItem));
            }
        }
        catch (IOException e)
        {
            PortfolioPlugin.log(e);
            MessageDialog.openError(getShell(), Messages.ExportWizardErrorExporting, e.getMessage());
        }

        return true;
    }

    private File getFile(Object exportItem)
    {
        File file = null;
        if (exportItem instanceof Class)
        {
            DirectoryDialog directoryDialog = new DirectoryDialog(getShell());

            directoryDialog.setMessage(Messages.ExportWizardSelectDirectory);

            String dir = directoryDialog.open();
            if (dir != null)
                file = new File(dir);
        }
        else
        {
            String name = null;
            if (exportItem instanceof Account)
                name = ((Account) exportItem).getName();
            else if (exportItem instanceof Portfolio)
                name = ((Portfolio) exportItem).getName();
            else if (exportItem instanceof Security)
                name = ((Security) exportItem).getIsin();
            else if (exportItem instanceof String)
                name = (String) exportItem;

            FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);
            if (name != null)
                dialog.setFileName(name + ".csv"); //$NON-NLS-1$
            String fileName = dialog.open();

            if (fileName != null)
                file = new File(fileName);
        }
        return file;
    }

}
TOP

Related Classes of name.abuchen.portfolio.ui.wizards.datatransfer.ExportWizard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.