Pull Reports™ Release Notes

Abstract

Learn about the enhancements and changes for each release of Pull Reports™ Ad Hoc Reporting software.


Table of Contents

Release 1.3


Upgrade notes and breaking changes

Release 1.3 contains breaking changes from the prior release. Please see the section called “Upgrading from 1.2 to 1.3” for more information.

Custom catalog configuration security

Release 1.3 adds the new <access_control_voter> element to enforce custom access control at all levels of the report hierarchy. This control ensures that users of the Pull Reports REST API or Ad Hoc Report Creator may only access permitted catalogs, reports, relationships, and columns.

See the section called “Securing Pull Reports™” for more information.

Catalog Configuration Java API

Release 1.3 contains the first release of the Catalog Configuration Java API. The Catalog Configuration Java API is a Java bean API which permits Pull Reports™ catalog configuration within Java instead of XML. The Catalog Configuration Java API means the full power of the Java programming language and runtime libraries may be used to configure Pull Reports™. This permits configuration assembly from any external source such as a database, network resource, or content management system.

In order to use the Catalog Configuration Java API prefix the fully qualified name of a Java implementation of the CatalogConfigurationFactory interface with factory: within the catalogs configuration property.

See the catalogs configuration property for more information.

Customize <label_value_query>s per request

In release 1.3, the <label_value_query>'s value is now a Groovy template which may be used to dynamically create the label value query at request time. Additionally, the HttpServletRequest associated with the GET Label Value List REST API request is available as the request template attribute.

This new feature allows label value lists within the Pull Reports™ Ad Hoc Report Creator Filter web form to be customized to the permissions or attributes of the current user.

See the section called “Securing Label Value Lists” for more information.

Release 1.2


Upgrade notes and breaking changes

Major breaking changes

  • This release contains a new pullreports-catalog-1.4.0.xsd schema file. Change the xmlns attribute in each Pull Reports™ XML Catalog file to the new value.

    <catalog xmlns="http://www.pullreports.com/catalog-1.4.0"...

    The pullreports-catalog-1.4.0.xsd schema contains a new <subquery> element but is otherwise backwards compatible with the pullreports-catalog-1.3.0.xsd structure.

Customize <table> SQL with <subquery>

Release 1.2 adds a new <subquery> element as a child of the <table> element. If included, <subquery> replaces the <table> name attribute within the Export Report REST API SQL from clause with a subquery statement. <subquery>'s may be dynamically created at request time through the use of a Groovy template or designated factory class. When combined with HttpServletRequest attributes, <subquery>s may provide row based access security to any <table>.

See the <subquery> and securing data rows documentation for more information.

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • com.opencsv:opencsv to 4.1

  • com.verhas:license3j to 1.0.7

Note

Since the opencsv upgrade changes the transitive dependency footprint, if an existing Pull Reports™ installation uses the project-local JARs dependency management strategy, please ensure the JAR files in the Pull Reports™ media's lib directory are available within the installation application's classpath.

Release 1.1


Upgrade notes and breaking changes

Minor breaking changes

  • The Leaflet dependency bundled with the Ad Hoc Report Creator JavaScript is no longer available via the JavaScript global L variable. Any creator initialization code requiring Leaflet must be within the creator initialization require function with leaflet as an injected dependency.

    Change creator initialization code written like this:

    <script>
    // L is a global variable. No longer supported.
    var layer = L.tileLayer(...);
    require(['pr-require-config'],function(){
        require(['angular','pr-main']
            , function(angular,prMain) {
                angular.element(document).ready(function() {
                    prMain.init({
                        ...
                    });
                });
            }
        );
    });
    </script>

    To this:

    <script>
    require(['pr-require-config'],function(){
        require(['angular','pr-main','leaflet']
            , function(angular,prMain,L) {
    
                // L is a AMD dependency.
                var layer = L.tileLayer(...);
    
                angular.element(document).ready(function() {
                    prMain.init({
                        ...
                    });
                });
            }
        );
    });
    </script>

Support for OR filters

The filter parameter of the Export Report REST API now allows multiple filter terms to be logically OR'ed together via the or keyword. Multiple filter parameters within the same GET request are still AND'ed together.

For example, the following filter parameters:

filter=/tableA@foo is not null or /tableB@bar > 10&filter=@baz in ('A','B')

result in the logical query: (Return all rows in which tableA, column foo is not null or tableB, column bar is greater than 10) and whose base table column baz is equal to either 'A' or 'B'.

OR filters in the Ad Hoc Report Creator

Release 1.1 provides Add OR term buttons within the Filters navigation tab to specify new OR filter terms. Alternatively, create new OR filter terms by dragging a column from the Results Preview into an existing filter definition.

Viewing export report SQL

Release 1.1 adds a new SQL button to the Results Preview. The button opens a dialog containing the SQL query and query parameters which produce the export result.

The new GET Export SQL REST API endpoint supports the SQL button by returning the SQL produced from a given set of Export Report REST API parameters. To prevent unwanted database schema information leakage, the GET Export SQL REST API is disabled by default. See the GET Export SQL REST API documentation for instructions on how to activate both the API and SQL button for permitted users.

For consumers of the GET Report Information REST API, release 1.1 also includes a new exportSqlIsActive attribute which is true if the GET Export SQL endpoint is active for the report.

Improved Ad Hoc Report Creator API

Release 1.1 removes all formatting restrictions on the filter and sort parameters in the Ad Hoc Report Creator parameter API such that the parameters are now formatted identically to same parameters within the Export Report REST API. This enhancement is made possible by the new GET Export Parse Parameters endpoint.

Ad Hoc Report Creator usability improvements

Release 1.1 adds the following usability improvements to the Ad Hoc Report Creator.

Add Filter button

Create filters directly from the Filters navigation tab with the new Add Filter button.

Streamlined column labels

Column labels within the Tables and Search navigation tabs now have a streamlined, compact display. Click or drag the column label to add the column to the Results Preview. Shift+click to remove the column.

Streamlined table labels

Release 1.1 also streamlines the display of table labels within the Tables navigation tab, Related Tables panel for better understandability and to save vertical space. Additionally, The table Metadata button moves to a drop down menu item, and the cardinality indicator moves to the left of the table label.

PostgreSQL 9.6, SQL Server 2017, and Grails 3.3 support

Release 1.1 now officially supports both PostgreSQL 9.6 and SQL Server 2017. Additionally, the Grails installation instructions are compatible with Grails 3.3.

Creator dependency upgrades

Release 1.1 upgrades the following Ad Hoc Report Creator JavaScript dependencies.

  • AngularJS upgraded to 1.6

  • Leaflet upgraded to 1.2

  • Leaflet Markercluster to 1.1

  • Lunr upgraded to 2.1

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • org.codehaus.groovy:groovy-all to 2.4.13

Release 1.0


Upgrade notes and breaking changes

Major breaking changes

  • This release contains a new pullreports-catalog-1.3.0.xsd schema file. Change the xmlns attribute in each Pull Reports™ XML Catalog file to the new value.

    <catalog xmlns="http://www.pullreports.com/catalog-1.3.0"...

  • Within Pull Reports™ XML Catalog files, the defaultSort attribute moved from the <report> element to the <export_config> element.

  • Within Pull Reports™ XML Catalog files, the <column> export attribute is now a boolean value.

    Change <column> elements attributed as export='never' to export='false'.

    Since no <column>s may be absolutely required in Pull Reports REST API results, remove the export attribute from <column> elements configured as export='optional' or export='always'. <column>s without an export attribute are by default optionally exportable.

    Consider adding base table <column>s previously attributed as export='required' to the defaultColumns <export_config> parameter.

  • The containing HTML element into which the Ad Hoc Report Creator installs must have a data-pr-creator attribute instead of data-pr-layout.

    To implement this change in creator HTML pages, change this:

    ...<section data-pr-layout id='...'></section>...

    To this:

    ...<section data-pr-creator id='...'></section>...

Minor breaking changes

  • The default behavior of the Export Report REST API columns parameter changed slightly in the case of an empty parameter value or a parameter value missing the base table path. In the former case, instead of returning all the exportable columns of the base table, an empty columns parameter now only returns the defaultColumns, if configured, from the base table. Similarly, if the columns parameter value is not empty, but is missing the base table path, only the defaultColumns, if configured, will be added to the beginning of the export result.

Redesigned Ad Hoc Report Creator

The Ad Hoc Report Creator underwent a complete redesign in this release. Major enhancements include:

  • Streamlined, single-page interface with minimal scrolling.

  • Table <column>s may be included individually into the export result and repositioned as needed.

  • Improved drag-n-drop interactivity.

  • Full text <table> and <column> search helps users find the data they need.

New defaultColumns attribute

The <export_config> has a new defaultColumns attribute to specify the default columns to be returned by the Export Report REST API if no other columns from the report's base table are included within the columns parameter. Use the defaultColumns attribute to return highest value base table columns to API users.

Base table columns may be at any position in the columns parameter

The Export Report REST API columns parameter no longer requires the base table columns to be specified at the beginning of the parameter value. Include base table or column resource paths at any position in the semicolon separated list.

Release 0.10


Upgrade notes and breaking changes

Major breaking changes

  • This release contains a new pullreports-catalog-1.2.0.xsd schema file. Change the xmlns attribute in each Pull Reports™ XML Catalog file to the new value.

    <catalog xmlns="http://www.pullreports.com/catalog-1.2.0"...

  • This release changes the <column> export attribute type from boolean to an enumeration of strings: always|optional|never. Any <column> defined as export='false' should be changed to export='never'. Any <column> defined as export='true' should be changed to either export='optional' or export='always'.

    Additionally, there is a new Pull Reports™ XML Catalog file requirement that at least one <column> of each <report>s base table must be set as export='always'.

    See this release note for more information.

Minor breaking changes

  • The GET Report Information JSON response schema's column.export value type changed from boolean to string. This API is used internally by the Pull ReportsAd Hoc Report Creator, but any custom clients dependent on this API should change accordingly.

  • The Export Report REST API columns parameter now requires that the base table path, if specified, must be at the first position in the table path list.

<column>s may now be optionally included in Export Report REST API

This release enhances the Export Report REST API columns parameter to allow the exact specification of columns and column order within the export results.

Specifying a full table resource path within the columns parameter continues to return all the columns available within that table in the order specified within the Pull Reports™ XML Catalog file. For example:

&columns=/some/table/path

However, the columns parameter now supports appending a @ character to the table resource path followed by a comma separated list of <column> ids. This will restrict the export results to just the listed columns in the given order. For example:

&columns=/some/table/path@columnId1,columnId2

To support this enhancement, the permitted values of the <column> export parameter changed from true|false to always|optional|never.

See the <column> element and columns parameter documentation for more information including the new requirement that at least one column of the <report>'s base table be defined with export='always'.

Visit the Pull Reportsweb service demonstration page for a demonstration of including specific columns in an Export Report REST API result.

Note

This release does not yet support optionally including columns from Pull ReportsAd Hoc Report Creator export results.

Dynamic creation of Pull Reports™ XML Catalog files

This release adds a new method to specify Pull Reports™ XML Catalog files during initialization. Use the factory: prefix within the pullreports.properties, catalogs property to indicate a Java factory class responsible for dynamically creating a Pull Reports™ XML Catalog file.

See the pullreports.properties documentation for more information.

<table_ref> elements may have a <description>

This release allows <table_ref>s to have an optional child <description> element. If defined, a <table_ref> description overrides the description from the referenced <table>.

Ability to override Leaflet GeoJSON Layer options

This releases increases the Leaflet mapper configuration options available within Ad Hoc Report Creator initialization and the Export Report REST API map format.

The new geoJsonOptions property permits customization of the creator's and map format's Leaflet GeoJSON layer including popups, geometry style, and feature filtration.

Improved error handling for <url_template>

Errors in <url_template>s can cause invalid responses from the Export Report REST API because the errors occur after the response is already streaming to the client. This release includes improved error handling and logging for these error conditions.

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • org.codehaus.groovy:groovy-all to 2.4.11

  • org.slf4j:slf4j-api to 1.7.25

  • com.opencsv:opencsv to 3.9

Release 0.9


Upgrade notes and breaking changes

JNDI data source configuration is now exclusively configured within pullreports.properties. Although this change allows more flexible, per-report data source configuration, it means these breaking changes:

  • The <catalog> jndiDataSource attribute is no longer supported.

  • This release contains a new pullreports-catalog-1.1.0.xsd schema file with the jndiDataSource attribute removed.

  • The pullreports.properties default.jndiDataSource property is renamed to jndiDataSource.

See Per-<catalog> and per-<report> property configuration for more information.

Ad hoc creator usability improvements

The Ad Hoc Report Creator Available Tables component received several usability improvements in the 0.9 release.

Column names now visible in table closed state

The first several <column> display names are now visible on the table component when the table is in its closed state. This helps users quickly review the columns without having to open the table.

Multiple tables open at once

More than one table component can now be opened a time. This helps users review many tables at once.

Additionally, the Available Tables component title bar contains buttons to open and close all tables with just one click.

Swatches indicate tables within export

Each table included within the export results is represented by a swatch button on the Available Tables component title bar. Clicking the swatch toggles the table's open/closed state and focuses the table within the Available Tables component. The new swatches provide a quick visual of which tables are in the current export and an easy way to navigate to an included table.

Non-exportable icon in table information tab

<column>s set to export="false" are now denoted with a special icon within the table's Info tab in addition to the text Not included in export results. Only for filtering.

Ability to decorate Export Report REST API output with Servlet includes

Decorate the HTML output of the html and map Export Report REST API formats via Servlet includes. This feature permits easy customization of the outputs with HTML, JavaScript, and CSS and provides an alternative decoration technology to SiteMesh.

Improved filter output for html, htmltable, and map output formats.

This release improves the readability of filters applied to the Export Report REST API results in the html, htmltable, and map formats. The filter format now following this pattern:

Table: <em>[table.displayName]</em>, Column: <em>[column.displayName]</em> <samp>[operator]</samp> [value(s)]

Row offset, limit, and total count added to html, htmltable, and map output formats.

The html and htmltable Export Report REST API formats now display the offset, limit, and total row count values within the table <caption>.

Additionally, the map format now displays the distinct feature count and raw data row offset, limit, and count values above the map.

Logging improvements

Logging may now be isolated to a specific <catalog>s or <report>s.

Per-<catalog> and per-<report> property configuration

Most properties within pullreports.properties may now be configured per-<catalog> or per-<report> by (.) appending the <catalog> id and, optionally, <report> id to the property name. Properties values specified at a lower scope (e.g. <report>) override the same property specified at a higher scope (e.g. <catalog> or global).

Properties whose values may now be customized per-<catalog> and per-<report> are:

  • jndiDataSource

  • export.report.maxResults

  • export.report.postgresql.queryCostMaximum

Documentation improvements

The GET Label Value List REST endpoints are now documented.

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • org.codehaus.groovy:groovy-all to 2.4.8

  • org.slf4j:slf4j-api to 1.7.22

Creator dependency upgrades

The following Ad Hoc Report Creator JavaScript dependencies are upgraded.

  • Angular Bootstrap upgraded to 2.5

Release 0.8


In addition to closing over 17 defects and minor enhancements, release 0.8 contains these functional enhancements.

Support for Grails 3

Pull Reports™ now supports Grails 3 deployment. See the installation guide for more information.

Full Screen Mode

The Ad Hoc Report Creator now has full screen mode to better utilize all available screen space. This is especially useful when working with large <table> graphs in the Available Tables component.

Searchable filter value lists

The Ad Hoc Report Creator now supports type-ahead search when choosing filter values for <column>s of paramType java.lang.String. This features makes finding values in a long <label_value_list>s much easier.

Leaflet Mapper customization

The Export Report REST API map format now supports customization of the Leaflet Mapper. Add Leaflet layers and controls via the mapConfig global JavaScript variable.

HttpServletRequest available within <url_template>s

The <url_template> element within Pull Reports™ XML Catalog files now supports a reference to the HttpServletRequest associated with the Export Report REST API request. This permits the use of HTTP header and parameter values when creating drill through URLs.

Configurable query cost limits for PostgreSQL

The new the section called “export.report.postgresql.queryCostMaximum[.catalogId][.reportId] configuration property sets a query cost maximum on each PostgreSQL database query formulated by the Export Report REST API. The property allows an administrator to prevent resource utilization overruns caused by relational cross join products or other excessive export requests.

Creator dependency upgrades

The following Ad Hoc Report Creator JavaScript dependencies are upgraded.

  • Angular Bootstrap upgraded to 2.1

  • RequireJS upgraded to 2.3