iReport Ultimate Guide - Nimsoft Library

iReport Ultimate Guide - Nimsoft Library iReport Ultimate Guide - Nimsoft Library

13.07.2015 Views

iReport Ultimate GuideCode Example 18-1JRDefaultScriptlet, continued{public JRDefaultScriptlet() { }}public void beforeReportInit() throws JRScriptletException{}public void afterReportInit() throws JRScriptletException{}public void beforePageInit() throws JRScriptletException{}public void afterPageInit() throws JRScriptletException{}public void beforeColumnInit() throws JRScriptletException{}public void afterColumnInit() throws JRScriptletException{}public void beforeGroupInit(String groupName) throws JRScriptletException{}public void afterGroupInit(String groupName) throws JRScriptletException{}public void beforeDetailEval() throws JRScriptletException{}public void afterDetailEval() throws JRScriptletException{}}As you can see, the class is formed by a set of methods with a name composed by using the keyword after or beforefollowed by an event or action name (for example, DetailEval and PageInit). These methods map all of the events thatcan be handled by a scriptlet, which are summarized in Table 18-1.332

ScriptletsTable 18-1Report eventsEvent/MethodBefore Report InitAfter Report InitBefore Page InitAfter Page InitBefore Column InitAfter Column InitBefore Group x InitAfter Group x InitBefore Detail EvalAfter Detail EvalDescriptionThis is called before the report initialization (that is, before all variables areinitialized).This is called after all variables are initialized.This is called when a new page is created and before all variables having resettype Page are initialized.This is called when a new page is created and after all variables having resettype Page are initialized.This is called when a new column is created, before all variables having resettype Column are initialized; this event is not generated if the columns are filledhorizontally.This is called when a new column is created, after all variables having resettype Column are initialized; this event is not generated if the columns are filledhorizontally.This is called when a new group x is created and before all variables havingreset type Group and group name x are initialized.This is called when a new group x is created and after all variables havingreset type Group and group name x are initialized.This is called before a Detail band is printed and all variables are newlyevaluated.This is called after a Detail band is printed and all variables are evaluated forthe current record.Inside the scriptlet, you can refer to all of the fields, variables, and parameters using the following maps(java.util.HashMap) defined as class attributes:• fieldsMap• variablesMap• parametersMapThe groups (if present in the report) can be accessed through the attribute groups, which is an array of JRFillGroup.18.2 Creating a Simple ScriptletLike all the Java classes, to create a scriptlet you just need a simple text editor and a Java compiler. But we are not all hard coredevelopers, so let’s assume we are using an IDE (Integrated Development Environment) to do this. My favorite IDE isNetBeans (http://www.netbeans.org), but the instructions shown here should be generic enough to understand how to do thesame using another IDE.The example scriptlet I’m going to show you calculates the time taken to fill each page and prints the time in the page footer.We will store the system time when a new page is created using the method afterPageInit and provide a method to get themilliseconds past from that start time. We will then show how long the page took to be rendered by printing this value in atextfield with evaluation time Page. This is a good example of a scriptlet that can be used to profile a report execution, as well.We will start with a new Java project. If you are working on a Java application the project could be the same. In NetBeans youcreate a new project by selecting File → New Project. The window in Figure 18-1 pops up.333

<strong>iReport</strong> <strong>Ultimate</strong> <strong>Guide</strong>Code Example 18-1JRDefaultScriptlet, continued{public JRDefaultScriptlet() { }}public void beforeReportInit() throws JRScriptletException{}public void afterReportInit() throws JRScriptletException{}public void beforePageInit() throws JRScriptletException{}public void afterPageInit() throws JRScriptletException{}public void beforeColumnInit() throws JRScriptletException{}public void afterColumnInit() throws JRScriptletException{}public void beforeGroupInit(String groupName) throws JRScriptletException{}public void afterGroupInit(String groupName) throws JRScriptletException{}public void beforeDetailEval() throws JRScriptletException{}public void afterDetailEval() throws JRScriptletException{}}As you can see, the class is formed by a set of methods with a name composed by using the keyword after or beforefollowed by an event or action name (for example, DetailEval and PageInit). These methods map all of the events thatcan be handled by a scriptlet, which are summarized in Table 18-1.332

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!