Package org.molgenis.framework.tupletable.view.renderers

Source Code of org.molgenis.framework.tupletable.view.renderers.ExcelExporter

package org.molgenis.framework.tupletable.view.renderers;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;

import javax.annotation.Nullable;

import org.apache.commons.io.IOUtils;
import org.molgenis.framework.tupletable.TableException;
import org.molgenis.framework.tupletable.TupleTable;
import org.molgenis.io.TupleWriter;
import org.molgenis.io.excel.ExcelWriter;
import org.molgenis.model.elements.Field;
import org.molgenis.util.tuple.Tuple;

import com.google.common.base.Function;
import com.google.common.collect.Iterables;

/**
* Export TupleTable to Excel workbook
*/
public class ExcelExporter extends AbstractExporter
{
  public ExcelExporter(TupleTable tableTable)
  {
    super(tableTable);
  }

  @Override
  public void export(OutputStream os) throws TableException
  {
    ExcelWriter excelWriter = new ExcelWriter(os);
    try
    {
      // save table state
      int colOffset = tupleTable.getColOffset();
      int colLimit = tupleTable.getColLimit();
      int rowOffset = tupleTable.getOffset();
      int rowLimit = tupleTable.getLimit();

      // update table state
      tupleTable.setColOffset(0);
      tupleTable.setColLimit(0);
      tupleTable.setOffset(0);
      tupleTable.setLimit(0);

      TupleWriter tupleWriter = excelWriter.createTupleWriter("Sheet1");
      try
      {
        // write header row
        tupleWriter.writeColNames(Iterables.transform(tupleTable.getColumns(), new Function<Field, String>()
        {
          @Override
          @Nullable
          public String apply(@Nullable
          Field field)
          {
            return field != null ? field.getName() : null;
          }
        }));

        // write rows
        for (Iterator<Tuple> it = tupleTable.iterator(); it.hasNext();)
          tupleWriter.write(it.next());
      }
      finally
      {
        IOUtils.closeQuietly(tupleWriter);

        // restore table state
        tupleTable.setColOffset(colOffset);
        tupleTable.setColLimit(colLimit);
        tupleTable.setOffset(rowOffset);
        tupleTable.setLimit(rowLimit);
      }
    }
    catch (IOException e)
    {
      throw new TableException(e);
    }
    finally
    {
      IOUtils.closeQuietly(excelWriter);
    }
  }
}
TOP

Related Classes of org.molgenis.framework.tupletable.view.renderers.ExcelExporter

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.