← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 10387: Analytics, fixed bug with xls response

 

------------------------------------------------------------
revno: 10387
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2013-03-21 16:07:48 +0100
message:
  Analytics, fixed bug with xls response
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Grid.java
  dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsService.java
  dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java
  dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/grid/ListGrid.java
  dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/grid/GridTest.java
  dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AnalyticsController.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/common/Grid.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Grid.java	2013-03-19 17:54:54 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Grid.java	2013-03-21 15:07:48 +0000
@@ -246,8 +246,10 @@
     /**
      * Substitutes the values in the meta columns with the mapped value in the
      * meta-data map.
+     * 
+     * @param metaDataMap meta-data map of keys and substitutions.
      */
-    Grid substituteMetaData();
+    Grid substituteMetaData( Map<Object, Object> metaDataMap );
     
     /**
      * Adds a set of headers based on the column names of the given SQL result set.

=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsService.java	2013-03-07 21:00:55 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsService.java	2013-03-21 15:07:48 +0000
@@ -35,6 +35,8 @@
 
 public interface AnalyticsService
 {
+    final String NAMES_META_KEY = "names";
+    
     Grid getAggregatedDataValues( DataQueryParams params );
     
     Map<String, Double> getAggregatedDataValueMap( DataQueryParams params );

=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java	2013-03-20 13:27:21 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java	2013-03-21 15:07:48 +0000
@@ -116,7 +116,6 @@
     private static final Log log = LogFactory.getLog( DefaultAnalyticsService.class );
     
     private static final String VALUE_HEADER_NAME = "Value";
-    private static final String NAMES_META_KEY = "names";
     private static final int PERCENT = 100;
     private static final int MAX_QUERIES = 8;
     

=== modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/grid/ListGrid.java'
--- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/grid/ListGrid.java	2013-03-19 17:54:54 +0000
+++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/grid/ListGrid.java	2013-03-21 15:07:48 +0000
@@ -531,9 +531,9 @@
         return this;
     }
     
-    public Grid substituteMetaData()
+    public Grid substituteMetaData( Map<Object, Object> metaDataMap )
     {
-        if ( metaData == null || headers == null || headers.isEmpty() )
+        if ( metaDataMap == null || headers == null || headers.isEmpty() )
         {
             return this;
         }
@@ -546,7 +546,7 @@
             {
                 // Header
                 
-                Object headerMetaName = metaData.get( header.getName() );
+                Object headerMetaName = metaDataMap.get( header.getName() );
                 
                 if ( headerMetaName != null )
                 {
@@ -561,7 +561,7 @@
                 {
                     Object object = col.get( rowIndex );
                     
-                    Object meta = metaData.get( object );
+                    Object meta = metaDataMap.get( object );
                     
                     if ( meta != null )
                     {

=== modified file 'dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/grid/GridTest.java'
--- dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/grid/GridTest.java	2013-03-19 17:54:54 +0000
+++ dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/grid/GridTest.java	2013-03-21 15:07:48 +0000
@@ -97,15 +97,13 @@
         metaData.put( 12, "Twelve" );
         metaData.put( 21, "TwentyOne" );
         metaData.put( 22, "TwentyTwo" );
-        
-        grid.setMetaData( metaData );
-        
+                
         assertEquals( 11, grid.getValue( 0, 0 ) );
         assertEquals( 12, grid.getValue( 0, 1 ) );
         assertEquals( 21, grid.getValue( 1, 0 ) );
         assertEquals( 22, grid.getValue( 1, 1 ) );
         
-        grid.substituteMetaData();
+        grid.substituteMetaData( metaData );
 
         assertEquals( "Eleven", grid.getValue( 0, 0 ) );
         assertEquals( "Twelve", grid.getValue( 0, 1 ) );

=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AnalyticsController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AnalyticsController.java	2013-03-07 10:31:15 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AnalyticsController.java	2013-03-21 15:07:48 +0000
@@ -28,6 +28,7 @@
  */
 
 import java.io.IOException;
+import java.util.Map;
 import java.util.Set;
 
 import javax.servlet.http.HttpServletResponse;
@@ -49,6 +50,8 @@
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import static org.hisp.dhis.analytics.AnalyticsService.NAMES_META_KEY;
+
 @Controller
 public class AnalyticsController
 {
@@ -114,7 +117,7 @@
 
         contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_HTML, CacheStrategy.RESPECT_SYSTEM_SETTING );
         Grid grid = analyticsService.getAggregatedDataValues( params );
-        GridUtils.toHtml( grid.substituteMetaData(), response.getWriter() );
+        GridUtils.toHtml( substituteMetaData( grid ), response.getWriter() );
     }
 
     @RequestMapping( value = RESOURCE_PATH + ".csv", method = RequestMethod.GET )
@@ -130,7 +133,7 @@
 
         contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_CSV, CacheStrategy.RESPECT_SYSTEM_SETTING, "data.csv", true );
         Grid grid = analyticsService.getAggregatedDataValues( params );
-        GridUtils.toCsv( grid.substituteMetaData(), response.getOutputStream() );
+        GridUtils.toCsv( substituteMetaData( grid ), response.getOutputStream() );
     }
     
     @RequestMapping( value = RESOURCE_PATH + ".xls", method = RequestMethod.GET )
@@ -146,7 +149,7 @@
 
         contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_EXCEL, CacheStrategy.RESPECT_SYSTEM_SETTING, "data.xls", true );
         Grid grid = analyticsService.getAggregatedDataValues( params );
-        GridUtils.toXls( grid.substituteMetaData(), response.getOutputStream() );
+        GridUtils.toXls( substituteMetaData( grid ), response.getOutputStream() );
     }
 
     // -------------------------------------------------------------------------
@@ -159,4 +162,19 @@
     {
         ContextUtils.conflictResponse( response, ex.getMessage() );
     }
+
+    // -------------------------------------------------------------------------
+    // Supportive methods
+    // -------------------------------------------------------------------------
+  
+    @SuppressWarnings("unchecked")
+    private Grid substituteMetaData( Grid grid )
+    {
+        if ( grid.getMetaData() != null && grid.getMetaData().containsKey( NAMES_META_KEY ) )
+        {
+            grid.substituteMetaData( (Map<Object, Object>) grid.getMetaData().get( NAMES_META_KEY ) );
+        }
+        
+        return grid;
+    }
 }