Package org.pentaho.reporting.engine.classic.demo.ancient.demo.onetomany

Source Code of org.pentaho.reporting.engine.classic.demo.ancient.demo.onetomany.PeopleReportDefinition

/*
* 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) 2001 - 2009 Object Refinery Ltd, Pentaho Corporation and Contributors.  All rights reserved.
*/

package org.pentaho.reporting.engine.classic.demo.ancient.demo.onetomany;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.geom.Point2D;

import org.pentaho.reporting.engine.classic.core.ElementAlignment;
import org.pentaho.reporting.engine.classic.core.MasterReport;
import org.pentaho.reporting.engine.classic.core.PageFooter;
import org.pentaho.reporting.engine.classic.core.PageHeader;
import org.pentaho.reporting.engine.classic.core.RelationalGroup;
import org.pentaho.reporting.engine.classic.core.elementfactory.DateFieldElementFactory;
import org.pentaho.reporting.engine.classic.core.elementfactory.HorizontalLineElementFactory;
import org.pentaho.reporting.engine.classic.core.elementfactory.LabelElementFactory;
import org.pentaho.reporting.engine.classic.core.elementfactory.TextFieldElementFactory;
import org.pentaho.reporting.engine.classic.core.function.PageOfPagesFunction;
import org.pentaho.reporting.engine.classic.core.style.BandStyleKeys;
import org.pentaho.reporting.engine.classic.core.style.ElementStyleKeys;
import org.pentaho.reporting.engine.classic.core.style.ElementStyleSheet;
import org.pentaho.reporting.engine.classic.core.style.TextStyleKeys;
import org.pentaho.reporting.libraries.base.util.FloatDimension;

public class PeopleReportDefinition
{
  private MasterReport report;

  public PeopleReportDefinition()
  {
    report = new MasterReport();
    report.setName("People Report (API)");
    configurePeopleGroup();
    configureRecordGroup();

    // now the groups ... configured by an external class (as if it would be included)
    final ActivityReportDefinition activityDef = new ActivityReportDefinition(report);
    activityDef.configure();

    final LunchReportDefinition lunchDef = new LunchReportDefinition(report);
    lunchDef.configure();

    final OfficeReportDefinition officeDef = new OfficeReportDefinition(report);
    officeDef.configure();

    configurePageHeader();
    configurePageFooter();
    configureFunctions();
  }

  private void configureFunctions()
  {
    final PageOfPagesFunction pageFunction = new PageOfPagesFunction();
    pageFunction.setName("pageXofY");
    pageFunction.setFormat("Page {0} of {1}");
    report.addExpression(pageFunction);

  }

  private void configurePeopleGroup()
  {
    final RelationalGroup group = new RelationalGroup();
    group.setName("person-group");
    group.addField("person.name");

    LabelElementFactory labelFactory = new LabelElementFactory();
    labelFactory.setAbsolutePosition(new Point2D.Float(0, 0));
    labelFactory.setMinimumSize(new FloatDimension(160, 12));
    labelFactory.setText("Name:");
    group.getHeader().addElement(labelFactory.createElement());

    TextFieldElementFactory textFieldFactory = new TextFieldElementFactory();
    textFieldFactory.setFieldname("person.name");
    textFieldFactory.setAbsolutePosition(new Point2D.Float(170, 0));
    textFieldFactory.setMinimumSize(new FloatDimension(-100, 12));
    group.getHeader().addElement(textFieldFactory.createElement());

    labelFactory = new LabelElementFactory();
    labelFactory.setAbsolutePosition(new Point2D.Float(0, 15));
    labelFactory.setMinimumSize(new FloatDimension(160, 12));
    labelFactory.setText("Address:");
    group.getHeader().addElement(labelFactory.createElement());

    textFieldFactory = new TextFieldElementFactory();
    textFieldFactory.setFieldname("person.address");
    textFieldFactory.setAbsolutePosition(new Point2D.Float(170, 15));
    textFieldFactory.setMinimumSize(new FloatDimension(-100, 12));
    group.getHeader().addElement(textFieldFactory.createElement());

    group.getFooter().getStyle().setStyleProperty(ElementStyleKeys.MIN_HEIGHT, new Float(15));

    report.addGroup(group);
  }

  private void configureRecordGroup()
  {
    final RelationalGroup group = new RelationalGroup();
    group.setName("record-group");
    group.addField("person.name");
    group.addField("recordType");

    report.addGroup(group);
  }

  private void configurePageHeader()
  {
    final PageHeader pageHeader = report.getPageHeader();
    final ElementStyleSheet style = pageHeader.getStyle();
    style.setStyleProperty(BandStyleKeys.DISPLAY_ON_FIRSTPAGE, Boolean.TRUE);
    style.setStyleProperty(ElementStyleKeys.MIN_HEIGHT, new Float(24));
    style.setStyleProperty(TextStyleKeys.FONT, "Serif");
    style.setStyleProperty(TextStyleKeys.FONTSIZE, new Integer(10));
    style.setStyleProperty(ElementStyleKeys.BACKGROUND_COLOR, new Color(0xAFAFAF));


    pageHeader.addElement
        (HorizontalLineElementFactory.createHorizontalLine
            (18, null, new BasicStroke(1)));

    final DateFieldElementFactory elementFactory = new DateFieldElementFactory();
    elementFactory.setAbsolutePosition(new Point2D.Float(-50, 0));
    elementFactory.setMinimumSize(new FloatDimension(-50, -100));
    elementFactory.setVerticalAlignment(ElementAlignment.MIDDLE);
    elementFactory.setHorizontalAlignment(ElementAlignment.RIGHT);
    elementFactory.setFormatString("d-MMM-yyyy");
    elementFactory.setFieldname("report.date");
    pageHeader.addElement(elementFactory.createElement());
  }

  private void configurePageFooter()
  {
    final PageFooter pageFooter = report.getPageFooter();
    final ElementStyleSheet style = pageFooter.getStyle();
    style.setStyleProperty(BandStyleKeys.DISPLAY_ON_FIRSTPAGE, Boolean.TRUE);
    style.setStyleProperty(ElementStyleKeys.MIN_HEIGHT, new Float(24));
    style.setStyleProperty(ElementStyleKeys.BACKGROUND_COLOR, new Color(0xAFAFAF));
    pageFooter.addElement
        (HorizontalLineElementFactory.createHorizontalLine
            (0, null, new BasicStroke(1)));

    final TextFieldElementFactory elementFactory = new TextFieldElementFactory();
    elementFactory.setAbsolutePosition(new Point2D.Float(0, 4));
    elementFactory.setMinimumSize(new FloatDimension(-100, -100));
    elementFactory.setVerticalAlignment(ElementAlignment.MIDDLE);
    elementFactory.setHorizontalAlignment(ElementAlignment.RIGHT);
    elementFactory.setFieldname("pageXofY");
    report.getPageFooter().addElement(elementFactory.createElement());
  }


  public MasterReport getReport()
  {
    return report;
  }
}
TOP

Related Classes of org.pentaho.reporting.engine.classic.demo.ancient.demo.onetomany.PeopleReportDefinition

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.