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: * Subreport runner interface.
34: *
35: * @author Lucian Chirita (lucianc@users.sourceforge.net)
36: * @version $Id: JRSubreportRunner.java 1229 2006-04-19 10:27:35Z teodord $
37: */
38: public interface JRSubreportRunner {
39: /**
40: * Decides whether the subreport filling has ended or not.
41: *
42: * @return <code>true</code> iff the subreport filling has not ended
43: */
44: boolean isFilling();
45:
46: /**
47: * Starts to fill the subreport.
48: * <p>
49: * This method is always called by a thread owning the lock on the subreport filler.
50: *
51: * @return the result of the fill process
52: * @throws JRException
53: */
54: JRSubreportRunResult start() throws JRException;
55:
56: /**
57: * Resumes the filling of a subreport.
58: * <p>
59: * This method is called after the fill has been suspended by
60: * {@link #suspend() suspend} and the subreport should continue on the new page.
61: * <p>
62: * This method is always called by a thread owning the lock on the subreport filler.
63: *
64: * @return the result of the fill process
65: * @throws JRException
66: */
67: JRSubreportRunResult resume() throws JRException;
68:
69: /**
70: * Resets the runner, preparing it for a new fill.
71: *
72: * @throws JRException
73: */
74: void reset() throws JRException;
75:
76: /**
77: * Cancels the current fill process.
78: * <p>
79: * This method is called when a subreport is placed on a non splitting band
80: * and needs to rewind.
81: * <p>
82: * This method is always called by a thread owning the lock on the subreport filler.
83: *
84: * @throws JRException
85: */
86: void cancel() throws JRException;
87:
88: /**
89: * Suspends the current fill.
90: * <p>
91: * This method is called when the subreport reaches the end of a page
92: * and needs to wait for the master to create a new page.
93: * <p>
94: * This method is always called by a thread owning the lock on the subreport filler.
95: *
96: * @throws JRException
97: */
98: void suspend() throws JRException;
99: }
|