KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > api > engine > jasperreports > service > impl > EngineServiceImplTest


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21
22 package com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl;
23
24 import java.util.HashMap JavaDoc;
25 import java.util.List JavaDoc;
26
27 import junit.framework.TestCase;
28 import junit.textui.TestRunner;
29 import net.sf.jasperreports.engine.JasperPrint;
30 import net.sf.jasperreports.engine.JasperReport;
31
32 import org.springframework.context.support.ClassPathXmlApplicationContext;
33
34 import com.jaspersoft.jasperserver.api.common.domain.ExecutionContext;
35 import com.jaspersoft.jasperserver.api.common.domain.ValidationDetail;
36 import com.jaspersoft.jasperserver.api.common.domain.ValidationResult;
37 import com.jaspersoft.jasperserver.api.common.domain.impl.ExecutionContextImpl;
38 import com.jaspersoft.jasperserver.api.engine.common.domain.Result;
39 import com.jaspersoft.jasperserver.api.engine.common.service.EngineService;
40 import com.jaspersoft.jasperserver.api.engine.jasperreports.domain.impl.ReportUnitRequest;
41 import com.jaspersoft.jasperserver.api.engine.jasperreports.domain.impl.ReportUnitResult;
42 import com.jaspersoft.jasperserver.api.engine.jasperreports.domain.impl.TrialReportUnitRequest;
43 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource;
44 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource;
45 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference;
46 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService;
47 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit;
48
49
50 /**
51  * @author Lucian Chirita (lucianc@users.sourceforge.net)
52  * @version $Id: EngineServiceImplTest.java 3480 2006-05-28 11:36:00Z swood $
53  */

54 public class EngineServiceImplTest extends TestCase
55 {
56     private EngineService service;
57     private RepositoryService repository;
58     private ExecutionContext context;
59
60     public EngineServiceImplTest(String JavaDoc name){
61         super(name);
62     }
63
64
65     protected void setUp() throws Exception JavaDoc {
66         ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
67                 new String JavaDoc[]{"hibernateConfig.xml", "viewService.xml", "engine.xml", "customDataSources.xml"});
68
69         service = (EngineService) appContext.getBean("engineService");
70         repository = (RepositoryService) appContext.getBean("repoService");
71         
72         context = new ExecutionContextImpl();
73     }
74
75     protected void tearDown() throws Exception JavaDoc {
76         service.release();
77     }
78
79
80     public static void main(String JavaDoc[] args) {
81         TestRunner.run(EngineServiceImplTest.class);
82     }
83
84     /**
85      *
86      */

87     public void testExecute() throws Exception JavaDoc
88     {
89         ReportUnitResult result = (ReportUnitResult) service.execute(context, new ReportUnitRequest("/reports/samples/SalesByMonth", new HashMap JavaDoc()));
90         assertNotNull(result);
91         JasperPrint jasperPrint = result.getJasperPrint();
92         assertNotNull(jasperPrint);
93         List JavaDoc pages = jasperPrint.getPages();
94         assertNotNull(pages);
95         assertTrue(pages.size() > 0);
96     }
97
98     /**
99      *
100      */

101     public void testGetResources() throws Exception JavaDoc
102     {
103         ReportUnit reportUnit = (ReportUnit) repository.getResource(context, "/reports/samples/AllAccounts");
104         assertNotNull(reportUnit);
105         ResourceReference reportRef = reportUnit.getMainReport();
106         assertNotNull(reportRef);
107         assertTrue(reportRef.isLocal());
108         Resource report = reportRef.getLocalResource();
109         assertNotNull(report);
110         assertTrue(report instanceof FileResource);
111         Resource[] resources = service.getResources(new ResourceReference(report));
112         assertNotNull(resources);
113         assertTrue(resources.length == 2);
114     }
115
116     public void testValidate() {
117         ReportUnit unit = createUnit();
118
119         ValidationResult result = service.validate(null, unit);
120         assertNotNull(result);
121         assertEquals(ValidationResult.STATE_ERROR, result.getValidationState());
122         List JavaDoc results = result.getResults();
123         assertNotNull(results);
124         assertEquals(1, results.size());
125         ValidationDetail detail = (ValidationDetail) results.get(0);
126         assertNotNull(detail);
127         assertEquals("SalesByMonthTrialReport", detail.getName());
128
129         addJar(unit);
130
131         result = service.validate(null, unit);
132         assertNotNull(result);
133         assertEquals(ValidationResult.STATE_VALID, result.getValidationState());
134     }
135
136     public void testTrialExecute() {
137         ReportUnit unit = createUnit();
138         addJar(unit);
139         
140         TrialReportUnitRequest request = new TrialReportUnitRequest(unit, null);
141         Result result = service.execute(null, request);
142         assertNotNull(result);
143         assertTrue(result instanceof ReportUnitResult);
144         ReportUnitResult ruRes = (ReportUnitResult) result;
145         JasperPrint print = ruRes.getJasperPrint();
146         assertNotNull(print);
147         List JavaDoc pages = print.getPages();
148         assertNotNull(pages);
149         assertTrue(pages.size() > 1);
150     }
151
152     private ReportUnit createUnit() {
153         ReportUnit unit = (ReportUnit) repository.newResource(null,
154                 ReportUnit.class);
155         setCommon(unit, "SalesByMonthTrial");
156         unit.setParentFolder("/reports");
157
158         FileResource mainReport = (FileResource) repository.newResource(null, FileResource.class);
159         mainReport.setFileType(FileResource.TYPE_JRXML);
160         setCommon(mainReport, "SalesByMonthTrialReport");
161         mainReport.readData(getClass().getResourceAsStream("/reports/jasper/SalesByMonth.jrxml"));
162         unit.setMainReport(mainReport);
163
164         unit.setDataSourceReference("/datasources/JServerJdbcDS");
165
166         FileResource img = (FileResource) repository.newResource(null, FileResource.class);
167         img.setFileType(FileResource.TYPE_IMAGE);
168         img.readData(getClass().getResourceAsStream("/images/jasperreports.gif"));
169         setCommon(img, "Logo");
170         unit.addResource(img);
171
172         FileResource subrep = (FileResource) repository.newResource(null, FileResource.class);
173         subrep.setFileType(FileResource.TYPE_JRXML);
174         subrep.readData(getClass().getResourceAsStream("/reports/jasper/SalesByMonthDetail.jrxml"));
175         setCommon(subrep, "SalesByMonthDetail");
176         unit.addResource(subrep);
177
178         FileResource resBdl = (FileResource) repository.newResource(null, FileResource.class);
179         resBdl.setFileType(FileResource.TYPE_RESOURCE_BUNDLE);
180         resBdl.readData(getClass().getResourceAsStream("/resource_bundles/sales.properties"));
181         setCommon(resBdl, "sales.properties");
182         unit.addResource(resBdl);
183
184         return unit;
185     }
186
187
188     private void addJar(ReportUnit unit) {
189         FileResource jar = (FileResource) repository.newResource(null,
190                 FileResource.class);
191         jar.setFileType(FileResource.TYPE_JAR);
192         jar.readData(getClass().getResourceAsStream("/jars/scriptlet.jar"));
193         setCommon(jar, "Scriptlet");
194         unit.addResource(jar);
195     }
196     
197
198     private void setCommon(Resource res, String JavaDoc id) {
199         res.setName(id);
200         res.setLabel(id + "_label");
201         res.setDescription(id + " description");
202     }
203     
204     public void testGetMainJasperReport() {
205         JasperReport jasperReport = service.getMainJasperReport(null, "/reports/samples/AllAccounts");
206         assertNotNull(jasperReport);
207         assertEquals("AllAccounts", jasperReport.getName());
208     }
209
210     public void testExecuteWithCustomDS() throws Exception JavaDoc
211     {
212         ReportUnitResult result = (ReportUnitResult) service.execute(context, new ReportUnitRequest("/reports/samples/DataSourceReport", new HashMap JavaDoc()));
213         assertNotNull(result);
214         JasperPrint jasperPrint = result.getJasperPrint();
215         assertNotNull(jasperPrint);
216         List JavaDoc pages = jasperPrint.getPages();
217         assertNotNull(pages);
218         assertTrue(pages.size() > 0);
219     }
220
221     public void testExecuteWithTableModelDS() throws Exception JavaDoc
222     {
223         ReportUnitResult result = (ReportUnitResult) service.execute(context, new ReportUnitRequest("/reports/samples/DataSourceTableModel", new HashMap JavaDoc()));
224         assertNotNull(result);
225         JasperPrint jasperPrint = result.getJasperPrint();
226         assertNotNull(jasperPrint);
227         List JavaDoc pages = jasperPrint.getPages();
228         assertNotNull(pages);
229         assertTrue(pages.size() > 0);
230     }
231     
232     public void testRemoveCustomDataSourceResources() {
233         deleteResource("/reports/samples/DataSourceReport");
234         deleteResource("/reports/samples/DataSourceTableModel");
235         deleteResource("/reports/samples/DataSourceReportTemplate");
236         deleteResource("/datasources/CustomDSFromBean");
237         deleteResource("/datasources/CustomTableModelDS");
238     }
239     
240     public void deleteResource(String JavaDoc uri) {
241         Resource result = repository.getResource(null, uri);
242         assertNotNull(result);
243         repository.deleteResource(null, uri);
244     }
245     
246 }
247
Popular Tags