dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #36805
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18820: Approval. Improvement to analytics approval logic.
------------------------------------------------------------
revno: 18820
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2015-04-07 14:03:39 +0200
message:
Approval. Improvement to analytics approval logic.
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalLevelService.java
dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java
--
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/dataapproval/DataApprovalLevelService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalLevelService.java 2015-03-26 14:25:02 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalLevelService.java 2015-04-07 12:03:39 +0000
@@ -45,10 +45,15 @@
String ID = DataApprovalLevelService.class.getName();
/**
- * Integer that can be used in place of approval level
+ * Constant that can be used in place of approval level
* for data that has not been approved at any level.
*/
public static final int APPROVAL_LEVEL_UNAPPROVED = 999;
+
+ /**
+ * Constant representing the highest possible level of approval.
+ */
+ public static final int APPROVAL_LEVEL_HIGHEST = 0;
/**
* Gets the data approval level with the given id.
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2015-04-05 20:08:26 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2015-04-07 12:03:39 +0000
@@ -28,7 +28,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import static org.hisp.dhis.dataapproval.DataApprovalLevelService.APPROVAL_LEVEL_UNAPPROVED;
+import static org.hisp.dhis.dataapproval.DataApprovalLevelService.APPROVAL_LEVEL_HIGHEST;
import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_CATEGORY_OPTION_COMBO_NAME;
import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_DATA_ELEMENT_STRUCTURE;
import static org.hisp.dhis.resourcetable.ResourceTableStore.TABLE_NAME_DATE_PERIOD_STRUCTURE;
@@ -376,13 +376,18 @@
final DataSet dataSet = dataElement.getDataSet();
final PeriodType periodType = dataElement.getPeriodType();
+ // -----------------------------------------------------------------
+ // Use highest approval level if data set does not require approval,
+ // or null if approval is required.
+ // -----------------------------------------------------------------
+
values.add( dataElement.getId() );
values.add( dataElement.getUid() );
values.add( dataElement.getName() );
values.add( dataSet != null ? dataSet.getId() : null );
values.add( dataSet != null ? dataSet.getUid() : null );
values.add( dataSet != null ? dataSet.getName() : null );
- values.add( dataSet != null && dataSet.isApproveData() ? APPROVAL_LEVEL_UNAPPROVED : 0 );
+ values.add( dataSet != null && dataSet.isApproveData() ? null : APPROVAL_LEVEL_HIGHEST );
values.add( periodType != null ? periodType.getId() : null );
values.add( periodType != null ? periodType.getName() : null );
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java 2015-03-13 15:48:26 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java 2015-04-07 12:03:39 +0000
@@ -238,10 +238,15 @@
populateAndLog( sql, tableName + ", " + valueType );
}
+ /**
+ * Returns sub-query for approval level. First looks for approval level in
+ * data element resource table which will indicate level 0 (highest) if approval
+ * is not required. Then looks for highest level in dataapproval table.
+ */
private String getApprovalSubquery()
{
String sql = "(" +
- "select coalesce(min(dal.level), des.datasetapprovallevel) " +
+ "select coalesce(des.datasetapprovallevel, min(dal.level)) " +
"from dataapproval da " +
"inner join dataapprovallevel dal on da.dataapprovallevelid = dal.dataapprovallevelid " +
"where da.periodid = dv.periodid " +