Package

Source Code of DECreateDynamicTable

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.model.api.CellHandle;
import org.eclipse.birt.report.model.api.DataItemHandle;
import org.eclipse.birt.report.model.api.DesignConfig;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.IDesignEngine;
import org.eclipse.birt.report.model.api.IDesignEngineFactory;
import org.eclipse.birt.report.model.api.LabelHandle;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.OdaDataSourceHandle;
import org.eclipse.birt.report.model.api.PropertyHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.RowHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.StructureFactory;
import org.eclipse.birt.report.model.api.TableHandle;
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;

import com.ibm.icu.util.ULocale;

//import com.ibm.icu.util.ULocale;

/**
* Dynamic Table BIRT Design Engine API (DEAPI) demo.
*/

public class DECreateDynamicTable {

  ReportDesignHandle designHandle = null;

  ElementFactory designFactory = null;

  StructureFactory structFactory = null;

  @SuppressWarnings({ "rawtypes", "unchecked" })
  public static void main(String[] args) {
    try {
      DECreateDynamicTable de = new DECreateDynamicTable();
      List al = new ArrayList();
      al.add("OFFICECODE");
      al.add("CITY");
      al.add("COUNTRY");

      de.buildReport(al, "From Offices");
    }
    catch( IOException e ) {
      e.printStackTrace();
    }
    catch( SemanticException e ) {
      e.printStackTrace();
    }
  }

  void buildDataSource() throws SemanticException {
    OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource("Data Source", "org.eclipse.birt.report.data.oda.jdbc");
    dsHandle.setProperty("odaDriverClass", "org.eclipse.birt.report.data.oda.sampledb.Driver");
    dsHandle.setProperty("odaURL", "jdbc:classicmodels:sampledb");
    dsHandle.setProperty("odaUser", "ClassicModels");
    dsHandle.setProperty("odaPassword", "");

    designHandle.getDataSources().add(dsHandle);
  }

  @SuppressWarnings("rawtypes")
  void buildDataSet(List cols, String fromClause) throws SemanticException {
    OdaDataSetHandle dsHandle = designFactory.newOdaDataSet(
        "ds", "org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet");
    dsHandle.setDataSource("Data Source");
    String qry = "Select ";

    for( int i = 0 ; i < cols.size() ; i++ ) {
      qry += " " + cols.get(i);

      if( i != (cols.size() - 1) ) {
        qry += ",";
      }
    }

    qry += " " + fromClause;
    dsHandle.setQueryText(qry);

    designHandle.getDataSets().add(dsHandle);
  }

  @SuppressWarnings("rawtypes")
  void buildReport(List cols, String fromClause) throws IOException, SemanticException {
    //Configure the Engine and start the Platform
    DesignConfig config = new DesignConfig();

    config.setProperty("BIRT_HOME", "d:/Libraries/birt-runtime-4_2_0/ReportEngine");
    IDesignEngine engine = null;

    try {
      Platform.startup(config);
      IDesignEngineFactory factory = (IDesignEngineFactory) Platform.createFactoryObject(IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY);
      engine = factory.createDesignEngine(config);
    }
    catch( Exception ex ) {
      ex.printStackTrace();
    }

    SessionHandle session = engine.newSessionHandle(ULocale.ENGLISH);

    try {
      //open a design or a template
      designHandle = session.openDesign("d:/Data Store/Project/birt-demo/WebContent/birt/reports/test_report.rptdesign");

      designFactory = designHandle.getElementFactory();

      buildDataSource();
      buildDataSet(cols, fromClause);

      TableHandle table = designFactory.newTableItem("table", cols.size());
      table.setWidth("100%");
      table.setDataSet(designHandle.findDataSet("ds"));

      PropertyHandle computedSet = table.getColumnBindings();
      ComputedColumn cs1 = null;

      for( int i = 0 ; i < cols.size() ; i++ ) {
        cs1 = StructureFactory.createComputedColumn();
        cs1.setName((String) cols.get(i));
        cs1.setExpression("dataSetRow[\"" + (String) cols.get(i) + "\"]");
        computedSet.addItem(cs1);
      }

      // table header
      RowHandle tableheader = (RowHandle) table.getHeader().get(0);

      for( int i = 0 ; i < cols.size() ; i++ ) {
        LabelHandle label1 = designFactory.newLabel((String) cols.get(i));
        label1.setText((String) cols.get(i));
        CellHandle cell = (CellHandle) tableheader.getCells().get(i);
        cell.getContent().add(label1);
      }

      // table detail
      RowHandle tabledetail = (RowHandle) table.getDetail().get(0);

      for( int i = 0 ; i < cols.size() ; i++ ) {
        CellHandle cell = (CellHandle) tabledetail.getCells().get(i);
        DataItemHandle data = designFactory.newDataItem("data_" + (String) cols.get(i));
        data.setResultSetColumn((String) cols.get(i));
        cell.getContent().add(data);
      }

      designHandle.getBody().add(table);

      // Save the design and close it.
      designHandle.saveAs("d:/Data Store/Project/birt-demo/WebContent/birt/reports/test_report.rptdesign"); //$NON-NLS-1$
      designHandle.close();
      System.out.println("Finished");
    }
    catch( Exception e ) {
      e.printStackTrace();
    }
  }
}
TOP

Related Classes of DECreateDynamicTable

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.