]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5305 Fixed bug that was not passing invocationContext params into the report...
authorPatrick Schmitz <pschmitz@berkeley.edu>
Thu, 17 Jan 2013 01:20:04 +0000 (17:20 -0800)
committerPatrick Schmitz <pschmitz@berkeley.edu>
Thu, 17 Jan 2013 01:20:04 +0000 (17:20 -0800)
services/report/3rdparty/jasper-cs-report/src/main/resources/Notes On Invocation.txt [new file with mode: 0644]
services/report/3rdparty/jasper-cs-report/src/main/resources/acq_basic.jasper
services/report/3rdparty/jasper-cs-report/src/main/resources/acq_basic.jrxml
services/report/service/src/main/java/org/collectionspace/services/report/nuxeo/ReportDocumentModelHandler.java

diff --git a/services/report/3rdparty/jasper-cs-report/src/main/resources/Notes On Invocation.txt b/services/report/3rdparty/jasper-cs-report/src/main/resources/Notes On Invocation.txt
new file mode 100644 (file)
index 0000000..6199509
--- /dev/null
@@ -0,0 +1,18 @@
+As an example of invoking the acq_basic report from, e.g., poster, here is a payload that shows how to use parameters. The report has a parameter called "queryYear" that when invoked in the no-context mode, will restrict the acquisitions to that year. See the actual report for how the query is built. 
+
+The invocation payload is:
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns2:invocationContext
+xmlns:ns2="http://collectionspace.org/services/common/invocable">
+  <mode>nocontext</mode>
+  <docType>Acquisition</docType>
+  <params>
+    <param>
+      <key>queryYear</key>
+      <value>2000</value>
+    </param>
+  </params>
+</ns2:invocationContext>
+
+Note that this can be used for a report with any output type - it only impacts the invocation properties. 
index ba00ecee60e56e8703c74c6548ef272a162b7bbd..f73c73c5116b2e70bd7a212e1762101908d9975b 100644 (file)
Binary files a/services/report/3rdparty/jasper-cs-report/src/main/resources/acq_basic.jasper and b/services/report/3rdparty/jasper-cs-report/src/main/resources/acq_basic.jasper differ
index fd1ec8de6f7c8d75470a64af5838fe5e0b68d797..e6e7055831b7b9d25f1de95d604e9feffad6dbb5 100644 (file)
        <parameter name="csid" class="java.lang.String" isForPrompting="false">
                <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
        </parameter>
-       <parameter name="where_clause" class="java.lang.String" isForPrompting="false">
-               <defaultValueExpression><![CDATA[(($P{csid}==null||($P{csid}.length()==0))?"":" AND hierarchy.name = '"+$P{csid}+"'")]]></defaultValueExpression>
+       <parameter name="queryYear" class="java.lang.String" isForPrompting="false">
+               <defaultValueExpression><![CDATA[""]]></defaultValueExpression>
        </parameter>
        <parameter name="tenantid" class="java.lang.String">
                <defaultValueExpression><![CDATA["1"]]></defaultValueExpression>
        </parameter>
+       <parameter name="where_clause" class="java.lang.String" isForPrompting="false">
+               <defaultValueExpression><![CDATA[(($P{csid}!=null && $P{csid}.length()>0)?
+    (" AND hierarchy.name = '"+$P{csid}+"'")
+    :(($P{queryYear}==null || $P{queryYear}.length()==0)?" AND 1=1"
+        :" AND acquisitions_common.acquisitionauthorizerdate >= '"+$P{queryYear}
+            +"-1-1' AND acquisitions_common.acquisitionauthorizerdate <= '"
+            +$P{queryYear}+"-12-31'"))]]></defaultValueExpression>
+       </parameter>
        <queryString>
                <![CDATA[SELECT
-     acquisitions_common."originalobjectpurchasepricevalue" AS acquisitions_common_originalobjectpurchasepricevalue,
-     acquisitions_common."transferoftitlenumber" AS acquisitions_common_transferoftitlenumber,
-     acquisitions_common."acquisitionreferencenumber" AS acquisitions_common_acquisitionreferencenumber,
-     acquisitions_common."acquisitionmethod" AS acquisitions_common_acquisitionmethod,
-     acquisitions_common."acquisitionauthorizerdate" AS acquisitions_common_acquisitionauthorizerdate,
-     acquisitions_common."acquisitionauthorizer" AS acquisitions_common_acquisitionauthorizer,
-     acquisitions_common."acquisitionreason" AS acquisitions_common_acquisitionreason
+     acquisitions_common."originalobjectpurchasepricevalue" AS ac_originalobjectpurchasepricevalue,
+     acquisitions_common."transferoftitlenumber" AS ac_transferoftitlenumber,
+     acquisitions_common."acquisitionreferencenumber" AS ac_acquisitionreferencenumber,
+     acquisitions_common."acquisitionmethod" AS ac_acquisitionmethod,
+     acquisitions_common."acquisitionauthorizerdate" AS ac_acqauth_date,
+     acquisitions_common."acquisitionauthorizer" AS ac_acquisitionauthorizer,
+     acquisitions_common."acquisitionreason" AS ac_acquisitionreason
 FROM
      "public"."acquisitions_common" acquisitions_common INNER JOIN "public"."hierarchy" hierarchy ON acquisitions_common."id" = hierarchy."id"
 INNER JOIN "public"."collectionspace_core" core ON acquisitions_common."id" = core."id"
@@ -38,20 +46,20 @@ INNER JOIN "public"."misc" misc ON misc."id" = hierarchy."id"
 WHERE core.tenantid = $P{tenantid} AND misc.lifecyclestate != 'deleted'
 $P!{where_clause}]]>
        </queryString>
-       <field name="acquisitions_common_originalobjectpurchasepricevalue" class="java.lang.String"/>
-       <field name="acquisitions_common_transferoftitlenumber" class="java.lang.String"/>
-       <field name="acquisitions_common_acquisitionreferencenumber" class="java.lang.String"/>
-       <field name="acquisitions_common_acquisitionmethod" class="java.lang.String"/>
-       <field name="acquisitions_common_acquisitionauthorizerdate" class="java.lang.String"/>
-       <field name="acquisitions_common_acquisitionauthorizer" class="java.lang.String"/>
-       <field name="acquisitions_common_acquisitionreason" class="java.lang.String"/>
+       <field name="ac_originalobjectpurchasepricevalue" class="java.lang.Double"/>
+       <field name="ac_transferoftitlenumber" class="java.lang.String"/>
+       <field name="ac_acquisitionreferencenumber" class="java.lang.String"/>
+       <field name="ac_acquisitionmethod" class="java.lang.String"/>
+       <field name="ac_acqauth_date" class="java.sql.Timestamp"/>
+       <field name="ac_acquisitionauthorizer" class="java.lang.String"/>
+       <field name="ac_acquisitionreason" class="java.lang.String"/>
        <background>
                <band splitType="Stretch"/>
        </background>
        <title>
                <band height="102" splitType="Stretch">
                        <frame>
-                               <reportElement mode="Opaque" x="0" y="0" width="797" height="76" backcolor="#FFFFFF"/>
+                               <reportElement mode="Opaque" x="0" y="0" width="797" height="90" backcolor="#FFFFFF"/>
                                <staticText>
                                        <reportElement style="SubTitle" x="458" y="0" width="339" height="29"/>
                                        <textElement textAlignment="Right">
@@ -61,7 +69,7 @@ $P!{where_clause}]]>
                                </staticText>
                                <image>
                                        <reportElement x="0" y="0" width="349" height="67"/>
-                                       <imageExpression class="java.lang.String"><![CDATA["http://www.collectionspace.org/sites/all/themes/CStheme/images/CSpaceLogo.png"]]></imageExpression>
+                                       <imageExpression><![CDATA["http://www.collectionspace.org/sites/all/themes/CStheme/images/CSpaceLogo.png"]]></imageExpression>
                                </image>
                        </frame>
                        <frame>
@@ -127,46 +135,46 @@ $P!{where_clause}]]>
                                        <textElement textAlignment="Center">
                                                <font fontName="DejaVu Serif" size="13"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[$F{acquisitions_common_originalobjectpurchasepricevalue}]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[$F{ac_originalobjectpurchasepricevalue}]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                        <reportElement style="Detail" positionType="Float" x="2" y="0" width="139" height="18"/>
                                        <textElement>
                                                <font fontName="DejaVu Serif" size="12"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[$F{acquisitions_common_acquisitionreferencenumber}]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[$F{ac_acquisitionreferencenumber}]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                        <reportElement style="Detail" positionType="Float" x="228" y="0" width="144" height="18"/>
                                        <textElement textAlignment="Center">
                                                <font fontName="DejaVu Serif" size="13"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[$F{acquisitions_common_acquisitionauthorizerdate}]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[$F{ac_acqauth_date}]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                        <reportElement style="Detail" positionType="Float" x="372" y="0" width="155" height="18"/>
                                        <textElement textAlignment="Center">
                                                <font fontName="DejaVu Serif" size="13"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[($F{acquisitions_common_acquisitionauthorizer}==null ||
-    $F{acquisitions_common_acquisitionauthorizer}.isEmpty())?
-  "":$F{acquisitions_common_acquisitionauthorizer}.substring(
-     $F{acquisitions_common_acquisitionauthorizer}.lastIndexOf( ")" )+2,
-       $F{acquisitions_common_acquisitionauthorizer}.length()-1).replaceAll("[+]"," ")]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[($F{ac_acquisitionauthorizer}==null ||
+    $F{ac_acquisitionauthorizer}.isEmpty())?
+  "":$F{ac_acquisitionauthorizer}.substring(
+     $F{ac_acquisitionauthorizer}.lastIndexOf( ")" )+2,
+       $F{ac_acquisitionauthorizer}.length()-1).replaceAll("[+]"," ")]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                        <reportElement style="Detail" positionType="Float" x="527" y="0" width="150" height="18"/>
                                        <textElement textAlignment="Center">
                                                <font fontName="DejaVu Serif" size="13"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[$F{acquisitions_common_acquisitionreason}]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[$F{ac_acquisitionreason}]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                        <reportElement style="Detail" positionType="Float" x="677" y="0" width="120" height="18"/>
                                        <textElement textAlignment="Center">
                                                <font fontName="DejaVu Serif" size="13"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[$F{acquisitions_common_acquisitionmethod}]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[$F{ac_acquisitionmethod}]]></textFieldExpression>
                                </textField>
                        </frame>
                </band>
@@ -190,21 +198,21 @@ $P!{where_clause}]]>
                                        <textElement verticalAlignment="Middle">
                                                <font fontName="DejaVu Serif" size="10" isBold="false"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
                                </textField>
                                <textField>
                                        <reportElement style="Column header" x="677" y="3" width="80" height="20" forecolor="#FFFFFF"/>
                                        <textElement textAlignment="Right" verticalAlignment="Middle">
                                                <font fontName="DejaVu Serif" size="10" isBold="false"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
                                </textField>
                                <textField pattern="EEEEE dd MMMMM yyyy">
                                        <reportElement style="Column header" x="2" y="3" width="197" height="20" forecolor="#FFFFFF"/>
                                        <textElement verticalAlignment="Middle">
                                                <font fontName="DejaVu Serif" size="10" isBold="false"/>
                                        </textElement>
-                                       <textFieldExpression class="java.lang.String"><![CDATA[new java.util.Date()]]></textFieldExpression>
+                                       <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
                                </textField>
                        </frame>
                </band>
index d809de4b7fd87c5ecb3365f6d07d9ffd5c2da3d0..426014e4637fc61b78cfeaba05b66987e5f88959 100644 (file)
@@ -31,6 +31,8 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response.ResponseBuilder;
 
@@ -105,6 +107,10 @@ public class ReportDocumentModelHandler extends DocHandlerBase<ReportsCommon> {
                HashMap<String, Object> params = new HashMap<String, Object>();
                params.put(REPORTS_STD_TENANTID_PARAM, ctx.getTenantId());
                boolean checkDocType = true;
+               
+               // Note we set before we put in the default ones, so they cannot override tenant or CSID.
+               setParamsFromContext(params, invContext);
+               
                if(Invocable.INVOCATION_MODE_SINGLE.equalsIgnoreCase(invocationMode)) {
                        modeProperty = InvocableJAXBSchema.SUPPORTS_SINGLE_DOC;
                params.put(REPORTS_STD_CSID_PARAM, invContext.getSingleCSID());
@@ -196,6 +202,24 @@ public class ReportDocumentModelHandler extends DocHandlerBase<ReportsCommon> {
                }
                return buildReportResponse(csid, params, reportFileName, outputMimeType);
        }
+       
+       private void setParamsFromContext(Map<String, Object> params, InvocationContext invContext) {
+               InvocationContext.Params icParams = invContext.getParams();
+               if(icParams!= null) {
+                       List<InvocationContext.Params.Param> icParamList = icParams.getParam();
+                       if(icParamList != null) {
+                               for(InvocationContext.Params.Param param:icParamList) {
+                                       String key = param.getKey();
+                                       String value = param.getValue();
+                                       if(!Tools.isEmpty(key) && !Tools.isEmpty(value)) {
+                                               params.put(key, value);
+                                       }
+                               }
+                       }
+               }
+               
+       }
+
 
 
     private Response buildReportResponse(String reportCSID,