/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports 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.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.jasperreports.engine;
import net.sf.jasperreports.engine.type.OrientationEnum;
import net.sf.jasperreports.engine.type.PrintOrderEnum;
import net.sf.jasperreports.engine.type.WhenNoDataTypeEnum;
import net.sf.jasperreports.engine.type.WhenResourceMissingTypeEnum;
/**
* An abstract representation of a Jasper report. This interface is inherited by all report implementations
* (designs, compiled reports, filled reports). It only contains constants and getters and setters for the most common
* report properties and elements.
* @author Teodor Danciu (teodord@users.sourceforge.net)
* @version $Id: JRReport.java 3583 2010-03-12 11:35:40Z shertage $
*/
public interface JRReport extends JRDefaultFontProvider, JRDefaultStyleProvider, JRPropertiesHolder
{
/**
* A constant used to specify that the language used by expressions is Java.
*/
public static final String LANGUAGE_JAVA = "java";
/**
* A constant used to specify that the language used by expressions is Groovy.
*/
public static final String LANGUAGE_GROOVY = "groovy";
/**
* @deprecated Replaced by {@link PrintOrderEnum#VERTICAL}.
*/
public static final byte PRINT_ORDER_VERTICAL = 1;
/**
* @deprecated Replaced by {@link PrintOrderEnum#HORIZONTAL}.
*/
public static final byte PRINT_ORDER_HORIZONTAL = 2;
/**
* @deprecated Replaced by {@link OrientationEnum#PORTRAIT}.
*/
public static final byte ORIENTATION_PORTRAIT = 1;
/**
* @deprecated Replaced by {@link OrientationEnum#LANDSCAPE}.
*/
public static final byte ORIENTATION_LANDSCAPE = 2;
/**
* Specifies that in case of empty datasources, there will be an empty report.
* @deprecated Replaced by {@link WhenNoDataTypeEnum#NO_PAGES}.
*/
public static final byte WHEN_NO_DATA_TYPE_NO_PAGES = 1;
/**
* Specifies that in case of empty datasources, there will be a report with just one blank page.
* @deprecated Replaced by {@link WhenNoDataTypeEnum#BLANK_PAGE}.
*/
public static final byte WHEN_NO_DATA_TYPE_BLANK_PAGE = 2;
/**
* Specifies that in case of empty datasources, all sections except detail will displayed.
* @deprecated Replaced by {@link WhenNoDataTypeEnum#ALL_SECTIONS_NO_DETAIL}.
*/
public static final byte WHEN_NO_DATA_TYPE_ALL_SECTIONS_NO_DETAIL = 3;
/**
* Specifies that in case of empty datasources, the NoData section will be displayed.
* @deprecated Replaced by {@link WhenNoDataTypeEnum#NO_DATA_SECTION}.
*/
public static final byte WHEN_NO_DATA_TYPE_NO_DATA_SECTION = 4;
/**
* Return NULL when a resource is missing.
* @deprecated Replaced by {@link WhenResourceMissingTypeEnum#NULL}.
*/
public static final byte WHEN_RESOURCE_MISSING_TYPE_NULL = JRDataset.WHEN_RESOURCE_MISSING_TYPE_NULL;
/**
* Return empty string when a resource is missing.
* @deprecated Replaced by {@link WhenResourceMissingTypeEnum#EMPTY}.
*/
public static final byte WHEN_RESOURCE_MISSING_TYPE_EMPTY = JRDataset.WHEN_RESOURCE_MISSING_TYPE_EMPTY;
/**
* Return the key when a resource is missing.
* @deprecated Replaced by {@link WhenResourceMissingTypeEnum#KEY}.
*/
public static final byte WHEN_RESOURCE_MISSING_TYPE_KEY = JRDataset.WHEN_RESOURCE_MISSING_TYPE_KEY;
/**
* Throw an exception when a resource is missing.
* @deprecated Replaced by {@link WhenResourceMissingTypeEnum#ERROR}.
*/
public static final byte WHEN_RESOURCE_MISSING_TYPE_ERROR = JRDataset.WHEN_RESOURCE_MISSING_TYPE_ERROR;
/**
* Gets the report name.
*/
public String getName();
/**
* Gets the report language. Should be Java or Groovy.
*/
public String getLanguage();
/**
* Gets the number of columns on each page
*/
public int getColumnCount();
/**
* @deprecated Replaced by {@link #getPrintOrderValue()}.
*/
public byte getPrintOrder();
/**
* Specifies whether columns will be filled horizontally or vertically.
* @return a value representing one of the print order constants in {@link PrintOrderEnum}
*/
public PrintOrderEnum getPrintOrderValue();
/**
*
*/
public int getPageWidth();
/**
*
*/
public int getPageHeight();
/**
* @deprecated Replaced by {@link #getOrientationValue()}.
*/
public byte getOrientation();
/**
* Specifies whether document pages will be rendered in a portrait or landscape layout.
* @return a value representing one of the orientation constants in {@link OrientationEnum}
*/
public OrientationEnum getOrientationValue();
/**
* @deprecated Replaced by {@link #getWhenNoDataTypeValue()}.
*/
public byte getWhenNoDataType();
/**
* Specifies the report behavior in case of empty datasources.
*/
public WhenNoDataTypeEnum getWhenNoDataTypeValue();
/**
* @deprecated Replaced by {@link #setWhenNoDataType(WhenNoDataTypeEnum)}.
*/
public void setWhenNoDataType(byte whenNoDataType);
/**
* Sets the report behavior in case of empty datasources.
*/
public void setWhenNoDataType(WhenNoDataTypeEnum whenNoDataType);
/**
*
*/
public int getColumnWidth();
/**
* Specifies the space between columns on the same page.
*/
public int getColumnSpacing();
/**
*
*/
public int getLeftMargin();
/**
*
*/
public int getRightMargin();
/**
*
*/
public int getTopMargin();
/**
*
*/
public int getBottomMargin();
/**
* Specifies if the title section will be printed on a separate initial page.
*/
public boolean isTitleNewPage();
/**
* Specifies if the summary section will be printed on a separate last page.
*/
public boolean isSummaryNewPage();
/**
* Specifies if the summary section will be accompanied by the page header and footer.
*/
public boolean isSummaryWithPageHeaderAndFooter();
/**
* Specifies if the column footer section will be printed at the bottom of the column or if it
* will immediately follow the last detail or group footer printed on the current column.
*/
public boolean isFloatColumnFooter();
/**
*
*/
public String getScriptletClass();
/**
* Gets the name of the class implementing the {@link net.sf.jasperreports.engine.util.FormatFactory FormatFactory}
* interface to use with this report.
*/
public String getFormatFactoryClass();
/**
* Gets the base name of the report associated resource bundle.
*/
public String getResourceBundle();
/**
* Gets an array of report properties names.
*/
public String[] getPropertyNames();
/**
* Gets a property value
* @param name the property name
*/
public String getProperty(String name);
/**
*
*/
public void setProperty(String name, String value);
/**
*
*/
public void removeProperty(String name);
/**
* Gets an array of imports (needed if report expression require additional classes in order to compile).
*/
public String[] getImports();
/**
* Gets an array of report fonts.
*/
public JRReportFont[] getFonts();
/**
* Gets an array of report styles.
*/
public JRStyle[] getStyles();
/**
*
*/
public JRScriptlet[] getScriptlets();
/**
*
*/
public JRParameter[] getParameters();
/**
*
*/
public JRQuery getQuery();
/**
*
*/
public JRField[] getFields();
/**
*
*/
public JRSortField[] getSortFields();
/**
*
*/
public JRVariable[] getVariables();
/**
*
*/
public JRGroup[] getGroups();
/**
*
*/
public JRBand getBackground();
/**
*
*/
public JRBand getTitle();
/**
*
*/
public JRBand getPageHeader();
/**
*
*/
public JRBand getColumnHeader();
/**
* @deprecated Replaced by {@link #getDetailSection()}.
*/
public JRBand getDetail();
/**
*
*/
public JRSection getDetailSection();
/**
*
*/
public JRBand getColumnFooter();
/**
*
*/
public JRBand getPageFooter();
/**
*
*/
public JRBand getLastPageFooter();
/**
*
*/
public JRBand getSummary();
/**
*
*/
public JRBand getNoData();
/**
* @deprecated Replaced by {@link #getWhenResourceMissingTypeValue()}.
*/
public byte getWhenResourceMissingType();
/**
* Returns the resource missing handling type.
*/
public WhenResourceMissingTypeEnum getWhenResourceMissingTypeValue();
/**
* @deprecated Replaced by {@link #setWhenResourceMissingType(WhenResourceMissingTypeEnum)}
*/
public void setWhenResourceMissingType(byte whenResourceMissingType);
/**
* Sets the resource missing handling type.
* @param whenResourceMissingType the resource missing handling type
*/
public void setWhenResourceMissingType(WhenResourceMissingTypeEnum whenResourceMissingType);
/**
* Returns the main report dataset.
* <p>
* The main report dataset consists of all parameters, fields, variables and groups of the report.
*
* @return the main report dataset
*/
public JRDataset getMainDataset();
/**
* Returns the datasets of this report.
*
* @return the datasets of this report
*/
public JRDataset[] getDatasets();
/**
* Decides whether to use pagination when filling the report.
* <p>
* If set to <code>true</code> the report will be generated on one long page.
* <p>
* The design attribute can be overridden at fill time by the {@link JRParameter#IS_IGNORE_PAGINATION IS_IGNORE_PAGINATION}
* parameter.
*
* @return whether to use pagination when filling the report
*/
public boolean isIgnorePagination();
/**
* Returns the list of report templates.
* <p/>
* A report template is an expression which resolves at runtime to a {@link JRTemplate template}.
* Templates include styles which can be used in the report.
* <p/>
* The order in which the templates are included in the report is important:
* <ul>
* <li>A style's parent must appear before the style itself.</li>
* <li>A style overrides styles with the same name that are placed before it.
* Also, report styles override templates styles with the same name.</li>
* </ul>
*
* @return the list of report templates, or <code>null</code> if none
* @see JRTemplate
* @see JRParameter#REPORT_TEMPLATES
*/
public JRReportTemplate[] getTemplates();
}