Reporting Advertising

     

What Pentaho Reporting can do for you

Current Stable

Previous

In Development

Pentaho Reporting allows you to refine your raw data into visually appealing reports that convey all the information you need to make better decisions and to get your job done faster. The open architecture of the reporting system and our Open-Source nature makes it a breeze to integrate the reporting engine into your existing systems.

Many of the worlds leading enterprises already use our technology to gain a competitive edge. What are you waiting for? Download it now!

Learn more about Pentaho Reporting

Pentaho Reporting 3.8.3

Pentaho Reporting 3.8.2

Pentaho Reporting 4.0.0

Development for this version has just started. Relax, it will take a while. Crosstabs are coming ..

Friday, June 25, 2010

How to work with Advanced SQL/MDX Datasources efficiently

When creating complex reports or even a Guided AdHoc Report you usually need to modify the structure of the report's query. And this inevitably means that you use a Advanced SQL or Mondrian/OLAP4J data-source along with a calculated query.

What is a Advanced Data-Source


An Advanced data-source is a data-source that only configures the connection. Instead of configuring the query at design-time, it tries to interpret the report's query as valid SQL or MDX statement. The value for the query can then be computed at runtime using either a formula or any other expression.

Parameter values are specified via the ${PARAMETERNAME} syntax within the query. Ordinary parametrization in SQL data-sources uses JDBC-PreparedStatements for filling in the parameter values. The JDBC-standard limits this kind of parametrization to pure value replacement, and makes it impossible to replace column names or any other structural element, like adding or changing a ORDER BY clause.

When using a formula to compute the query, those limitations are lifted. Parametrization now happens by doing string concatenation to calculate the SQL statement. This now allows you to inject any SQL fragments into your query at any place and in any fashion you like.

="SELECT * FROM Customers ORDER BY " & [Sorting]


Warning - SQL-Injection: With great powers comes great responsibilities


While this technique is powerful, it is also dangerous: Injecting user-supplied values is commonly known as SQL-Injection and a great way for hackers to enter your server. So make sure that you only use properly validated SQL-fragments.

If you do not validate the input, your users can supply dangerous values for Sorting, like this one:
COLUMN; DELETE FROM TABLE;

which would produce this scary SQL statement
SELECT * FROM Customers ORDER BY COLUMN; DELETE FROM TABLE;

which can delete all rows from your table. (Whether this is successful also depends on your database and JDBC driver. But do you want to take the risk?)

Both the Advanced SQL and Advanced Mondrian/OLAP4J data-sources still allow the Prepared-Statement parametrization in addition to the formula computation. So if you have to parametrize user-supplied values, do it via the classical ${PARAMETERNAME} syntax and only use the formula parametrization with validated parameters.

Designing Reports with Advanced Data-Sources


Inside the Pentaho Report Designer, Advanced SQL-Data-sources do not show field names in the various field pickers. The query is only calculated when the report is run, and thus the design-time environment has not enough information to retrieve data from the data-source. This makes it hard to work with such reports - you always have to remember how your columns are named, which is no fun at all.

But there is a trick! There is always a trick ..

A report can have definitions for both the static value and a formula for the query-attribute at the same time. When the report is executed the formula will be evaluated and the static value will be ignored. At design-time, the Report-Designer only uses the static value and ignores the formula.

Add the Advanced SQL datasource to the report and add the formula for the query-attribute to configure the report's behaviour at runtime. Then add a standard SQL-Datasource (or just a plain Table-Datasource) to the report, configure it with a suitable query that returns columns with the same names and types as the computed query and set the report's static query-attribute to the name of that query. You should now see the columns of the standard data-source at design-time and see the data from the calculated query via the Advanced Datasource when the report runs.

Warning: You have to make sure that the Advanced data-source is positioned after the standard data-source or this trick will fail.

Monday, June 21, 2010

New module: Table-of-Contents for Pentaho Reporting

Gunther asked me: "Thomas, how can we create a table of contents in our reports?"

This is not a new question at all, after all. Generating a table-of-contents has been requested since the old jfree.org days, years before Pentaho came to life. But a gross lack of capabilities in the layouter and the engine itself prevented any serious attempt at that time. But as years passed by, the engine matured, subreports became a reality, the layouter was replaced (several times) and with the Citrus release element-attributes, report-bundles and report-preprocessors became a reality. So it's time to revisit this feature request one more time.

So how do I get the new feature?


The table-of-contents feature is implemented as two extensions modules - one for the reporting engine and one for the report-designer. In addition to that, I had to extend the engine-core in the parser and report data processor to adapt it to the new requirements.

The feature requires at least Pentaho Reporting 3.6.1. It therefore needs either a BI-Server 3.6.0 or a BI-Server 3.5.2 with an upgraded reporting-engine. Simply follow the instructions on how to replace the reporting engine in BI-Server 3.5.2, and you shall be ready to go.

Now download the updated classic-engine-core, extensions-toc and report-designer-extensions-toc. Place the classic-engine-core and the extensions-toc into "pentaho/WEB-INF/lib" on your server and into "report-designer/lib" in your report-designer. Put the "report-designer-extensions-toc" into the "report-designer/lib" directory as well. To update PRD, you could also just grab a CI build of the PRD assembly to get the full product.

How do I use the new Table-of-Contents feature?


When you start the Pentaho Report Designer the next time, you will see a second sub-report icon in the list of available elements. The icon will be labelled "table-of-contents". Just drag it into your report. It behaves like any other subreport, so both banded and inline-mode are available.

However, I do recommend that you use it in banded-mode, as table-of-contents usually span the full page-width anyway and banded subreports are more performant than inline subreports.

You can start designing your table-of-contents like any other subreport by double-clicking on it. The data-source is already preconfigured to show the fields that will be available.

  • "item-title" - a object/text computed by the title-field or title-formula property of the ToC-element.
  • "item-page" - the page the current item was found. If the item spans several pages, the first page is returned.
  • "item-index" - the item-index as text. The index counts the number of group-starts for each defined group. The string looks somewhat like this "2.5.9"
  • "item-index-array" - the item-index as array of Integer values. Perfectly suitable to be printed via the CSVText function or any other expression.
In addition to these static columns, a set of extra columns in the name pattern "column-value-X" are added, where X is a zero-based index of the defined group-values. The columns contain the group's field-value that was read at the time the data was generated.

How do I control what contents are included in the ToC-generation?

The actual generation is carried out by a custom function, which receives its configuration from a bunch of attributes on the "table-of-contents" element. The fields and formulas defined in there are evaluated in the context of the report that contains the table-of-contents element.
  • "group-fields" - Defines both the depth of the data-collection and the fields from where to read the "group-value-X" values. If the group-field given in the array is empty, the field value will be read from the current relational group and in the details-processing, the value will be null. If the "group-fields" list is empty, an automatic mode is activated that collects all groups extracting the group-value from the relational group.
  • "collect-details" - Defines, whether detail items should be included in the data-collection. Be aware that this can easily blow up your memory consumption, as we have to hold the collected items in memory. I would not use this on a "million-rows" report.
  • "title-formula" - Defines a formula that is evaluated when a new item has been collected. The formula will only be evaluated if the title-field is not set. "title-field" - Defines a field in the master-report that will be read for a valid item-title.
  • "index-separator" - Defines the separator text that is used between the index-elements. It defaults to ".".

OK, now I have a table-of-contents and it has a pretty set of index-numbers. But how can I have the same numbers on the items of the real report?

Along with the table-of-contents element, the Pentaho Report Designer now has two new functions to generate index-numbers on the fly whenever needed. The "index-number-generator" produces a Integer-array that can be used in conjunction with formulas and other expressions. The result is the same as the one found in the "index-text-array", with the slight difference that on group-start and group-finished events, the index reflects the level of the current group instead of always showing the full index. So in a one-group report, if used on a field in the group-header, it produces "1", while on the item-band it would produce "1.1". The "index-text-generator" produces the same data as the "index-number-generator", but defaults to a pretty text instead.

How does this magic work?

When the toc-module is active, a new report-preprocessor gets added to the reporting-engine. This processor checks all reports for occurrences of the "table-of-contents" element. If it finds one, it adds a "TocDataGeneratorFunction" to the report and configures the datasources of the "table-of-contents" element by adding a "external-datasource" and sets the query of the report to the name of the data-generator. And finally it sets a import parameter to pass the function result (a table-model) into the table-of-contents subreport. During the data-processing stage, the data-generator will build up the tablemodel with all the rows it encounters. As the function is marked as deep-traversing, it will pass through all subreports to collect its data (make sure the export-parameter are defined properly, so that it can see the subreport data down there). At that stage it will put a 9999 into the page-number column, so that there is at least some data when doing the pagination run later on. During the pagination, the data-generator then replaces the page-number with the real value, so that the content-generator-stage prints the correct values. Warning: Changing values between the pagination and content-generation stages is always dangerous. Always make sure that your table-of-contents report does not change its layout so that it generates more (or less) pages in the content-generation than it did in the pagination stage. Such behaviour will be rewarded with random crashes and other nasty things.

Wednesday, June 16, 2010

How to upgrade Bi-Server 3.5.2 to the latest reporting release

One of the big fat questions lingering in the room with the latest release is (as usual):

Can I upgrade my existing BI-Server installation with the new reporting release?



Short answer: Yes.

With the latest bugfix release of Pentaho Reporting, we also had to upgrade both Kettle and Mondrian to their latest versions to make it run in the BI-Server 3.6.0 release. Due to the massive amount of work that went into Kettle 4.0, many of their APIs changed thus making it impossible to maintain backward compatibility.

Although we would love to see everyone migrate to BI-Server 3.6 immediately, the chances of that happening are fairly slim. Businesses seem to be a bit reluctant to change, once they have everything up and running. Heck, some people still run a 1.x release, which was released three days after the last dinosaurs died.

So how can I upgrade then? What will be the impact of this upgrade?


The upgrade is straight forward and can be done by deleting the following jar-files from the pentaho/WEB-INF/lib directory:
libbase-1.1.5.jar
libdocbundle-1.1.6.jar
libfonts-1.1.5.jar
libformat-1.1.5.jar
libformula-1.1.5.jar
libloader-1.1.5.jar
libpixie-1.1.5.jar
librepository-1.1.5.jar
libserializer-1.1.5.jar
libswing-1.1.5.jar
libxml-1.1.5.jar
pentaho-reporting-engine-classic-core-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-hibernate-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-mondrian-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-olap4j-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-pmd-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-reportdesigner-parser-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-sampledata-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-scripting-3.6.0-GA.jar
pentaho-reporting-engine-classic-extensions-xpath-3.6.0-GA.jar
pentaho-reporting-engine-legacy-charts-3.6.0-GA.jar
pentaho-reporting-engine-legacy-functions-3.6.0-GA.jar
pentaho-reporting-engine-wizard-core-3.6.0-GA.jar

and replacing them with

libbase-1.1.6.jar
libdocbundle-1.1.8.jar
libfonts-1.1.6.jar
libformat-1.1.6.jar
libformula-1.1.7.jar
libformula-ui-1.1.7.jar
libloader-1.1.6.jar
libpixie-1.1.6.jar
librepository-1.1.6.jar
libserializer-1.1.6.jar
libswing-1.1.7.jar
libxml-1.1.7.jar
pentaho-reporting-engine-classic-core-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-hibernate-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-mondrian-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-olap4j-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-pmd-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-reportdesigner-parser-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-sampledata-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-scripting-3.6.1-GA.jar
pentaho-reporting-engine-classic-extensions-xpath-3.6.1-GA.jar
pentaho-reporting-engine-legacy-charts-3.6.1-GA.jar
pentaho-reporting-engine-legacy-functions-3.6.1-GA.jar
pentaho-reporting-engine-wizard-core-3.6.1-GA.jar

Note that the "pentaho-reporting-engine-classic-extensions-kettle" jar remains at version 3.6.0-GA. This ensures that the older Kettle 3.2 is used when running reports with a Kettle datasource.

To make the most of this upgrade, I also recommend to add a few new settings to the "pentaho/WEB-INF/classes/classic-engine.properties" file:
#
# These settings control how pagination states are retained in the reporting
# engine. For the server, it is safe to scale down the number of states to a
# bare minimum. This reduces the memory footprint of reports considerably. 
org.pentaho.reporting.engine.classic.core.performance.pagestates.PrimaryPoolSize=1
org.pentaho.reporting.engine.classic.core.performance.pagestates.SecondaryPoolFrequency=4
org.pentaho.reporting.engine.classic.core.performance.pagestates.SecondaryPoolSize=1
org.pentaho.reporting.engine.classic.core.performance.pagestates.TertiaryPoolFrequency=1000

#
# Disable several assertations and debug-messages, which are cool for testing reports
# but slow down the report processing. You may want to enable them in your test system
# but want to make sure that they are disabled in your production environment.
org.pentaho.reporting.engine.classic.core.layout.ParanoidChecks=false
org.pentaho.reporting.engine.classic.core.modules.output.table.base.DebugReportLayout=false
org.pentaho.reporting.engine.classic.core.modules.output.table.base.ReportCellConflicts=false
org.pentaho.reporting.engine.classic.core.modules.output.table.base.VerboseCellMarkers=false

# Performance monitoring entries. Can generate quite a lot of text in the logs, so 
# keep them disabled for production environments 
org.pentaho.reporting.engine.classic.core.ProfileReportProcessing=false
org.pentaho.reporting.engine.classic.core.performance.LogPageProgress=false
org.pentaho.reporting.engine.classic.core.performance.LogLevelProgress=false
org.pentaho.reporting.engine.classic.core.performance.LogRowProgress=false

With both the upgrade of the libraries and the new configuration settings, you should see a good performance boost.

Monday, June 14, 2010

Launching the Pentaho Reporting status portal and version 3.6.1 available

Earlier this day, Doug uploaded the latest bug-fix release of Pentaho Reporting named Pentaho Reporting 3.6.1.

This is a bug-fix release and therefore focuses on bug-fixes and stability improvements. As this release is included in the Pentaho BI-server 3.6.0 release, Kettle/Pentaho Data Integration and Mondrian/Pentaho Analysis have been updated to the latest releases, so be careful when patching older releases of the BI-server.

Pentaho Reporting 3.6.1 resolves many performance and memory consumption issues. All report processing activities should be considerable faster now. We added several performance monitoring and memory tuning settings to log the progress of the report generation and to better tune the reporting engine for large to huge reports within a limited amount of memory. I will cover these settings in a later posting.

Transforming this blog into a Pentaho Reporting Status Portal

I also changed the layout of this web-site slightly to now serve as central hub for Pentaho Reporting status updates. In new status box on the left hand side I now always show the latest releases available along with convenient links to both the Changelog and the SourceForge download pages.

ChangeLog for the Reporting Engine

3.6.1:
        * [BUG] PRD-2709: Subreports that are hidden via "subreport-active"
          must not generate any content in the page and must not trigger
          the creation of a new page. Layouting must be deferred until at
          least some content is produced.

        * [BUG] PRD-2713: Specifying a invalid column in a database driven
          parameter must return  for that column to behave exactly
          like the reporting engine behaves elsewhere.

        * [BUG] PRD-2712: Parsing symbolic color names failed due to a
          case-sensitivity problem.

        * [BUG] PRD-2705: SubReportActive expression was evaluated in the
          context of the parent state instead of using the current state
          and thus the data-context of the subreport.

        * [BUG] PRD-2704: Table-based pageable output never ran through the
          page header when computing cell styles and thus never formated
          cells properly.

        * [BUG] PRD-2698: PreviewParameterDialog and ParameterReportController
          did not report all errors to the user. The PreviewParameterDialog
          only provided constructors for JFrames, and thus blocking any use
          from Dialogs or AWT frames.

        * [BUG] PRD-2697: Limit and Query-Timeout values defined on a report
          had no effect, as the values were removed during the derive() call.

        * [BUG] PRD-2695: Trying to save a report with null-values in a
          array on a expression property failed due to an invalid parser.
        
        * [BUG] PRD-2696: ElementStyleSheet was not serializable anymore.

        * [BUG] PRD-2433: NPE on import of excel files with irregular cell
          structures.

        * [BUG] PRD-2054: ItemHideFunction and other page-event dependent
          functions behaved badly as the page-event processing was invalid
          when processing a report in a pageable report processor.

        * [BUG] PRD-2658: The report.name property is dysfunctional since
          we moved to report-bundles. It must not be shown to the users of
          PRD.

        * [BUG] BISERVER-4180: OLAP4J changed the filter axis to no longer
          provide default members. This changes the layout of the column
          names generated by the OLAP4J denormalized-datafactory. As OLAP4J
          no longer provides the relevant information, we cannot maintain
          backward compatibility.

        * [BUG] PRD-2676: Curly brace parametrization was broken for OLAP4J
          datasources. OLAP4J datasources were not able to read the queries
          that were defined on them when the report was parsed.

        * [BUG] PRD-2680, PRD-2671: OutputFormat attribute on MasterReport
          is now a predefined list of known output formats based on the
          list of available report-process-task implementations.

        * The subreport's name is now shown in the design-view.

3.6.1-RC1: (2010-04-29)
        * [BUG] PRD-2609: We are using the metadata system to handle all the
          lookups of localized-strings now. Metadata has its own, strange
          way of defining fall-back locales.

        * [BUG] PRD-2617, PRD-2623: StyleSheet was buggy after performance fixes.

        * [BUG] PRD-2615: Compatiblity mapping was wrong for v0.7x
          reports.

        * [BUG] PRD-2621: PageSetup dialog failed with missing translations.

        * [BUG] PRD-2584, PRD-2579: Performance and memory improvements

        * [BUG] PRD-2472: Printing with the JDK-1.4 code opened the
          progress dialog before the user could confirm the print settings
          dialog. This locked both modal dialogs.

          The report processors never fired report-finished or report
          started events and thus we never had a clear hook to inject
          our code.

        * [BUG] PRD-2607: Barcode element was not working, as the background
          color was computed as black, the same as the foreground color.

        * [BUG] PRD-2581: Group-Header and Footer labels were not
          initialized correctly and thus displayed something strange.
          Attribute-values can be overriden via the metadata even when styles
          are not overridden. The two flags are independent from each other.

        * [BUG] PRD-2611: Array parsing was wrong and thus broke the
          chart-expression parsing when a array contained a space in
          leading or trailing position.

        * [BUG] PRD-2598: The bundle writer should not write empty strings as
          parameter-attribute values. This confuses the parameter editor and
          the parameters.

        * PRD-2590: Mondrian datasource must provide a hook to inject
          a platform dependent rewriter of connection parameter. This
          is needed to let the platform inject their own roles.

        * PRD-2627: Made the check-auto-close query fired by the SQLDatasource
          configurable via the report-configuration.

        * Changed the ENGINEERINGNOTATION function to support fixed
          precision mode.

        * Upgraded Mondrian to 3.2; and added some compatiblity code to
          Mondrian and OLAP4J datasources, as Mondrian changed its
          UniqueIdentifier strings.

        * [BUG] PRD-2588: We need to treat the form tag as paragraph when
          parsing HTML rich-text.

        * [BUG] PRD-2516: Page-header and page-footer attributes for
          excel-export were broken

        * [BUG] PRD-2564: Near-zero-height elements caused DIV/0 exceptions.

        * [BUG] PRD-2491: A null-value in a list-parameter caused the parameter
          to be rendered incorrectly in the swing-preview.

        * [BUG] PRD-2490, 2557, 2572: PageSetupDialog did not handle landscape
          pageformats correctly.

        * [BUG] PRD-2444: Style-key href-window was not persisted correctly.

        * [BUG] extensions-sampledata referenced a invalid hypersonic database.

        * [BUG] Reading BLOBs was buggy due to a invalid index used.

        * [BUG] HorizontalLineElementFactory did not set the scale property
          for some of the static helper methods.

        * [BUG] PRD-2496: Date-CellEditor did not allow null-values as selected
          date and thus the default value for parameters could not be removed.

        * [BUG] PRD-2453: PRD needs to support relative paths in content
          elements.

        * ReadCLOB can now throw exceptions and thus inform the caller that
          something went horribly wrong.

        * Upgraded Mondrian to 3.1.6, Kettle 4.0

        * Allow multi-selection parameter in Metadata datasources.

        * PRD-2562: Added support for HTML events "onmouseout" and "onmouseenter".

        * Renamed the page and total-page function so that they are known
          as running and total page now.

ChangeLog for the Pentaho Report Designer

3.6.1-GA:
       * [BUG] PRD-2698: Previewing a report with parameters failed
         without a sensible error message if the parameters encountered
         an error. The plain-text preview did not even query for
         parameters and failed instantly when mandatory parameters were
         defined.

       * [BUG] PRD-2714: Using the select-all menu-item or the Menu+A
         shortcut also selected the page-band and thus did not allow to
         move elements around.

       * [BUG] PRD-2680: The list of supported output formats is now a
         list provided by the reporting engine. This reduces the chances
          of having invalid properties defined in this field.

       * [BUG] PRD-2433: Importing XLS files with irregular cell
         structures failed with a NullPointerException.

       * [BUG] PRD-2694: The shift-key as drag-selection enabler behaved
         badly as it was only recognized if the band editor had the focus.

       * [BUG] PRD-2699: The parameter editor dialog did not display the
         defined values for query, column-id or the display-value column
         if the database connection could not be established or if the
         referenced query was not found in one of the connections.

       * [BUG] PRD-2661: Th PreProcessor sample in the report-designer
         must use the correct SampleData connection.

       * [BUG] PRD-2684: In the parameter editor, the default-value should
         accept its input in the same format as given in the parameter
         dataformat text-field.

         If no format is given, the canonical ISO format is used.

       * PRD-2337: The generated MacOS bundle should have a user-friendly
         name. "Pentaho Report Designer" is so much better than
         "report-designer".

       * [BUG] PRD-2660, PRD-2659: Creating Kettle objects by invoking the
         public no-arg constructor generates invalid objects that cause
         errors in Kettle later. We have to manually match our object
         with one that is provided by Kettle's many public arrays, and
         then use the Kettle object (that has been initialized by some
         arcane magic or a spell of a dragon or so).

         This bug caused weird errors in the JDBC and Mondrian datasourc
         editor, which uses Kettle as metadata backend.

       * [BUG] PRD-2587: Need to disable HTML rendering, as this does not
         work in tables. Backported the GenericCellEditor to LibSwing.

3.6.1-RC1: (2010-04-29)
       * [BUG] PRD-2637: A ClassCastException occured after the last
         report has been closed. This was caused by a invalid model/
         tree path given while trying to restore the now invalid
         expand-nodes state.

       * [BUG] PRD-2633: The document-metadata editor must treat empty
         textfields as null values so that we remove empty titles from
         the report.

       * [BUG] PRD-2640: The Welcome pane did not have a keyboard handler
         on the tree and thus never allowed the user to open the reports
         by hitting Enter.

       * [BUG] PRD-2629: The various "Close" operations did not handle
         user-cancel requests properly and continued to close reports
         without permission.

       * [BUG] PRD-2628, PRD-2631: Save and Save As did not properly
         update the resource keys of "definition-source" and "content-base"
         and the assigned resource-manager to the possibly new prpt
         location. Therefore all bundle-internal resource references
         were lost and saving or running a modified report with embedded
         images or embedded resources failed.

       * [BUG] PRD-2633: The wizard needs to clear the document metadata
         when materializing a report from a template.

       * [BUG] PRD-2581: Group-header and -footer labels were not
         initialized correctly and thus grossly misbehaved.

       * [BUG] PRD-2599: The default-value editor in the parameter dialog
         was not updated correctly when selecting a new parameter class
         or when switching between single-selection and multi-selection
         parameter types.

       * [BUG] PRD-2614: Due to invalid internal events fired at the worst
         times we ended up creating resource keys that could not be embedded
         into the PRPT file when the report is saved. Thus saving the report
         failed.

       * [BUG] Cleaned out the Help->System Information dialog so that all
         the entries there are sorted.

       * [BUG] Removed some unnecessary libraries that were brought in via
         IVY.

       * [BUG] PRD-2608: The metadata dialog did misbehave when it was resized
         and did not remember the last location of the XMI files it loaded.

       * [BUG] PRD-2604: A invalid attribute name was used when writing
         wizard-specification documents. Therefore loading the report later
         did not restore the name.

       * [BUG] PRD-2603: Removing extra template groups when generating a
         report from a wizard-template was not working properly.

       * [BUG] PRD-2597: The Display-Title for tabs and window-title-bar in
         the report-designer was computed in a wrong way.

       * [BUG] PRD-2496: A Date-CellEditor did not allow  values and
         thus it was impossible to unset a previously defined default value.

       * [BUG] When the first Group did not define a name, the group-selector
         in the table-editors became impossible to use.

       * [BUG] PRD-2453: When saving a report, we have to update the content
         base property of the report, so that relative paths can be resolved
         in the UI editor.

       * [BUG] PRD-2547: Copy&Paste of banded subreports converted the
         subreports into inline-subreports.

       * [BUG] PRD-2573: Translations in the publish dialog were missing and
         thus showing the error dialog on publish problems failed with a
         MissingTranslationException.

       * [BUG PRD-2520: Moving elements in the editor behaved badly as soon
         as a border was set. The layouter did not take borders into account
         and thus all subsequent operations produced bad results.

       * [API] PreviewParameterDialog in the engine now only accepts
         MasterReport objects, as they are the only ones that can carry
         external parameters.

       * [BUG] PRD-2561: The field selector in the style table was always
         empty, as the report designer context was never set.

       * [BUG] PRD-2540, BISERVER-4129: When publishing a report with
         non-ascii characters in the name, the report name was corrupted on
         the server. The server automatically recodes all HTTP-requests to
         the local system encoding and thus may break the encoding given by
         the report designer.

       * [BUG] PRD-2541: A invalid attribute was written when trying to
         define the group-totals-label.

       * [BUG] The Welcome-Pane showed empty directories as report files
         and subsequently tried to load them when the user double clicked
         on them.

       * [BUG] PRD-2493: Page-Align dialog did nothing after being confirmed
         by the user. This dialog is shown after the page format changed.

       * Pentaho Reporting now uses Kettle 4.0 and Mondrian 3.2 to be
         in sync with the latest BI-Server release.

       * Added a "report-designer.properties" file in the resources directory
         to make it more obvious for users where to put report-designer
         related configuration settings.

       * [BUG] AGILEBI-213, PRD-2460: The report-design-wizard should not show
         the environment variables or parameter fields in the field selector.

       * [BUG] PRD-2467: Templates used with RDW should have data connection
         defined as JNDI Sample Data

       * [BUG] PRD-2453: Resource linking always stored absolute paths
         in the generated resource-key. We need to prefer relative paths
         so that publishing or moving a report along with its images does
         not break the report.

       * [BUG] PRD-2446: Top-N-Analysis.prpt sample report was broken.

Saturday, June 5, 2010

British Taste Award Winner ..


Onion Marmalade with Black Olives & Balsamic Vinegar! This is wrong on so many levels. And if you look closer, you can spot that it actually won Silver in the "Great Taste Award".

Now I bet you are all up and running and want to buy it, taste it, and spoon out the jar immediately. Sadly, this jewel of Britishness is only available in the UK.