← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 8215: Impl support for report params for standard reports. This means that you can insert dynamic param...

 

Merge authors:
  Lars Helge Øverland (larshelge)
------------------------------------------------------------
revno: 8215 [merge]
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2012-09-24 08:03:31 +0200
message:
  Impl support for report params for standard reports. This means that you can insert dynamic parameters in jasper reports which can be used in SQL queries.
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/ReportService.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTableService.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml
  dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java
  dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/tablecreator/action/GetReportParamsAction.java
  dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/addReportForm.vm
  dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/generateReport.js
  dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/viewReportForm.vm


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java	2012-09-23 15:49:44 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java	2012-09-24 05:42:39 +0000
@@ -38,6 +38,7 @@
 import org.hisp.dhis.common.view.DetailedView;
 import org.hisp.dhis.common.view.ExportView;
 import org.hisp.dhis.period.RelativePeriods;
+import org.hisp.dhis.reporttable.ReportParams;
 import org.hisp.dhis.reporttable.ReportTable;
 
 /**
@@ -59,6 +60,8 @@
 
     private RelativePeriods relatives;
 
+    private ReportParams reportParams;
+    
     // -------------------------------------------------------------------------
     // Constructors
     // -------------------------------------------------------------------------
@@ -74,11 +77,12 @@
         this.reportTable = reportTable;
     }
     
-    public Report( String name, String designContent, RelativePeriods relatives )
+    public Report( String name, String designContent, RelativePeriods relatives, ReportParams reportParams )
     {
         this.name = name;
         this.designContent = designContent;
         this.relatives = relatives;
+        this.reportParams = reportParams;
     }
 
     // -------------------------------------------------------------------------
@@ -209,6 +213,19 @@
         this.relatives = relatives;
     }
 
+    @JsonProperty
+    @JsonView( {DetailedView.class, ExportView.class} )
+    @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE )
+    public ReportParams getReportParams()
+    {
+        return reportParams;
+    }
+
+    public void setReportParams( ReportParams reportParams )
+    {
+        this.reportParams = reportParams;
+    }
+
     @Override
     public void mergeWith( IdentifiableObject other )
     {

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/ReportService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/ReportService.java	2012-09-23 15:49:44 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/ReportService.java	2012-09-24 06:03:31 +0000
@@ -44,7 +44,7 @@
     final String REPORTTYPE_XLS = "xls";
 
     final String PARAM_RELATIVE_PERIODS = "periods";
-    final String PARAM_ORG_UNITS = "org_units";
+    final String PARAM_ORG_UNITS = "orgunits";
     
     void renderReport( OutputStream out, String reportUid, Date reportingPeriod,
                        String organisationUnitUid, String type, I18nFormat format );

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTableService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTableService.java	2012-05-15 20:20:50 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTableService.java	2012-09-24 05:42:39 +0000
@@ -142,16 +142,6 @@
      */
     Grid getReportTableGrid( ReportTable reportTable, I18nFormat format, Date reportingPeriod, String organisationUnitUid, boolean minimal );
     
-    /**
-     * If report table mode, this method will return the report table with the
-     * given identifier. If report mode, this method will return the report
-     * tables associated with the report.
-     *
-     * @param uid the uid.
-     * @param mode the mode.
-     */
-    ReportTable getReportTable( String uid, String mode );
-
     Collection<ReportTable> getReportTablesBetween( int first, int max );
 
     Collection<ReportTable> getReportTablesBetweenByName( String name, int first, int max );

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java	2012-08-31 14:38:21 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java	2012-09-24 05:42:39 +0000
@@ -155,20 +155,6 @@
         return getGrid( reportTable, minimal );
     }
     
-    public ReportTable getReportTable( String uid, String mode )
-    {
-        if ( mode.equals( MODE_REPORT_TABLE ) )
-        {
-            return getReportTable( uid );
-        }
-        else if ( mode.equals( MODE_REPORT ) )
-        {
-            return reportService.getReport( uid ).getReportTable();
-        }
-
-        return null;
-    }
-
     // -------------------------------------------------------------------------
     // Persistence
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml	2012-09-23 14:24:14 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml	2012-09-24 05:42:39 +0000
@@ -18,11 +18,17 @@
     <property name="designContent" type="text" />
 
     <many-to-one name="reportTable" class="org.hisp.dhis.reporttable.ReportTable" column="reporttableid"
-        foreign-key="fk_report_reporttableid" />
+      foreign-key="fk_report_reporttableid" />
 
     <property name="usingOrgUnitGroupSets" />
     
     <many-to-one name="relatives" unique="true" class="org.hisp.dhis.period.RelativePeriods" column="relativeperiodsid"
-         cascade="all-delete-orphan" foreign-key="fk_report_relativeperiodsid" />
+      cascade="all-delete-orphan" foreign-key="fk_report_relativeperiodsid" />
+    
+    <component name="reportParams">
+      <property name="paramReportingMonth" />
+      <property name="paramOrganisationUnit" />
+    </component>
+    
   </class>
 </hibernate-mapping>
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java	2012-09-23 14:24:14 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java	2012-09-24 05:42:39 +0000
@@ -35,6 +35,7 @@
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.report.Report;
 import org.hisp.dhis.report.ReportService;
+import org.hisp.dhis.reporttable.ReportParams;
 import org.hisp.dhis.reporttable.ReportTable;
 import org.hisp.dhis.reporttable.ReportTableService;
 import org.hisp.dhis.system.util.StreamUtils;
@@ -137,6 +138,20 @@
         this.currentDesign = currentDesign;
     }
 
+    private boolean paramReportingMonth;
+
+    public void setParamReportingMonth( boolean paramReportingMonth )
+    {
+        this.paramReportingMonth = paramReportingMonth;
+    }
+
+    private boolean paramOrganisationUnit;
+
+    public void setParamOrganisationUnit( boolean paramOrganisationUnit )
+    {
+        this.paramOrganisationUnit = paramOrganisationUnit;
+    }
+
     // -------------------------------------------------------------------------
     // Output
     // -------------------------------------------------------------------------
@@ -181,11 +196,14 @@
         
         ReportTable reportTable = reportTableService.getReportTable( reportTableId );
         
+        ReportParams reportParams = new ReportParams( paramReportingMonth, false, false, false, paramOrganisationUnit );
+        
         report.setName( name );
         report.setReportTable( reportTable );
         report.setUsingOrgUnitGroupSets( usingOrgUnitGroupSets );
         report.setRelatives( getRelativePeriods() );
-                
+        report.setReportParams( reportParams );
+        
         log.info( "Upload file name: " + fileName + ", content type: " + contentType );
 
         // ---------------------------------------------------------------------

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/tablecreator/action/GetReportParamsAction.java'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/tablecreator/action/GetReportParamsAction.java	2012-04-23 09:35:01 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/tablecreator/action/GetReportParamsAction.java	2012-09-24 05:42:39 +0000
@@ -34,6 +34,9 @@
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.period.CalendarPeriodType;
 import org.hisp.dhis.period.Period;
+import org.hisp.dhis.period.RelativePeriods;
+import org.hisp.dhis.report.Report;
+import org.hisp.dhis.report.ReportService;
 import org.hisp.dhis.reporttable.ReportParams;
 import org.hisp.dhis.reporttable.ReportTable;
 import org.hisp.dhis.reporttable.ReportTableService;
@@ -42,9 +45,10 @@
 
 import com.opensymphony.xwork2.Action;
 
+import static org.hisp.dhis.reporttable.ReportTableService.*;
+
 /**
  * @author Lars Helge Overland
- * @version $Id$
  */
 public class GetReportParamsAction
     implements Action
@@ -60,6 +64,13 @@
         this.reportTableService = reportTableService;
     }
 
+    protected ReportService reportService;
+
+    public void setReportService( ReportService reportService )
+    {
+        this.reportService = reportService;
+    }
+
     private I18nFormat format;
 
     public void setFormat( I18nFormat format )
@@ -119,26 +130,49 @@
 
     public String execute()
     {
-        if ( mode != null && uid != null )
-        {
-            ReportTable reportTable = reportTableService.getReportTable( uid, mode);
-            
+        if ( mode == null || uid == null )
+        {
+            return SUCCESS;
+        }
+                    
+        RelativePeriods relatives = null;
+        
+        if ( MODE_REPORT_TABLE.equals( mode ) )
+        {
+            ReportTable reportTable = reportTableService.getReportTable( uid );
+        
             if ( reportTable != null )
             {
-                reportParams = reportTable.getReportParams();
-                                
-                if ( reportParams.isParamReportingMonth() && reportTable.getRelatives() != null )
-                {
-                    CalendarPeriodType periodType = (CalendarPeriodType) reportTable.getRelatives().getPeriodType();
-                    periods = periodType.generateLast5Years( new Date() );
-                    Collections.reverse( periods );
-                    FilterUtils.filter( periods, new PastAndCurrentPeriodFilter() );
-                    
-                    for ( Period period : periods )
-                    {
-                        period.setName( format.formatPeriod( period ) );
-                    }
-                }
+                reportParams = reportTable.getReportParams();                                
+                relatives = reportTable.getRelatives();
+            }
+        }
+        else if ( MODE_REPORT.equals( mode ) )
+        {
+            Report report = reportService.getReport( uid );
+            
+            if ( report != null && report.isReportTableDataSource() )
+            {
+                reportParams = report.getReportTable().getReportParams();                
+                relatives = report.getReportTable().getRelatives();
+            }
+            else if ( report != null && report.isJdbcDataSource() )
+            {
+                reportParams = report.getReportParams();                
+                relatives = report.getRelatives();
+            }
+        }
+        
+        if ( reportParams.isParamReportingMonth() && relatives != null )
+        {
+            CalendarPeriodType periodType = (CalendarPeriodType) relatives.getPeriodType();
+            periods = periodType.generateLast5Years( new Date() );
+            Collections.reverse( periods );
+            FilterUtils.filter( periods, new PastAndCurrentPeriodFilter() );
+            
+            for ( Period period : periods )
+            {
+                period.setName( format.formatPeriod( period ) );
             }
         }
         

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml	2012-09-03 19:48:33 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml	2012-09-24 05:42:39 +0000
@@ -85,6 +85,7 @@
 
   <bean id="org.hisp.dhis.reporting.tablecreator.action.GetReportParamsAction" class="org.hisp.dhis.reporting.tablecreator.action.GetReportParamsAction"
     scope="prototype">
+    <property name="reportService" ref="org.hisp.dhis.report.ReportService" />
     <property name="reportTableService" ref="org.hisp.dhis.reporttable.ReportTableService" />
   </bean>
 

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/addReportForm.vm'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/addReportForm.vm	2012-09-23 14:24:14 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/addReportForm.vm	2012-09-24 05:42:39 +0000
@@ -47,9 +47,6 @@
         	<a class="jdbcDataSource" onclick="toggleDataSource()" style="cursor:pointer; display:none">Use report table data source</a>
         </td>
     </tr>
-    <tr class="reportTableDataSource">
-    	<th colspan="2">$i18n.getString( "report_table" )</th>
-    </tr>
 	<tr class="reportTableDataSource">
 		<td>$i18n.getString( "report_table" )</td>
 		<td>
@@ -67,6 +64,20 @@
 	<tr class="jdbcDataSource" style="display:none">
         <td colspan="2">#parse( "/dhis-web-reporting/relativePeriodsInput.vm" )</td>
     </tr>
+    <tr class="jdbcDataSource" style="display:none">
+        <td colspan="2" style="height:15px"></td>
+    </tr>
+    <tr class="jdbcDataSource" style="display:none">
+        <th colspan="2">$i18n.getString( "report_parameters" )</th>
+    </tr>
+    <tr class="jdbcDataSource" style="display:none">
+        <td colspan="2">
+            <label for="paramReportingMonth">$i18n.getString( "reporting_period" )</label>
+            <input type="checkbox" id="paramReportingMonth" name="paramReportingMonth" value="true"#if( $report.reportParams.isParamReportingMonth() ) checked#end>&nbsp;
+            <label for="paramOrganisationUnit">$i18n.getString( "organisation_unit" )</label>
+            <input type="checkbox" id="paramOrganisationUnit" name="paramOrganisationUnit" value="true"#if( $report.reportParams.isParamOrganisationUnit() ) checked#end>
+        <td>
+    </tr>
     <tr>
         <td colspan="2" style="height:15px"></td>
     </tr>

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/generateReport.js'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/generateReport.js	2012-06-14 18:56:38 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/generateReport.js	2012-09-24 05:42:39 +0000
@@ -22,7 +22,7 @@
 
 function viewReport( type )
 {
-	var reportType = type != null && type != "" ? type : "pdf";
+	var reportType = isDefined( type ) && type != "" ? type : "pdf";
 
     if ( validationError() )
     {

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/viewReportForm.vm'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/viewReportForm.vm	2012-07-19 07:37:36 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/viewReportForm.vm	2012-09-24 05:42:39 +0000
@@ -39,8 +39,7 @@
                 <tr id="tr${report.id}">
                     <td>$encoder.htmlEncode( $report.name )</td>
                     <td style="text-align:right">
-                    	#if ( $report.hasReportTable() ) <a href="getReportParams.action?uid=${report.uid}&mode=report" title="$i18n.getString( 'create' )">
-                    	#else <a href="../api/reports/${report.uid}/data.pdf" title="$i18n.getString( 'create' )">#end
+                    	<a href="getReportParams.action?uid=${report.uid}&mode=report" title="$i18n.getString( 'create' )">                    	
                     	<img src="../images/start_process.png" alt="$i18n.getString( 'create' )"></a>                   
 						<a href="displayAddReportForm.action?id=$report.id" title="$i18n.getString( 'edit_report' )"><img src="../images/edit.png" alt="$i18n.getString( 'edit_report' )"></a>
 						<a href="javascript:addToDashboard( '$report.id' )" title="$i18n.getString( 'add_to_dashboard' )"><img src="../images/add_to_dashboard.png" alt="$i18n.getString( 'add_to_dashboard' )"></a>