Using Jasper Report in Grails Project

28 May

At first  create a Grails project

Install jasper plugin as below-

–          Ctrl+Alt+G

–          install-plugin jasper

–          Enter

write it in view page-

<g:form controller=”payrollReport”  action=”yearlySalaryRegister” >
<table id=”ySalReg” style=”display:none” width=”415″ border=”0″ >
<tr>
<td width=”96″> </td>
<td width=”19″></td>
<td width=”286″></td>
<td></td>
</tr>
<tr>
<td>Year</td>
<td>:</td>
<td>

<g:textField name=”year” id=”year”  value=”” required=”” maxlength=”4″ style=”width:85px;”></g:textField>

</td>
<td style=”width:175px;color: red;” id=”year5MsgTd” align=”left”></td>
</tr>
<tr>
<td>Department</td>
<td>:</td>
<td>

<g:textField name=”P_DEPARTMENT_ID” id=”P_DEPARTMENT_ID”  value=”” required=””  style=”width:130px;”>

</td>
<td id=”P_DEPARTMENT_ID5MsgTd” style=”color: red” align=”left”></td>
</tr>
<tr>
<td colspan=”4″ align=”center”>&nbsp;</td>
</tr>
<tr>
<td colspan=”4″ align=”center”>
<g:submitButton name=”View Report”  style=”width: 250px” onmouseover=”this.style.color = ‘#E6443C’;this.style.cursor=’pointer’;” onmouseout=”this.style.color = ‘#024697’;this.style.cursor=’pointer'”></g:submitButton>

</td>
</tr>
</table>
</g:form>
—————————————————————————————————————————————————–

write the below code in controller –

import grails.converters.JSON
import org.codehaus.groovy.grails.plugins.jasper.JasperExportFormat
import org.codehaus.groovy.grails.plugins.jasper.JasperReportDef
import org.codehaus.groovy.grails.plugins.jasper.JasperService
import org.springframework.beans.factory.annotation.Autowired

@Autowired
JasperService jasperService

private static final String REPORT_FILE_FORMAT = ‘pdf’
private static final String REPORT_NAME_FIELD = ‘REPORT_NAME’
/*private static final String REPORT_FOLDER = ‘storeInFromSite’*/
private static final String SUB_REPORT_FOLDER = ‘subReport’
private static final String OUTPUT_FILE_NAME = ‘roleReport’
private static final String REPORT_TITLE = ‘Company Name’
private static final String REPORT_DIR = ‘REPORT_DIR’
private static final String SUBREPORT_DIR = ‘SUBREPORT_DIR’
private static final String JASPER_FILE = ‘userRoleDetails.jasper’
private static final String PDF_EXTENSION = “.pdf”
private static final String REPORT = “report”

def yearlySalaryRegister() {
println params

String P_DEPARTMENT_ID= params.P_DEPARTMENT_ID
String P_YEAR= params.year
String P_SALARY_YEAR=P_YEAR
String P_SALARY_AND_ALLOWANCE_MONTH=P_YEAR

String reportDir = Util.getReportDirectory()
String outputFileName = ‘YEARLY_SALARY_REGISTER’ + PDF_EXTENSION

String subReportDir = Util.getReportDirectory()   //+ File.separator + SUB_REPORT_FOLDER
Map reportParams = new LinkedHashMap()
reportParams.put(REPORT_DIR, reportDir)
reportParams.put(SUBREPORT_DIR, reportDir)

reportParams.put(‘P_DEPARTMENT_ID’, P_DEPARTMENT_ID.trim())
reportParams.put(‘P_SALARY_YEAR’, P_SALARY_YEAR.trim())
reportParams.put(‘P_SALARY_AND_ALLOWANCE_MONTH’, P_SALARY_AND_ALLOWANCE_MONTH)

JasperReportDef reportDef = new JasperReportDef(name: ‘YEARLY_SALARY_REGISTER.jasper’, fileFormat: JasperExportFormat.PDF_FORMAT,
parameters: reportParams, folder: reportDir)

ByteArrayOutputStream report = jasperService.generateReport(reportDef)
response.contentType = “application/pdf”
response.setHeader(“Content-disposition”, “attachment;filename=”+outputFileName)   //OUTPUT_FILE_NAME+PDF_EXTENSION)
response.outputStream << report.toByteArray()
}

————————————————————————————————————————————————————–

create a Util class as below-

package accounts

import java.text.ParseException
import java.text.SimpleDateFormat
import org.codehaus.groovy.grails.commons.ApplicationHolder

class Util {
private static String REPORT_DIRECTORY = null;
public static String getReportDirectory() {
if (!REPORT_DIRECTORY) {
File reportFolder = ApplicationHolder.application.parentContext.getResource(‘/reports’).file;
REPORT_DIRECTORY = reportFolder.absolutePath;
}
return REPORT_DIRECTORY;
}

}

———————————————————————–

put all report in “report” folder and put the report folder in “\web-app” folder

Leave a comment