You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Andrew Hodgson (JIRA)" <ji...@apache.org> on 2009/09/15 10:33:33 UTC

[jira] Updated: (WW-3245) Jasper plugin does not support supply of data via report parameters (for example Hibernate session object)

     [ https://issues.apache.org/struts/browse/WW-3245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrew Hodgson updated WW-3245:
-------------------------------

    Attachment: struts2JasperReportsPluginHQLPatch.patch

Attached patch file with suggested implementation.

This achieves the result by examining the relevant report parameter "HIBERNATE_SESSION" and if present calls the correct JasperFillManager.fillReport method.

If dataSource, connection & no session supplied in the report parameters, an error is thrown as before.

It would be possible to introduce Session as a parameter to the plugin, but this would most likely introduce a dependancy between the plugin and Hibernate, which might not be desirable, hence I didn't choose this route.

> Jasper plugin does not support supply of data via report parameters (for example Hibernate session object)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: WW-3245
>                 URL: https://issues.apache.org/struts/browse/WW-3245
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Plugin - JasperReports
>    Affects Versions: 2.1.6, 2.2.x, Future
>         Environment: Present in all environments, attempting usage of Hibernate query HQL embedded in a JasperReport.
>            Reporter: Andrew Hodgson
>            Priority: Minor
>         Attachments: struts2JasperReportsPluginHQLPatch.patch
>
>
> A typical usage scenario for a Jasper report involves writing code within the report document to retrieve report from a database recent Struts code supports this via supply of a SQL Connection object, but I notice it's not supported in 2.1.6 production release.  
> JasperReports supports many implementation languages for it's data retrieval code, but in particular I have identified issue in relation to Hibernate HQL queries.
> Normal route in this scenario (if not using Struts JasperReports plugin) is to supply Hibernate session as a parameter to the report, then implement HQL within the document to retrieve the data.  However the Plugin only supports Connection or a pre-populated dataSource as a source for the report's data.  This means a temporary data structure (perhaps a sizable List / Map) must be produced in order to present data to the Plugin..
> It would be more efficient and convenient to either support supply of a Hibernate Session object, or allow call to the plugin when both connection and datasource are absent.  In this scenario, the plugin would respond by calling 
> http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperFillManager.html#fillReport(java.io.InputStream,%20java.util.Map)
> And rely on Jasper Fill Manager's inbuilt functionality to draw connection detail from the supplied parameters. This option has the advantage that it can support a range of query languages / connection methods that JasperReports may support, now or in the future.  
> The code would of course have to deal with the case in which the relevant report parameters have be left blank, and thus respond with an appropriate error condition, as it does in Struts 2.1.6  when dataSource has been left null.
> I will attempt to produce a patch with proposed modified code in the near future, to assist with this improvement.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.