KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > report > ExpressoReport


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.ext.report;
66
67 import java.io.OutputStream JavaDoc;
68 import java.util.List JavaDoc;
69 import java.util.Map JavaDoc;
70
71 /**
72  * ExpressoReport is a generic interface for allowing reports to be &quot;printed&quot;
73  * An example usage of an ExpressoReport is the ReportPage object as defined in
74  * <code>com.jcorporate.expresso.services.html.ReportPage</code>. Although the
75  * interfaces provide independence, and thus you can integrate whatever report
76  * engine you wish, eContent has built in integration with
77  * <p>For those that are interested in making their own reports and a report
78  * driver the general idea is this:<p>
79  * <p><ul>
80  * <li>Instantiate the report class via Class.newInstance() [The report must have
81  * a default constructor]</li>
82  * <li>Set the report parameters</li>
83  * <li>Set the report's data context</li>
84  * <li>Prepare an output stream for the report to dump it's data. [Can be
85  * the servlet output stream for all the report cares]</li>
86  * <li>Call printReport()</li>
87  * </ul>
88  * </p>
89  *
90  * @author Michael Rimov
91  */

92 public interface ExpressoReport {
93
94     /**
95      * All report objects need to implement the printReport method so that the
96      * framework can manage the report output.
97      *
98      * @param os The OutputStream for the report to print to.
99      * @throws ReportException on error
100      * @throws IOException upon IO Error
101      */

102     public void printReport(OutputStream JavaDoc os) throws ReportException, java.io.IOException JavaDoc;
103
104     /**
105      * Sets the report parameters. Parameters are keyed by String parameter
106      * names and the values are of type java.lang.String
107      *
108      * @param parameters a java.util.Map object with the contents as specified
109      * in the function description.
110      */

111     public void setReportParameters(Map JavaDoc parameters);
112
113     /**
114      * Retrieve a list of parameters that this report supports. This function
115      * may be blank, in which case, there still could be parameters for the report
116      * but the automatic ui functions such as <code>ReportServer</code> won't
117      * present them as options.
118      *
119      * @return java.util.List of Strings. or null if there are no parameters
120      */

121     public List JavaDoc getParameterNames();
122
123
124     /**
125      * Retrieve the default parameter value for the given parameter name
126      *
127      * @param parameterName the name of the parameter. Must be listed
128      * in the list of parameter names
129      * @return java.lang.String. The default parameter value. May be null.
130      * @throws IllegalArgumentException if the parameter name does not exist
131      * in the report's parameter list.
132      */

133     public String JavaDoc getDefaultValue(String JavaDoc parameterName);
134
135
136     /**
137      * Sets the data context that the report is to work with.
138      *
139      * @param newDataContext the new data context
140      */

141     public void setDataContext(String JavaDoc newDataContext);
142
143
144     /**
145      * This is the unique identifier for the report. Not necessarily the
146      *
147      * @param newReportcode the report definition code
148      */

149     public void setReportCode(String JavaDoc newReportcode);
150
151
152     /**
153      * Retrieve the title of the report
154      *
155      * @return java.lang.String
156      */

157     public String JavaDoc getTitle();
158
159     /**
160      * The report engine driver is most likely going to need to know what kind
161      * of MimeType to expect the report.
162      *
163      * @return java.lang.String Most likely the report should look up the file
164      * type on the MimeTypes table.
165      * @see com.jcorporate.expresso.services.dbobj.MimeTypes
166      */

167     public String JavaDoc getReportMimeType();
168
169
170     /**
171      * Retrieve the recommended file extension for the report. Return the
172      * value without the '.'. So an example file extension for an Excel
173      * report would be &quot;xls&quot;, and XML formatted report would be
174      * &quot;xml&quot; [although if you're using special XML languages, of course
175      * you have the freedom to specify the extension]
176      *
177      * @return java.lang.String in the format specified above.
178      */

179     public String JavaDoc getReportFileExtension();
180
181 }
Popular Tags