Pentaho Reporting 3.5 for Java Developers- P8

Chia sẻ: Thanh Cong | Ngày: | Loại File: PDF | Số trang:33

lượt xem

Pentaho Reporting 3.5 for Java Developers- P8

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'pentaho reporting 3.5 for java developers- p8', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:

Nội dung Text: Pentaho Reporting 3.5 for Java Developers- P8

  1. Chapter 12 You'll need to update the Ant file with a new runmeta target, as well as a new path reference. Add the following XML to the chapter11/build.xml file: Now type ant runmeta on the command line. The PDF file metadata_table.pdf will be created in the root of the project. Open the PDF. Your results should look something like this: Note that the background bg-color attribute is taking effect, but the report header label is still not updating. Before this will work, you need to map the exampleLabel metadata attribute to the reporting engine's label attribute. To do this, you'll need to create a mapping between the two domains. Create the file src/dataschema.xml and add the following XML: [ 333 ]
  2. Additional Pentaho Reporting Topics This defines an indirect mapping from exampleLabel to the reporting engine's label attribute. Finally, you'll need to tell the reporting engine about this data schema file. Add the following property to, which already exists in the chapter11/src folder: # specify the data schema location org.pentaho.reporting.engine.classic.core.DataSchemaDefinition. exampleDomain=res://dataschema.xml The reporting engine looks for all properties that begin with org.pentaho. reporting.engine.classic.core.DataSchemaDefinition, loading all the mappings defined in those files. Now re-run the report by typing ant runmeta, and re-open the metadata_table.pdf file. Your report should now look like this: The report is now fully utilizing the attributes defined in the DefaultMetaTableModel implementation. [ 334 ]
  3. Chapter 12 Working with Pentaho Reporting's output layer One of the core APIs deep within Pentaho Reporting is the set of output layer interfaces. These interfaces, along with abstract class implementations, make it possible to write your own custom output generator. In this section, you'll discover the main interfaces within the API, learn about some of the key classes involved in rendering a report, as well as walk through a very simple example demonstrating how to render a report to your own custom format. The OutputProcessor API is used during the last stage in general report processing. Before the calls are made to the OutputProcessor API, a ReportProcessor implementation generates an internal logical model of the report to be rendered. This includes executing all the functions defined, calculating all the locations and sizes of individual components within the report, and in the case of a paged report, determining which content goes on what page. Once a ReportProcessor has completed the internal calculations necessary for rendering, it then proceeds to making calls into the provided OutputProcessor implementation. When implementing your own output layer, you must implement the OutputProcessor interface, as well as the OutputProcessorMetaData interface. The OutputProcessor and OutputProcessorMetaData interfaces are located in the org.pentaho.reporting.engine.classic.core.layout.output package. The OutputProcessorMetaData interface The OutputProcessorMetaData interface provides a general metadata interface for the OutputProcessor, including which features and content are supported, as well as providing access to the report configuration along with access to font metric details. The class AbstractOutputProcessorMetaData is available, which implements the common set of functionality across the various output implementations. As an example, the Excel implementation of OutputProcessorMetaData configures the various features of Excel rendering based on configuration properties, while the PDF implementation also overrides some of the default font behavior for translation into the PDF format. [ 335 ]
  4. Additional Pentaho Reporting Topics The OutputProcessor interface The OutputProcessor interface defines callbacks so that the ReportProcessor may trigger rendering of the output. During the processing of a report and after it is complete, a call is made to the processContent method for each logical page generated by the Renderer implementation, described later. The class AbstractOutputProcessor is available, which implements common state management tasks. Two subclass implementations— AbstractPageableOutputProcessor and AbstractTableOutputProcessor— are available for the different output rendering types. Pageable outputs include documents such as PDF, while table outputs include documents such as Excel and HTML. The AbstractPageableOutputProcessor traverses the logical page, providing direct access to each physical page within the page grid. The AbstractTableOutputProcessor provides a flattened two dimensional structure of the report, useful for rendering cell based formats. The AbstractTableOutputProcessor also implements the IterativeOutputProcessor interface, an extension to the OutputProcessor interface, which allows for iterative rendering. RenderNode Document Object Model The OutputProcessor receives the report model in a RenderNode Document Object Model, which it translates to a specific output. The RenderNode class, located in the org.pentaho.reporting.engine.classic.core.layout.model package, is the base of the RenderNode DOM and defines a set of core attributes. Child classes add additional metadata. For instance, the RenderBox class provides a linked list of children, and acts as a container object. The RenderableText and SpacerRenderNode contain the text-related information within a report, while the RenderableReplacedContentBox contains references to content such as images and Java Shape and Drawable objects. The RenderNode objects are generated during the rendering process. The Renderer implementations within the reporting engine manage the creation of the RenderNode DOM. The two primary rendering implementations are PageableRenderer, which manages generating individual pages, and StreamingRenderer, which ignores pages. [ 336 ]
  5. Chapter 12 Updating Report Designer To expose a custom output format in Report Designer, you must implement a DesignerContextAction located in the org.pentaho.reporting.designer.core. actions package of Report Designer. The org.pentaho.reporting.designer. package contains the default implementations as examples. These examples contain the user interface and report generation code, allowing previews in the various supported formats. To add the action to Report Designer's menu system, edit the designer-frame.xul file located in the org.pentaho.reporting.designer.core.xul package. Find the file-preview-popup menu pop up element in the XUL file, and add a new menu item with reference to the action class name. Under the covers, the Report Designer uses its own OutputProcessor, the DesignerOutputProcessor, which only works with the logical page model, for rendering of the report in design mode. This guarantees compatibility between the Report Designer and the reporting engine, reusing the same layout algorithms for both rendering and designing a report. Example: PojoObject output In this example, you'll implement your own OutputProcessor and OutputProcessorMetaData classes that will generate a list of PojoObject instances, containing their text and location within the report. To keep the example simple, you'll write a main method within a PojoUtil class that executes the simple report metadata_table.prpt defined in the earlier MetaTableModel example. First, create the PojoOutputMetaData class, which must provide an export descriptor. This descriptor is accessible by report functions, allowing the report to know which context it is rendering in. The expected syntax of the export descriptor is [output class]/[output type]/[output sub type]. Create the file chapter11/src/ with the following source code: import org.pentaho.reporting.engine.classic.core.layout.output. AbstractOutputProcessorMetaData; import org.pentaho.reporting.libraries.base.config.Configuration; public class PojoOutputMetaData extends AbstractOutputProcessorMetaData { // Define a basic constructor that calls its super. public PojoOutputMetaData(final Configuration configuration) { super(configuration); } [ 337 ]
  6. Additional Pentaho Reporting Topics // Provide an export descriptor. public String getExportDescriptor() { return "stream/pojo"; } } Now you'll begin to build the PojoOutputProcessor class. This class implements the OutputProcessor interface, and manages the creation of the list of plain old Java objects, which will contain an x and y coordinate, along with the text associated with that location. Comments have been placed in the source that describe the inner workings of this very simple example. Create the file chapter11/src/ with the following source code: import java.util.ArrayList; import java.util.List; import org.pentaho.reporting.engine.classic.core.layout.model. LogicalPageBox; import org.pentaho.reporting.engine.classic.core.layout.model. ParagraphPoolBox; import org.pentaho.reporting.engine.classic.core.layout.model. RenderBox; import org.pentaho.reporting.engine.classic.core.layout.model. RenderNode; import org.pentaho.reporting.engine.classic.core.layout.model. RenderableText; import org.pentaho.reporting.engine.classic.core.layout.model. SpacerRenderNode; import org.pentaho.reporting.engine.classic.core.layout.output. AbstractOutputProcessor; import org.pentaho.reporting.engine.classic.core.layout.output. ContentProcessingException; import org.pentaho.reporting.engine.classic.core.layout.output. LogicalPageKey; import org.pentaho.reporting.engine.classic.core.layout.output. OutputProcessorMetaData; import org.pentaho.reporting.libraries.base.config.Configuration; // The PojoOutputProcessor extends the // AbstractOutputProcessor, which manages the // processing state. public class PojoOutputProcessor extends AbstractOutputProcessor { // Define a pojo object which you'll populate when // rendering the report public static class PojoObject { // Define the x location of the PojoObject. [ 338 ]
  7. Chapter 12 int x; // Define the y location of the PojoObject. int y; // Define the text extracted during report rendering. String text = ""; } // Define a reference to the PojoOutputMetaData class. PojoOutputMetaData metadata; // Define a list of the pojo objects you're about to generate. List pojoObjects = new ArrayList(); // The constructor creates a new metadata object. public PojoOutputProcessor(final Configuration configuration) { metadata = new PojoOutputMetaData(configuration); } // The processPageContent callback renders a report page from // a LogicalPageBox. This method is called by // the ReportProcessor when the page content is ready // for rendering. protected void processPageContent(LogicalPageKey logicalPageKey, LogicalPageBox logicalPage) throws ContentProcessingException { // Call into the recursive handle method, which // traverses the logical page DOM. handle(logicalPage); } // The handle method loops through the child nodes of // a specified RenderBox, either recursing into child nodes // or rendering ParagraphPoolBox nodes. public void handle(RenderBox box) { RenderNode node = box.getFirstChild(); while (node != null) { if (node instanceof ParagraphPoolBox) { // The ParagraphPoolBox contains the text within a report. ParagraphPoolBox ppb = (ParagraphPoolBox)node; handleParagraph(ppb); } if (node instanceof RenderBox) { // Recurse into the DOM. [ 339 ]
  8. Additional Pentaho Reporting Topics handle((RenderBox)node); } node = node.getNext(); } } // The handleParagraph method generates a PojoObject based // on a ParagraphPoolBox, which contains text and spacer // nodes. public void handleParagraph(ParagraphPoolBox box) { RenderNode node = box.getFirstChild(); // Create a PojoObject with x and y coordinates. PojoObject object = new PojoObject(); object.x = (int)node.getX() / 1000; object.y = (int)node.getY() / 1000; // Populate the PojoObject's text appropriately. while (node != null) { if (node instanceof RenderableText) { object.text += ((RenderableText)node). getRawText(); } else if (node instanceof SpacerRenderNode) { for (int i = 0; i < ((SpacerRenderNode)node). getSpaceCount(); i++) { object.text += " "; } } node = node.getNext(); } // Add the PojoObject to the list. pojoObjects.add(object); } // Return a reference to the custom OutputProcessorMetaData // instance. public OutputProcessorMetaData getMetaData() { return metadata; } // Allow access to the generated PojoObject list. public List getPojoObjects() { return pojoObjects; } } [ 340 ]
  9. Chapter 12 The final class you must define is PojoUtil. This class provides a helper method for generating the output, binding all the necessary report components together. This class also contains an example main method, which prints out the final object model to the command line. Create the file src/ with the following source code: import; import; import java.util.List; import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot; import org.pentaho.reporting.engine.classic.core.MasterReport; import org.pentaho.reporting.engine.classic.core. ReportProcessingException; import org.pentaho.reporting.engine.classic.core.modules.output.table. base.StreamReportProcessor; import org.pentaho.reporting.libraries.resourceloader.Resource; import org.pentaho.reporting.libraries.resourceloader.ResourceManager; public class PojoUtil { // The createPojoReport method generates a PojoObject // list from a report. public static List createPojoReport(final MasterReport report) throws ReportProcessingException, IOException { // Instantiate a target PojoOutputProcessor class, // passing in the report configuration. final PojoOutputProcessor target = new PojoOutputProcessor(report.getConfiguration()); // Instantiate a StreamReportProcessor with references // to the report and the OutputProcessor. final StreamReportProcessor reportProcessor = new StreamReportProcessor(report, target); // Process the report. reportProcessor.processReport(); // Close the report after processing. reportProcessor.close(); // Return a list of the plain old Java objects // generated from this report. return target.getPojoObjects(); } // The main method generates a plain old Java object // output from the simple report defined earlier. [ 341 ]
  10. Additional Pentaho Reporting Topics public static void main(final String[] args) throws Exception { // Boot the reporting engine. ClassicEngineBoot.getInstance().start(); // Load the report PRPT file. ResourceManager manager = new ResourceManager(); manager.registerDefaults(); Resource res = manager.createDirectly( new URL("file:data/metadata_table.prpt"), MasterReport.class); MasterReport report = (MasterReport) res.getResource(); // Generate the PojoObject list. List objs = PojoUtil.createPojoReport(report); // Write the PojoObject list to System.out as an example. for (PojoOutputProcessor.PojoObject obj : objs) { System.out.println("" + obj.x + "," + obj.y + ": " + obj.text); } } } You're now ready to build and run the simple PojoOutputProcessor example. Add the following target to the chapter11/build.xml Ant file: Type ant runpojo to see the results. You should see a printout that looks something like this: In this example, you created the simplest of output formats, the plain old Java object OutputProcessor, demonstrating the implementation and use of an OutputProcessor within the reporting engine. [ 342 ]
  11. Chapter 12 The Pentaho community—getting help and contributing As an open source project, Pentaho Reporting has a community of people and organizations who contribute through answering questions, contributing translations, filing and fixing bugs, writing documentation, and of course, contributing code. To make sure you can find what you need to engage the Pentaho Reporting community. The following is the list of online places and tools to help you get started. Asking questions, helping others Today, there are two primary methods of communication within the Pentaho Reporting community. The first and most widely used are the Pentaho Reporting forums. These forums are located at under the main category Reporting. Thomas Morgner, the founder and primary architect of Pentaho Reporting, also known as Taqua in the forums, has over 4,800 posts and is always helping out folks with their questions. You can search and read forum discussions, or sign up for an account and ask your own questions. Another method of communication is Pentaho's IRC channel, set up by Pentaho community members. This channel is located on the server, as channel ##pentaho. A large number of active Pentaho community members are available to answer technical questions. Online documentation Pentaho hosts a wiki, which contains community documentation for Pentaho's various projects. You can find the wiki at, which contains links to Pentaho Reporting documentation, as well as tech tips that walk through specific use cases. As a wiki, community members may contribute their own tech tips or documentation around any of the Pentaho projects. Pentaho also hosts a sub-domain dedicated to the Pentaho Reporting community at, which contains information about the latest releases and download links. Also, Javadoc for the latest versions of Pentaho's open source projects is hosted online at Pentaho Reporting Javadoc can be found at Submitting bugs and viewing backlogs To submit a bug, or view Pentaho Reporting's backlog, you can visit Pentaho's JIRA bug tracking system at [ 343 ]
  12. Additional Pentaho Reporting Topics Pentaho Reporting is broken out into two main projects—the Pentaho Reporting Engine and the Pentaho Report Designer. Each project contains a Road Map link, containing a list of prioritized activities that Pentaho and the open source community are working on. Contributing code If you'd like to add a new feature to Pentaho Reporting or fix a bug, the source code for the reporting engine and Report Designer is easily accessible. Pentaho hosts the reporting project's SVN server at The reporting engine's core source code is located in the engines/classic sub-folder, and the Report Designer is located in the tools/report-designer sub-folder. By going to, you can browse the source and version changes using your browser. Once you've made your change, you can submit your patch to Pentaho's JIRA system. If you become a regular contributor, often Thomas will grant you direct commit access to SVN. One of the many types of contributions Pentaho receives includes translated message bundles. These message bundles are located within the reporting projects, and can be found by searching for files within each project. For instance, there are many of these files within the engine-core project. Enterprise support Pentaho offers an Enterprise Edition of Pentaho Reporting, which includes direct customer support, as well as additional functionality such as enterprise auditing within Pentaho's Business Intelligence Server. If you are working within an enterprise and would like to purchase an enterprise license, you can contact Pentaho directly by visiting Subscription customers have access to Pentaho’s Knowledge Base, which contains many articles and enterprise documentation on all of Pentaho's products. Pentaho also offers online and in-person training courses, which include hands on tutorials of the Pentaho Report Designer, as well as the Pentaho Business Intelligence Server. Pentaho works with a large set of partners to offer consulting, which may include everything from setting up your reporting server to writing custom functionality that your business requires. [ 344 ]
  13. Chapter 12 Summary In this chapter, you learned about a broad range of topics. You began with an introduction to Pentaho's open source Business Intelligence Server, which allows organizations to publish, schedule, and build reports from a web application. You learned about action sequences for emailing and bursting reports, along with learning where to set up database connections and add users to the BI Server. You also were introduced to mobile reporting, which included a reference to Pentaho's iPhone BI Extension. Also in this chapter, you discovered Pentaho Reporting's data source metadata capabilities by implementing your own MetaTableModel class. You were introduced to Pentaho Reporting's output rendering API through a simple plain old Java object output example. Finally, you learned more about the Pentaho Reporting community, including where to go to ask questions, file bugs, and how to contribute back to Pentaho's open source reporting projects. Thank you for taking the time to read this book. I hope you learned a lot along the way, and are excited about using Pentaho Reporting to solve your business reporting needs! [ 345 ]
  14. Index Symbols ASIN(Value)function 201 ATAN2(Value1;Value2) function 201 ^ operator 198 ATAN(Value) function 201 - operator 198 attribute XML element != operator 198 bundle-name attribute 293 * operator 198 computed attribute 293 / operator 198 deprecated attribute 293 & operator 199 design-time-value attribute 293 % operator 199 hidden attribute 293 + operator 198 mandatory attribute 292 < operator 198 name attribute 292 operator 198 propertyEditor attribute 293 >= operator 198 value-role attribute 293 value-type attribute 293 A AVERAGEA(Value1; Value2; …) function 201 ABS(Value) function 201 AVERAGE(Value1; Value2; ...) function 201 ACOSH(Value) function 201 ACOS(Value) function 201 ad hoc reporting tool 316 B advanced functions BandedMDXDataFactory, DataFactory Indirect Lookup 193 implementations lookup 192 configuring 147 Message format 192 example 147-150 Open formula 193 setDriver method 147 Resource bundle lookup 193 setProperty method 147 Resource Message Format 192 setURL method 147 advanced group, rendering property bands dependencyLevel 157 about 88 AND(Expression1; Expression2; ...) attribute property 93 function 200 attribute property, hide-on-canvas 93 append-body-footer property 239 background color properties 92 append-body property 239 bandscommon properties 89 append-header property 239 border styles 91
  15. common properties 88- 92 bottom-left-width 91 Details Body 94 bottom-right-height 91 Excel properties 92 bottom-right-width 91 foreground color properties 92 bottom-size 91 Group Footer 94 bottom-style 91 Group Header 94 break-color 91 padding styles 91 break-size 91 page behavior properties 92 break-style 91 Page Footer 93 left-color 91 Page Header 93 left-size 91 Report Footer 93 right-size 91 Report Header 93 right-style 91 style, inheriting 93 top-color 91 Watermark band 94 top-left-height 91 bar chart, supported charts top-left-width 91 bar-borders property 164 top-right-height 91 example 164 top-right-width 91 max-bar-width property 164 top-size 91 use 163 top-style 91 bar line chart, supported charts bubble chart, supported charts bar-data-source property 172 example 174, 175 ctgry-tick-font property 173 max-bubble-size property 174 example 173 z-value-column property 174 line-data-source property 172 Business Intelligence server. See BI server lines-label-font property 173 line-series-color property 173 C line-tick-fmt property 173 line-tick-font property 173 category series rendering property, y2-axis-title 173 supported charts Bean-Scripting Framework (BSF) general group, gridlines 157 Expression 195 options group, stacked 157 Bean-Scripting-Host (BSH) Expression 196 X-Axis group, date-format 158 BeanShell expression, implementing X-Axis group, label-rotation 158 about 290 X-Axis group, numeric-format 158 Bean-Scripting-Host (BSH) expression X-Axis group, show-label 158 example 290 X-Axis group, text-format 158 BI server X-Axis group, x-axis-label-rotation 158 about 305 X-Axis group, x-axis-label-width 158 configuring 318 X-Axis group, x-axis-title 158 downloading 306 X-Axis group, x-font 158 installing 306 Y-Axis group, enable-log-axis 159 report bursting feature 310- 313 Y-Axis group, label-rotation 158 report emailing feature 310- 313 Y-Axis group, log-format 159 SampleData data source 315 Y-Axis group, y-axis-title 158 border styles, bands Y-Axis group, y-font 158 bottom-color 91 Y-Axis group,y-incl-0 159 bottom-left-height 91 [ 348 ]
  16. Y-Axis group, y-min 159 standard report, creating 241 Y-Axis group, y-max 159 sub-reports 242 Y-Axis group, y-sticky0 159 summary report 244 Y-Axis group, y-tick-interval 158 datadefinition.xml file, serialized report Y-Axis group, y-tick font 159 format Y-Axis group, y-tick-fmt-str 159 about 250 Cascading Style Sheets. See CSS data source element, limit attribute 252 CHOOSE(Index; Value1; Value2; ...) data source element, ref attribute 252 function 204 data source element, report-query class property 239 attribute 252 Comma-separated values (CSV) 13 data source element, timeout attribute 252 common functions example 253 Open formula 186 expression, class attribute 252 Page 186 expression, deplevel attribute 252 Page of Page 186 expression, formulal attribute 252 Total Page Count 186 expression, initial attribute 252 common text properties, elements expression, name attribute 252 about 95 expression, property 252 font style properties 96 list parameters 250, 251 text spacing properties 97 list parameters, allow-multi-selection text spacing properties, character 97 attribute 251 text spacing properties, character-spacing list parameters, key-column attribute 251 97 list parameters, query attribute 251 text spacing properties, preferred-character list parameters, strict-values attribute 251 97 list parameters, value-column attribute 251 text spacing properties, word 97 list parameters, value-formula attribute 251 text style properties 96 format plain parameters 250 COS(Value1) function 201 plain parameters, default-value attribute COUNTA(Value1; Value2; ...) function 204 251 COUNTBLANK(Reference) function 204 plain parameters, mandatory attribute 251 COUNT(Value1; Value2; ...) function 204 plain parameters, name attribute 251 cross tabs plain parameters, type attribute 251 about 219 sub-reports, export-parameter 251 adding 220 sub-reports, import-parameter 251 MDX example 220- 225 DataFactory implementations multiple rows and column, example 227, BandedMDXDataFactory 146 228 CompoundDataFactory 151 SQL example 226 data, accessing through report 151 using 219 DenormalizedMDXDataFactory 150 CSS 15 HQLDataFactory 130 JndiConnectionProvider 124 D KettleDataFactory 141 NamedStaticDataFactory 120 dashboard example, interactive reports PmdDataFactory 135 about 243 SQLReportDataFactory 123 interactive elements, adding 245-248 SQLReportDataFactory, example 126, 127 master report, creating 242 XPathDataFactory 127 [ 349 ]
  17. XPathDataFactory, creating 128 DAY(Date) 199 XPathDataFactory, example 129 DAYS(Date1; Date2) 199 XQJReportDataFactory 151 HOUR(Time) 199 DataFactory interface, Pentaho Reporting MINUTE(Time) 199 Engine Data API MONTH(Date) 199 cancelRunningQuery: void NOW() 199 cancelRunningQuery() method 117 SECOND(Time) 199 canExecuteQuery method 117 TIME(Hour; Minute; Second) 200 close method 117 TIMEVALUE(Text) 200 derive method 116 TODAY() 200 getQueryNames method 117 WEEKDAY(Date) 200 open method 116 YEAR(Date) 200 queryData method 116 DATEVALUE function 199 dataset property, supported charts DATEVALUE(Text) function 199 dependencyLevel 161 DAY(Date) function 199 group-by 161 DAYS(Date1; Date2) function 199 name 160, 172 Default Constructor method 286 reset-group 161 dependency.core.dependency-type property series-by-field 160 278 series-by-value 160 dependency.core.module data source metadata, Pentaho Reporting property 278 about 320 dependency.core.version.major attributes, using in reports 323, 324 property 278 DefaultMetaTableModel 325- 331 dependency.core.version.minor property external metadata, direct-mapping 322 278 external metadata, global-mapping 322 dependency.core.version.patchlevel external metadata, indirect-mapping 322 property 278 external metadata, mapping 321 deprecated property 294 MetaTableModel API 320, 321 description property 294, 286 MetaTableModel, implementing 324 display-name property 286, 294 data types, formula downloading Array 198 Pentaho Report Designer 28 date 198 DateTime 198 E error 197 logical 197 ElectroBarn inventory report numeric 197 about 56 text 197 column headings, aligning 61 time 198 data source, configuring 56 Date data type 198 data source, errors 57 DATEDIF function 199 Details band, defining 61 DATE function 199 End of the Day Cashier Balance report, DateTime data type 198 creating 66 date time function, formula functions Group Footer, defining 60-62 DATE 199 Group Header, defining 60, 61 DATEDIF 199 incorporating, into J2EE environment 64-66 DATEVALUE 199 pie chart, adding 63 [ 350 ]
  18. Report Footer, creating 59 resource-message element 100 Report Footer, defining 62 simple-barcodes element 105 Report Header, creating 59 single element, aligning 108 SQL query, creating 57, 58 size property 95 ElectroBarn inventory report, incorporating sub-report element 103 into J2EE environment 64 survey-scale element 103 report selection, adding to servlet 64 text-field element 98 servlet, compiling 65, 66 vertical-line element 102 servlet, deploying 65, 66 Z ordering 108 ElectroBarn invoice example element XML element, attributes about 76 bundle-name attribute 292 data source query, configuring 76, 77 container attribute 292 Details band, defining 80 deprecated attribute 292 Group Footer, defining 81 hidden attribute 292 Group Header, defining 78 implementation attribute 292 incorporating, in J2EE environment 82, 83 name attribute 292 Page Footer, defining 81 End of the Day Cashier Balance report sub-report, defining 78-80 about 66 Element class 268 data source query, configuring 68, 69 elements Details band, defining 69 additional visual indicators 107, 108 group bands, defining 70 band element 103 incorporating, into J2EE environment 74, 76 bar-sparkline element 104 input parameter, configuring 66 chart element 101 main group header, defining 71-74 common text properties 95-98 Report Header, creating 69 content-field (dynamic image) element 101 Error data type 197 content (static image) element 101 event callbacks, interactive reports date-field element 99 Java interfaces 229 ellipse element 102 ReportActionListener 229 Excel properties 98 ReportHyperlinkListener 229 Group of elements 108 ReportMouseListener 231 guide lines 106, 107 retrieving 229, 230 horizontal-line element 102 EVEN(Value) function 201 label element 98 EXACT(Text1; Text2) function 202 line-sparkline element 104 Excel properties, bands link properties 98 format-override 92 message element 98, 99 formula-override 92 moving 108 sheet name 92 name property 95 wrap-text-override 92 number-field element 99 expression element, attributes padding and border properties 95 bundlename 277 Paste Formatting feature 109 class 277 pie-sparkline element 104 hidden 277 position property 95 result 277 rectangle element 102 expressions, implementing resource-field element 100 AbstractExpression class, defining 276 resource-label element 100 display name property 276 [ 351 ]
  19. example 279- 284 expression element, attributes 277 properties 185 grouping property 276 report 187 metadata, defining 277 running 190 module properties, defining 278, 279 summary 188 EXP(Value1) function 201 script 195 functions, formula F date time functions 199, 200 logical functions 200 FALSE() function 200 mathematical functions 201, 202 FIND(Search; Text[; Index]) function 202 miscellaneous functions 204, 205 formula expression 250 report specific functions 204 formula function text functions 202, 203 date time functions 199 logical functions 200 G mathematical functions 201 text functions 202 general group, rendering property formula function, implementing 3-D 156 about 285 anati-alias 156 Default Constructor method 286 bg-color 156 Description property 286 bg-image 156 display-name property 286 border-color 156 FunctionCategory getCategory() method plot-bg-alpha 156 286 plot-border 156 int getParameterCount() method 286 plot-fg-alpha 156 parameter..description property 286 show border 156 parameter..display-name property 286 Group Count function 188 public boolean isParameterMandatory(int grouping.ordinal property 294 position) method 286 grouping property 294 public Type getValueType() method 286 regex formula functio example 287- 290 H Type getParameterType(int position) method 286 HASCHANGED(Text) function 204 formula, working with HOUR (time) function 199 data types 197 HQLDataFactory, DataFactory functions 199 implementations operators 198, 199 DefaultSessionProvider 131 syntax 197 example 132- 134 FunctionCategory getCategory() method interface 130 286 StaticSessionProvider 131 functions HSQLDB advanced 192 about 54 common 186 configuring, with ElectroBarn Schema 54 image 194 HTML implementing 285 interactive reports 239 [ 352 ]
Đồng bộ tài khoản