Package org.pentaho.reporting.engine.classic.samples

Source Code of org.pentaho.reporting.engine.classic.samples.Sample3

/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2009 Pentaho Corporation..  All rights reserved.
*/

package org.pentaho.reporting.engine.classic.samples;

import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import org.pentaho.reporting.engine.classic.core.DataFactory;
import org.pentaho.reporting.engine.classic.core.MasterReport;
import org.pentaho.reporting.engine.classic.core.modules.gui.base.PreviewDialog;
import org.pentaho.reporting.libraries.resourceloader.Resource;
import org.pentaho.reporting.libraries.resourceloader.ResourceException;
import org.pentaho.reporting.libraries.resourceloader.ResourceManager;

/**
* Generates a report using a paginated Swing Preview Dialog. The parameters for this report
* can be modified while previewing the dialog and the changes can be seen instantly.
* <p/>
* The report generated in this scenario will be the same as created in Sample1:
* <ol>
* <li>The report definition file is a .prpt file which will be loaded and parsed
* <li>The data factory is a simple JDBC data factory using HSQLDB
* <li>There are no runtime report parameters used
* </ol>
*/
public class Sample3 {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // initialize the Reporting Engine
    ClassicEngineBoot.getInstance().start();

    // Get the complete report definition (the report definition with the data factory and
    // parameters already applied)
    Sample3 sample = new Sample3();
    final MasterReport report = sample.getCompleteReportDefinition();

    // Generate the swing preview dialog
    final PreviewDialog dialog = new PreviewDialog();
    dialog.setReportJob(report);
    dialog.setSize(500, 500);
    dialog.setModal(true);
    dialog.setVisible(true);
    System.exit(0);
  }

  /**
   * Generates the report definition that has the data factory and
   * parameters already applied.
   * @return the completed report definition
   */
  public MasterReport getCompleteReportDefinition() {
    final MasterReport report = getReportDefinition();

    // Add any parameters to the report
    final Map<String, Object> reportParameters = getReportParameters();
    if (null != reportParameters) {
      for (String key : reportParameters.keySet()) {
        report.getParameterValues().put(key, reportParameters.get(key));
      }
    }

    // Set the data factory for the report
    final DataFactory dataFactory = getDataFactory();
    if (dataFactory != null) {
      report.setDataFactory(dataFactory);
    }

    // Return the completed report
    return report;
  }

  /**
   * Returns the report definition which will be used to generate the report. In this case, the report will be
   * loaded and parsed from a file contained in this package.
   *
   * @return the loaded and parsed report definition to be used in report generation.
   */
  private MasterReport getReportDefinition() {
    try {
      // Using the classloader, get the URL to the reportDefinition file
      // NOTE: We will re-use the report definition from SAMPLE1
      final ClassLoader classloader = this.getClass().getClassLoader();
      final URL reportDefinitionURL = classloader
          .getResource("org/pentaho/reporting/engine/classic/samples/Sample1.prpt");

      // Parse the report file
      final ResourceManager resourceManager = new ResourceManager();
      resourceManager.registerDefaults();
      final Resource directly = resourceManager.createDirectly(reportDefinitionURL, MasterReport.class);
      return (MasterReport) directly.getResource();
    } catch (ResourceException e) {
      e.printStackTrace();
    }
    return null;
  }

  /**
   * Returns the set of runtime report parameters. This sample report uses the following three parameters:
   * <ul>
   * <li><b>Report Title</b> - The title text on the top of the report</li>
   * <li><b>Customer Names</b> - an array of customer names to show in the report</li>
   * <li><b>Col Headers BG Color</b> - the background color for the column headers</li>
   * </ul>
   *
   * @return <code>null</code> indicating the report generator does not use any report parameters
   */
  private Map<String, Object> getReportParameters() {
    final Map parameters = new HashMap<String, Object>();
    parameters.put("Report Title", "Simple Embedded Report Example with Parameters");
    parameters.put("Col Headers BG Color", "yellow");
    parameters.put("Customer Names", new String[] { "American Souvenirs Inc", "Toys4GrownUps.com", "giftsbymail.co.uk",
        "BG&E Collectables", "Classic Gift Ideas, Inc", });
    return parameters;
  }

  /**
   * Returns the data factory which will be used to generate the data used during report generation. In this example,
   * we will return null since the data factory has been defined in the report definition.
   *
   * @return the data factory used with the report generator
   */
  private DataFactory getDataFactory() {
    return null;
  }
}
TOP

Related Classes of org.pentaho.reporting.engine.classic.samples.Sample3

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.