/*
* 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.EvaluationTimeEnum;
/**
* A "generic" report element that will produce a
* {@link JRGenericPrintElement generic print element} in the generated
* report.
*
* <p>
* Such elements can be used in simple scenarios that involve generating
* generic print elements. In more complex scenarios,
* {@link JRComponentElement component elements} that produce generic
* print elements can be implemented.
*
* <p>
* Generic report elements are comprised of a list of parameters that are to
* be included in the generated print element.
* At fill time, expressions associated with the parameters are evaluated and
* the result is preserved in the print element.
* Generic report elements cannot stretch at fill time, they will always produce
* a print element that has the same size as the design element.
*
* @author Lucian Chirita (lucianc@users.sourceforge.net)
* @version $Id: JRGenericElement.java 3505 2010-03-04 14:08:05Z teodord $
*/
public interface JRGenericElement extends JRElement
{
/**
* Returns the generic type of this element.
* This type will be propagated to the generated print element, and used to
* resolve export handler for the print element.
*
* @return the generic type of this element
*/
JRGenericElementType getGenericType();
/**
* Returns the list of parameters of this element.
*
* @return the list of parameters
*/
JRGenericElementParameter[] getParameters();
/**
* @deprecated Replaced by {@link #getEvaluationTimeValue()}.
*/
byte getEvaluationTime();
/**
* Returns the evaluation time of this element.
*
* <p>
* The evaluation time determines the moment at which parameter expressions
* are evaluated for this element. All parameters will be evaluated at the
* same moment.
*
* @return the evaluation time of this element
*/
EvaluationTimeEnum getEvaluationTimeValue();
/**
* Returns the name of the evaluation group for this element.
* The evaluation group is only present when
* {@link #getEvaluationTime() the evaluation time} is
* {@link JRExpression#EVALUATION_TIME_GROUP}.
*
* @return the name of the evaluation group for this element
*/
String getEvaluationGroupName();
}