01: /*
02: * ============================================================================
03: * GNU Lesser General Public License
04: * ============================================================================
05: *
06: * JasperReports - Free Java report-generating library.
07: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
08: *
09: * This library is free software; you can redistribute it and/or
10: * modify it under the terms of the GNU Lesser General Public
11: * License as published by the Free Software Foundation; either
12: * version 2.1 of the License, or (at your option) any later version.
13: *
14: * This library is distributed in the hope that it will be useful,
15: * but WITHOUT ANY WARRANTY; without even the implied warranty of
16: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17: * Lesser General Public License for more details.
18: *
19: * You should have received a copy of the GNU Lesser General Public
20: * License along with this library; if not, write to the Free Software
21: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22: *
23: * JasperSoft Corporation
24: * 303 Second Street, Suite 450 North
25: * San Francisco, CA 94107
26: * http://www.jaspersoft.com
27: */
28: package net.sf.jasperreports.engine.fill;
29:
30: import net.sf.jasperreports.engine.JRException;
31:
32: /**
33: * Extended incrementer interface.
34: * <p>
35: * The {@link net.sf.jasperreports.engine.fill.JRIncrementer JRIncrementer} has been
36: * kept for backward compatibility.
37: * <p>
38: * The crosstab calculation engine requires extended incrementers. An incrementer implementing
39: * {@link net.sf.jasperreports.engine.fill.JRIncrementer JRIncrementer} can be used for report
40: * variables only.
41: *
42: * @author Lucian Chirita (lucianc@users.sourceforge.net)
43: * @version $Id: JRExtendedIncrementer.java 1229 2006-04-19 10:27:35Z teodord $
44: */
45: public interface JRExtendedIncrementer extends JRIncrementer {
46: /**
47: * Increments a calculable object with a value.
48: *
49: * @param calculable the calculable
50: * @param expressionValue the value
51: * @param valueProvider value provider
52: * @return the incremented value
53: * @throws JRException
54: */
55: public Object increment(JRCalculable calculable,
56: Object expressionValue, AbstractValueProvider valueProvider)
57: throws JRException;
58:
59: /**
60: * Returns the initial value for this calculation.
61: * <p>
62: * This method should return a neutral value for this calculation
63: * (e.g. 0 for sum, 1 for product, etc) or a default value if no neutral value exists.
64: *
65: * @return the initial value for this calculation
66: */
67: public Object initialValue();
68:
69: /**
70: * Combines two calculated values into one.
71: *
72: * @param calculable the first calculated value
73: * @param calculableValue the second calculated value
74: * @param valueProvider the value provider used for the helper variables
75: * @return the combined value
76: * @throws JRException
77: */
78: public Object combine(JRCalculable calculable,
79: JRCalculable calculableValue,
80: AbstractValueProvider valueProvider) throws JRException;
81:
82: }
|