Package name.abuchen.portfolio.ui.util

Source Code of name.abuchen.portfolio.ui.util.TableViewerCSVExporter

package name.abuchen.portfolio.ui.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.Charset;

import name.abuchen.portfolio.model.Values;

import org.apache.commons.csv.CSVPrinter;
import org.eclipse.jface.viewers.CellLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

public class TableViewerCSVExporter extends AbstractCSVExporter
{
    private final TableViewer viewer;

    public TableViewerCSVExporter(TableViewer viewer)
    {
        this.viewer = viewer;
    }

    @Override
    protected Control getControl()
    {
        return viewer.getTable();
    }

    @Override
    protected void writeToFile(File file) throws IOException
    {
        Writer writer = new OutputStreamWriter(new FileOutputStream(file), Charset.forName("UTF-8")); //$NON-NLS-1$

        try
        {
            CSVPrinter printer = new CSVPrinter(writer);
            printer.setStrategy(STRATEGY);

            int columnCount = viewer.getTable().getColumnCount();

            // write header
            for (TableColumn column : viewer.getTable().getColumns())
                printer.print(column.getText());
            printer.println();

            // check for "special" label provider
            SharesLabelProvider[] labelProvider = new SharesLabelProvider[columnCount];
            for (int ii = 0; ii < columnCount; ii++)
            {
                CellLabelProvider p = viewer.getLabelProvider(ii);
                if (p instanceof SharesLabelProvider)
                    labelProvider[ii] = (SharesLabelProvider) p;
            }

            // write body
            for (TableItem item : viewer.getTable().getItems())
            {
                for (int ii = 0; ii < columnCount; ii++)
                {
                    if (labelProvider[ii] != null)
                    {
                        Long value = labelProvider[ii].getValue(item.getData());
                        printer.print(value != null ? Values.Share.format(value) : ""); //$NON-NLS-1$
                    }
                    else
                        printer.print(item.getText(ii));
                }
                printer.println();
            }
        }
        finally
        {
            writer.close();
        }
    }
}
TOP

Related Classes of name.abuchen.portfolio.ui.util.TableViewerCSVExporter

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.