1 21 package com.jaspersoft.jasperserver.war.control; 22 23 import javax.servlet.ServletException ; 24 import javax.servlet.http.HttpServletRequest ; 25 import javax.servlet.http.HttpServletResponse ; 26 27 import org.springframework.validation.BindException; 28 import org.springframework.web.bind.ServletRequestDataBinder; 29 import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor; 30 import org.springframework.web.servlet.ModelAndView; 31 import org.springframework.web.servlet.mvc.SimpleFormController; 32 33 import com.jaspersoft.jasperserver.api.common.domain.impl.ExecutionContextImpl; 34 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource; 35 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceLookup; 36 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService; 37 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit; 38 import com.jaspersoft.jasperserver.api.metadata.view.domain.FilterCriteria; 39 import com.jaspersoft.jasperserver.war.common.JasperServerConst; 40 import com.jaspersoft.jasperserver.war.common.JasperServerUtil; 41 42 48 public class CreateRUController extends SimpleFormController { 49 50 private RepositoryService repository; 52 53 58 public RepositoryService getRepository() { 59 return repository; 60 } 61 62 67 public void setRepository(RepositoryService repository) { 68 this.repository = repository; 69 } 70 71 72 78 protected Object formBackingObject(HttpServletRequest request) { 79 ReportUnit reportUnit = (ReportUnit) repository.newResource(null, ReportUnit.class); 80 FileResource mainReport = (FileResource) repository.newResource(null, FileResource.class); 81 mainReport.setFileType(FileResource.TYPE_JRXML); 82 reportUnit.setMainReport(mainReport); 83 return reportUnit; 84 } 85 86 91 protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, 92 Object command, BindException errors) throws Exception { 93 94 ReportUnit reportUnit = (ReportUnit)command; 95 if(reportUnit == null) 96 throw new Exception (" Insufficient Data. Cannot continue SAVE. "); 97 101 if(!JasperServerUtil.createNewReportUnit(repository, reportUnit)) 102 throw new RuntimeException (" Exception occurred in ReportUnit DB update. Cannot continue SAVE. "); 103 104 107 request.setAttribute("reportUnits", getReportUnits()); 108 return new ModelAndView(getSuccessView()); 109 } 110 111 116 protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) 117 throws ServletException { 118 binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor()); 119 } 120 121 126 private String parseFileNameWOExtn(String fileName) throws Exception { 127 if(fileName == null || fileName.trim().length()==0 || fileName.indexOf(JasperServerConst.FILE_JRXML_EXTN)==-1) { 128 throw new Exception (" Invalid Jrxml filename. Cannot continue SAVE. "); 129 } 130 131 int indx = fileName.lastIndexOf("."); 132 return fileName.substring(0, indx); 133 } 134 135 141 protected ResourceLookup[] getReportUnits() { 142 ExecutionContextImpl executionContext = new ExecutionContextImpl(); 143 ResourceLookup[] reportUnits = repository.findResource(executionContext, FilterCriteria.createFilter(ReportUnit.class)); 144 return reportUnits; 145 } 146 147 } 148 | Popular Tags |