← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 8073: DataBrowser - Fixed bug show data drilldown in DataSet mode.

 

------------------------------------------------------------
revno: 8073
committer: Hieu <hieu.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2012-09-13 18:16:27 +0700
message:
  DataBrowser - Fixed bug show data drilldown in DataSet mode.
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/databrowser/DataBrowserGridStore.java
  dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/DefaultDataBrowserGridService.java
  dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/JDBCDataBrowserStore.java
  dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserServiceTest.java
  dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserStoreTest.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module_vi_VN.properties


--
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/databrowser/DataBrowserGridStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/databrowser/DataBrowserGridStore.java	2011-03-12 10:25:49 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/databrowser/DataBrowserGridStore.java	2012-09-13 11:16:27 +0000
@@ -30,6 +30,7 @@
 import java.util.List;
 
 import org.hisp.dhis.common.Grid;
+import org.hisp.dhis.period.PeriodType;
 
 /**
  * Contains methods for creating aggregated count queries for the Data Browser
@@ -51,10 +52,11 @@
      * an aggregated count.
      * 
      * @param betweenPeriodIds list of Period ids
+     * @param periodType
      * @param isZeroAdded if true then Zero can be added and false is not
      * @return the Grid with structure for presentation
      */
-    Grid getDataSetsBetweenPeriods( List<Integer> betweenPeriodIds, boolean isZeroAdded );
+    Grid getDataSetsBetweenPeriods( List<Integer> betweenPeriodIds, PeriodType periodType, boolean isZeroAdded );
 
     /**
      * Finds all DataElementGroups connected to any period in betweenPeriodIds
@@ -150,13 +152,14 @@
      * 
      * @param grid the Grid to insert column into
      * @param dataSetId id of DataSet the DataElements are for
+     * @param periodType the type of period
      * @param betweenPeriodIds List of Period ids
      * @param metaIds List of MetaValue ids
      * @param isZeroAdded if true then Zero can be added and false is not
      * @return 0 if no results are found else number of rows inserted
      */
-    Integer setCountDataElementsForDataSetBetweenPeriods( Grid grid, Integer dataSetId, List<Integer> betweenPeriodIds,
-        List<Integer> metaIds, boolean isZeroAdded );
+    Integer setCountDataElementsForDataSetBetweenPeriods( Grid grid, Integer dataSetId, PeriodType periodType,
+        List<Integer> betweenPeriodIds, List<Integer> metaIds, boolean isZeroAdded );
 
     /**
      * Sets DataElement count-Columns in DataBrowserTable for betweenPeriod List

=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/DefaultDataBrowserGridService.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/DefaultDataBrowserGridService.java	2011-03-14 09:16:45 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/DefaultDataBrowserGridService.java	2012-09-13 11:16:27 +0000
@@ -92,7 +92,7 @@
         List<Integer> betweenPeriodIds = getAllPeriodIdsBetweenDatesOnPeriodType( startDate, endDate, periodType,
             format );
 
-        return dataBrowserGridStore.getDataSetsBetweenPeriods( betweenPeriodIds, isZeroAdded );
+        return dataBrowserGridStore.getDataSetsBetweenPeriods( betweenPeriodIds, periodType, isZeroAdded );
     }
 
     public Grid getDataElementGroupsInPeriod( String startDate, String endDate, PeriodType periodType,
@@ -145,8 +145,8 @@
 
         dataBrowserGridStore.setDataElementStructureForDataSet( grid, dataSetId, metaIds );
 
-        dataBrowserGridStore.setCountDataElementsForDataSetBetweenPeriods( grid, dataSetId, betweenPeriodIds, metaIds,
-            isZeroAdded );
+        dataBrowserGridStore.setCountDataElementsForDataSetBetweenPeriods( grid, dataSetId, periodType,
+            betweenPeriodIds, metaIds, isZeroAdded );
 
         return grid;
     }
@@ -282,11 +282,8 @@
             endDate = ENDDATE;
         }
 
-        Date date1 = new Date();
-        Date date2 = new Date();
-
-        date1 = i18nFormat.parseDate( startDate );
-        date2 = i18nFormat.parseDate( endDate );
+        Date date1 = i18nFormat.parseDate( startDate );
+        Date date2 = i18nFormat.parseDate( endDate );
 
         Collection<Period> pp = periodService.getPeriodsBetweenDates( periodType, date1, date2 );
 
@@ -295,8 +292,7 @@
 
         while ( it.hasNext() )
         {
-            Period p = it.next();
-            betweenPeriodIds.add( p.getId() );
+            betweenPeriodIds.add( it.next().getId() );
         }
 
         if ( betweenPeriodIds.size() <= 0 )

=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/JDBCDataBrowserStore.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/JDBCDataBrowserStore.java	2012-07-20 09:12:57 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/databrowser/jdbc/JDBCDataBrowserStore.java	2012-09-13 11:16:27 +0000
@@ -8,6 +8,7 @@
 import org.hisp.dhis.databrowser.util.DataBrowserUtils;
 import org.hisp.dhis.jdbc.StatementBuilder;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
+import org.hisp.dhis.period.PeriodType;
 import org.hisp.dhis.system.grid.ListGrid;
 import org.springframework.jdbc.core.JdbcTemplate;
 
@@ -50,7 +51,7 @@
     // Basic
     // -------------------------------------------------------------------------
 
-    public Grid getDataSetsBetweenPeriods( List<Integer> betweenPeriodIds, boolean isZeroAdded )
+    public Grid getDataSetsBetweenPeriods( List<Integer> betweenPeriodIds, PeriodType periodType, boolean isZeroAdded )
     {
         StringBuffer sqlsb = new StringBuffer();
 
@@ -58,8 +59,8 @@
         sqlsb.append( "FROM datavalue dv " );
         sqlsb.append( "JOIN datasetmembers dsm ON (dv.dataelementid = dsm.dataelementid) " );
         sqlsb.append( "JOIN dataset d ON (d.datasetid = dsm.datasetid) " );
-        sqlsb.append( "JOIN period p ON (dv.periodid = p.periodid) " );
         sqlsb.append( "WHERE dv.periodid IN " + splitListHelper( betweenPeriodIds ) + " " );
+        sqlsb.append( "AND d.periodtypeid=" + periodType.getId() + " " );
         sqlsb.append( "GROUP BY d.datasetid, d.name " );
         sqlsb.append( "ORDER BY counts_of_aggregated_values DESC)" );
 
@@ -202,7 +203,7 @@
     // Advance - Set count
     // -------------------------------------------------------------------------
 
-    public Integer setCountDataElementsForDataSetBetweenPeriods( Grid grid, Integer dataSetId,
+    public Integer setCountDataElementsForDataSetBetweenPeriods( Grid grid, Integer dataSetId, PeriodType periodType,
         List<Integer> betweenPeriodIds, List<Integer> metaIds, boolean isZeroAdded )
     {
         // Here we uses a for loop to create one big sql statement using UNION.
@@ -222,8 +223,11 @@
             sqlsb.append( "(SELECT de.dataelementid, de.name AS dataelement, COUNT(*) AS counts_of_aggregated_values, p.periodid AS PeriodId, p.startdate AS ColumnHeader " );
             sqlsb.append( "FROM dataelement de JOIN datavalue dv ON (de.dataelementid = dv.dataelementid) " );
             sqlsb.append( "JOIN datasetmembers dsm ON (de.dataelementid = dsm.dataelementid) " );
+            sqlsb.append( "JOIN dataset ds ON (dsm.datasetid = ds.datasetid) " );
             sqlsb.append( "JOIN period p ON (dv.periodid = p.periodid) " );
-            sqlsb.append( "WHERE dsm.datasetid = '" + dataSetId + "' AND dv.periodid = '" + periodId + "' " );
+            sqlsb.append( "WHERE dsm.datasetid = '" + dataSetId + "' " );
+            sqlsb.append( "AND ds.periodtypeid = '" + periodType.getId() + "' " );
+            sqlsb.append( "AND dv.periodid = '" + periodId + "' " );
             sqlsb.append( "GROUP BY de.dataelementid, de.name, p.periodid, p.startDate)" );
 
             sqlsb.append( i == betweenPeriodIds.size() ? "ORDER BY ColumnHeader" : " UNION " );
@@ -323,23 +327,15 @@
     private String splitListHelper( List<Integer> list )
     {
         StringBuffer sb = new StringBuffer();
-        int count = 0;
 
         sb.append( "(" );
+
         for ( Integer i : list )
         {
-            sb.append( i );
-
-            count++;
-
-            if ( count < list.size() )
-            {
-                sb.append( "," );
-            }
+            sb.append( i ).append( "," );  
         }
-        sb.append( ")" );
 
-        return sb.toString();
+        return sb.substring( 0, sb.length() - ",".length() ).concat( ")" );
     }
 
     private boolean setUpQueryForDrillDownDescendants( StringBuffer sb, Integer orgUnitSelected,

=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserServiceTest.java'
--- dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserServiceTest.java	2011-03-14 09:16:45 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserServiceTest.java	2012-09-13 11:16:27 +0000
@@ -84,17 +84,17 @@
         assertEquals( "counts_of_aggregated_values", grid.getVisibleHeaders().get( 1 ).getName() );
 
         // Sorted by count
-        assertEquals( "Metarows", 3, grid.getRows().size() );
-        assertEquals( dataSetB.getName(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getName() );
-        assertEquals( dataSetB.getId(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getId().intValue() );
-        assertEquals( dataSetA.getName(), ((MetaValue) grid.getRow( 1 ).get( 0 )).getName() );
-        assertEquals( dataSetA.getId(), ((MetaValue) grid.getRow( 1 ).get( 0 )).getId().intValue() );
-        assertEquals( dataSetC.getName(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getName() );
-        assertEquals( dataSetC.getId(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getId().intValue() );
+        assertEquals( "Metarows", 1, grid.getRows().size() );
+        //assertEquals( dataSetB.getName(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getName() );
+        //assertEquals( dataSetB.getId(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getId().intValue() );
+        assertEquals( dataSetA.getName(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getName() );
+        assertEquals( dataSetA.getId(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getId().intValue() );
+        //assertEquals( dataSetC.getName(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getName() );
+        //assertEquals( dataSetC.getId(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getId().intValue() );
 
-        assertEquals( "DataValues in dataSetB", "18", grid.getRow( 0 ).get( 1 ).toString() );
-        assertEquals( "DataValues in dataSetA", "12", grid.getRow( 1 ).get( 1 ).toString() );
-        assertEquals( "DataValues in dataSetC", "3", grid.getRow( 2 ).get( 1 ).toString() );
+        //assertEquals( "DataValues in dataSetB", "18", grid.getRow( 0 ).get( 1 ).toString() );
+        assertEquals( "DataValues in dataSetA", "12", grid.getRow( 0 ).get( 1 ).toString() );
+        //assertEquals( "DataValues in dataSetC", "3", grid.getRow( 2 ).get( 1 ).toString() );
 
         // Get all DataSets from 2005-05-01 to 2005-05-31 registered on weekly
         // basis (this should be only period D data values)
@@ -283,13 +283,15 @@
         assertEquals( "drilldown_data_element", grid.getVisibleHeaders().get( 0 ).getName() );
         assertEquals( "Period column header", "2005-05-01", grid.getVisibleHeaders().get( 1 ).getName() );
 
-        // dataSetC has two dataElements - sorted by name
+        // dataSetC has three dataElements - sorted by name
         assertEquals( "No.Row entries", 3, grid.getRows().size() );
         assertEquals( dataElementC.getName(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getName() );
         assertEquals( dataElementC.getId(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getId().intValue() );
         assertEquals( dataElementE.getName(), ((MetaValue) grid.getRow( 1 ).get( 0 )).getName() );
         assertEquals( dataElementE.getId(), ((MetaValue) grid.getRow( 1 ).get( 0 )).getId().intValue() );
-
+        assertEquals( dataElementF.getName(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getName() );
+        assertEquals( dataElementF.getId(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getId().intValue() );
+        
         assertEquals( "DataValues in dataElementC", "3", grid.getRow( 0 ).get( 1 ).toString() );
         assertEquals( "DataValues in dataElementE", "3", grid.getRow( 1 ).get( 1 ).toString() );
     }

=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserStoreTest.java'
--- dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserStoreTest.java	2011-03-12 10:25:49 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/databrowser/DataBrowserStoreTest.java	2012-09-13 11:16:27 +0000
@@ -75,7 +75,7 @@
         betweenPeriodIds.add( periodC.getId() );
         betweenPeriodIds.add( periodD.getId() );
 
-        Grid grid = dataBrowserStore.getDataSetsBetweenPeriods( betweenPeriodIds, isZeroAdded );
+        Grid grid = dataBrowserStore.getDataSetsBetweenPeriods( betweenPeriodIds, periodA.getPeriodType(), isZeroAdded );
 
         assertNotNull( "Grid not supposed to be null", grid );
 
@@ -84,17 +84,23 @@
         assertEquals( "counts_of_aggregated_values", grid.getVisibleHeaders().get( 1 ).getName() );
 
         // Sorted by count
-        assertEquals( "No.Row entries", 3, grid.getRows().size() );
-        assertEquals( dataSetB.getName(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getName() );
-        assertEquals( dataSetB.getId(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getId().intValue() );
-        assertEquals( dataSetA.getName(), ((MetaValue) grid.getRow( 1 ).get( 0 )).getName() );
-        assertEquals( dataSetA.getId(), ((MetaValue) grid.getRow( 1 ).get( 0 )).getId().intValue() );
-        assertEquals( dataSetC.getName(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getName() );
-        assertEquals( dataSetC.getId(), ((MetaValue) grid.getRow( 2 ).get( 0 )).getId().intValue() );
+        assertEquals( "No.Row entries", 1, grid.getRows().size() );
+        // assertEquals( dataSetB.getName(), ((MetaValue) grid.getRow( 0 ).get(
+        // 0 )).getName() );
+        // assertEquals( dataSetB.getId(), ((MetaValue) grid.getRow( 0 ).get( 0
+        // )).getId().intValue() );
+        assertEquals( dataSetA.getName(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getName() );
+        assertEquals( dataSetA.getId(), ((MetaValue) grid.getRow( 0 ).get( 0 )).getId().intValue() );
+        // assertEquals( dataSetC.getName(), ((MetaValue) grid.getRow( 2 ).get(
+        // 0 )).getName() );
+        // assertEquals( dataSetC.getId(), ((MetaValue) grid.getRow( 2 ).get( 0
+        // )).getId().intValue() );
 
-        assertEquals( "DataValues in dataSetB", "24", grid.getRow( 0 ).get( 1 ).toString() );
-        assertEquals( "DataValues in dataSetA", "18", grid.getRow( 1 ).get( 1 ).toString() );
-        assertEquals( "DataValues in dataSetC", "12", grid.getRow( 2 ).get( 1 ).toString() );
+        // assertEquals( "DataValues in dataSetB", "24", grid.getRow( 0 ).get( 1
+        // ).toString() );
+        assertEquals( "DataValues in dataSetA", "18", grid.getRow( 0 ).get( 1 ).toString() );
+        // assertEquals( "DataValues in dataSetC", "12", grid.getRow( 2 ).get( 1
+        // ).toString() );
     }
 
     /**
@@ -400,8 +406,8 @@
         dataBrowserStore.setDataElementStructureForDataSet( grid, dataSetA.getId(), metaIds );
 
         // Retrieve actual count for dataElements in periodA for dataSetA
-        int results = dataBrowserStore.setCountDataElementsForDataSetBetweenPeriods( grid, dataSetA.getId(), pList,
-            metaIds, isZeroAdded );
+        int results = dataBrowserStore.setCountDataElementsForDataSetBetweenPeriods( grid, dataSetA.getId(), periodA
+            .getPeriodType(), pList, metaIds, isZeroAdded );
         assertEquals( "DataValue results", 1, results );
 
         assertNotNull( "Grid not supposed to be null", grid );

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module_vi_VN.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module_vi_VN.properties	2012-06-08 02:43:59 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module_vi_VN.properties	2012-09-13 11:16:27 +0000
@@ -194,6 +194,9 @@
 sqlquery_is_invalid=Truy v\u1ea5n n\u00e0y kh\u00f4ng h\u1ee3p l\u1ec7.
 mem_count=S\u1ed1 b\u1ed9 nh\u1edb
 drilldown_select_org_unit=Vui l\u00f2ng ch\u1ecdn 1 \u0111\u01a1n v\u1ecb
+drilldown_orgunit=\u0110\u01a1n v\u1ecb
+drilldown_orgunit_group=Nh\u00f3m \u0111\u01a1n v\u1ecb
+
 overlapping_values=C\u00e1c d\u1eef li\u1ec7u ch\u1ed3ng ch\u00e9o trong b\u1ea3n l\u01b0u tr\u1eef.
 locked=\u0110\u00e3 kh\u00f3a
 organisation_units_violation_exclusive_group_sets=C\u00e1c \u0111\u01a1n v\u1ecb vi ph\u1ea1m t\u00ednh \u0111\u1ed9c quy\u1ec1n v\u1edbi c\u00e1c t\u1eadp \u0111\u01a1n v\u1ecb
@@ -309,4 +312,6 @@
 batch_delete=X\u00f3a m\u1ed9t t\u1eadp
 deleting_lock_exceptions=\u0110ang x\u00f3a c\u00e1c kh\u00f3a ngo\u1ea1i l\u1ec7
 Are=B\u1ea1n c\u00f3 ch\u1eafc mu\u1ed1n c\u1ea5t x\u00e9n?
-drilldown_data_element=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
\ No newline at end of file
+drilldown_data_element=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+drilldown_data_element_group= Nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+drilldown_data_set=T\u1eadp d\u1eef li\u1ec7u
\ No newline at end of file