1 21 22 package com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl; 23 24 import java.util.HashMap ; 25 import java.util.List ; 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 54 public class EngineServiceImplTest extends TestCase 55 { 56 private EngineService service; 57 private RepositoryService repository; 58 private ExecutionContext context; 59 60 public EngineServiceImplTest(String name){ 61 super(name); 62 } 63 64 65 protected void setUp() throws Exception { 66 ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext( 67 new String []{"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 { 76 service.release(); 77 } 78 79 80 public static void main(String [] args) { 81 TestRunner.run(EngineServiceImplTest.class); 82 } 83 84 87 public void testExecute() throws Exception 88 { 89 ReportUnitResult result = (ReportUnitResult) service.execute(context, new ReportUnitRequest("/reports/samples/SalesByMonth", new HashMap ())); 90 assertNotNull(result); 91 JasperPrint jasperPrint = result.getJasperPrint(); 92 assertNotNull(jasperPrint); 93 List pages = jasperPrint.getPages(); 94 assertNotNull(pages); 95 assertTrue(pages.size() > 0); 96 } 97 98 101 public void testGetResources() throws Exception 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 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 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 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 211 { 212 ReportUnitResult result = (ReportUnitResult) service.execute(context, new ReportUnitRequest("/reports/samples/DataSourceReport", new HashMap ())); 213 assertNotNull(result); 214 JasperPrint jasperPrint = result.getJasperPrint(); 215 assertNotNull(jasperPrint); 216 List pages = jasperPrint.getPages(); 217 assertNotNull(pages); 218 assertTrue(pages.size() > 0); 219 } 220 221 public void testExecuteWithTableModelDS() throws Exception 222 { 223 ReportUnitResult result = (ReportUnitResult) service.execute(context, new ReportUnitRequest("/reports/samples/DataSourceTableModel", new HashMap ())); 224 assertNotNull(result); 225 JasperPrint jasperPrint = result.getJasperPrint(); 226 assertNotNull(jasperPrint); 227 List 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 uri) { 241 Resource result = repository.getResource(null, uri); 242 assertNotNull(result); 243 repository.deleteResource(null, uri); 244 } 245 246 } 247 | Popular Tags |