dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #19120
[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>
+ <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>