← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18414: Event analytics, added support for legend set in aggregate queries. This will group the counts in...

 

------------------------------------------------------------
revno: 18414
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2015-02-25 16:59:31 +0100
message:
  Event analytics, added support for legend set in aggregate queries. This will group the counts into ranges in the output.
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java
  dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java
  dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java
  dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java
  dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java
  dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java
  dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.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/QueryItem.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java	2015-02-25 09:51:40 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/QueryItem.java	2015-02-25 15:59:31 +0000
@@ -32,6 +32,7 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.hisp.dhis.legend.LegendSet;
 import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
 import org.hisp.dhis.util.ObjectUtils;
 
@@ -44,6 +45,8 @@
 public class QueryItem
 {
     private NameableObject item;
+    
+    private LegendSet legendSet;
 
     private List<QueryFilter> filters = new ArrayList<>();
     
@@ -60,9 +63,10 @@
         this.item = item;
     }
 
-    public QueryItem( NameableObject item, String valueType, String optionSet )
+    public QueryItem( NameableObject item, LegendSet legendSet, String valueType, String optionSet )
     {
         this.item = item;
+        this.legendSet = legendSet;
         this.valueType = valueType;
         this.optionSet = optionSet;
     }
@@ -88,6 +92,18 @@
         return item.getUid();
     }
     
+    public String getItemName()
+    {
+        String itemName = item.getUid();
+        
+        if ( legendSet != null )
+        {
+            itemName += "_" + legendSet.getUid();
+        }
+        
+        return itemName;
+    }
+    
     public String getTypeAsString()
     {
         return ObjectUtils.VALUE_TYPE_JAVA_CLASS_MAP.get( valueType ).getName();
@@ -109,7 +125,7 @@
         
         for ( TrackedEntityAttribute attribute : attributes )
         {
-            queryItems.add( new QueryItem( attribute, attribute.getValueType(), attribute.hasOptionSet() ? attribute.getOptionSet().getUid() : null ) );
+            queryItems.add( new QueryItem( attribute, attribute.getLegendSet(), attribute.getValueType(), attribute.hasOptionSet() ? attribute.getOptionSet().getUid() : null ) );
         }
         
         return queryItems;
@@ -168,6 +184,16 @@
         this.item = item;
     }
 
+    public LegendSet getLegendSet()
+    {
+        return legendSet;
+    }
+
+    public void setLegendSet( LegendSet legendSet )
+    {
+        this.legendSet = legendSet;
+    }
+
     public List<QueryFilter> getFilters()
     {
         return filters;

=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java	2015-02-19 09:18:17 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java	2015-02-25 15:59:31 +0000
@@ -574,7 +574,8 @@
     }
     
     /**
-     * Returns a list of dimensions which occur more than once.
+     * Returns a list of dimensions which occur more than once, not including
+     * the first duplicate.
      */
     public List<DimensionalObject> getDuplicateDimensions()
     {

=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java	2015-02-17 21:46:41 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java	2015-02-25 15:59:31 +0000
@@ -173,7 +173,8 @@
     }
 
     /**
-     * Returns a list of query items which occur more than once.
+     * Returns a list of query items which occur more than once, not including
+     * the first duplicate.
      */
     public List<QueryItem> getDuplicateQueryItems()
     {

=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java	2015-02-18 17:33:23 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java	2015-02-25 15:59:31 +0000
@@ -33,6 +33,7 @@
 import static org.hisp.dhis.common.DimensionalObject.ORGUNIT_DIM_ID;
 import static org.hisp.dhis.common.DimensionalObject.PERIOD_DIM_ID;
 import static org.hisp.dhis.common.DimensionalObjectUtils.DIMENSION_NAME_SEP;
+import static org.hisp.dhis.common.DimensionalObjectUtils.ITEM_SEP;
 import static org.hisp.dhis.common.DimensionalObjectUtils.getDimensionFromParam;
 import static org.hisp.dhis.common.DimensionalObjectUtils.getDimensionItemsFromParam;
 import static org.hisp.dhis.common.DimensionalObjectUtils.toDimension;
@@ -76,6 +77,8 @@
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.i18n.I18nFormat;
+import org.hisp.dhis.legend.LegendService;
+import org.hisp.dhis.legend.LegendSet;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
 import org.hisp.dhis.program.Program;
@@ -124,11 +127,14 @@
 
     @Autowired
     private TrackedEntityAttributeService attributeService;
-
+    
     @Autowired
     private OrganisationUnitService organisationUnitService;
 
     @Autowired
+    private LegendService legendService;
+
+    @Autowired
     private EventAnalyticsManager analyticsManager;
 
     @Autowired
@@ -543,7 +549,7 @@
             throw new IllegalQueryException( "Query item or filter is invalid: " + dimensionString );
         }
         
-        QueryItem queryItem = getQueryItemFromUid( split[0] );
+        QueryItem queryItem = getQueryItemFromDimension( split[0] );
         
         if ( split.length > 1 ) // Filters specified
         {   
@@ -651,20 +657,26 @@
         return item;
     }
 
-    private QueryItem getQueryItemFromUid( String item )
+    private QueryItem getQueryItemFromDimension( String dimension )
     {
+        String[] split = dimension.split( ITEM_SEP );
+
+        String item = split[0];
+
+        LegendSet legendSet = split.length > 1 && split[1] != null ? legendService.getLegendSet( split[1] ) : null;
+        
         DataElement de = dataElementService.getDataElement( item );
 
         if ( de != null ) //TODO check if part of program
         {
-            return new QueryItem( de, de.getType(), de.hasOptionSet() ? de.getOptionSet().getUid() : null );
+            return new QueryItem( de, legendSet, de.getType(), de.hasOptionSet() ? de.getOptionSet().getUid() : null );
         }
 
         TrackedEntityAttribute at = attributeService.getTrackedEntityAttribute( item );
 
         if ( at != null )
         {
-            return new QueryItem( at, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
+            return new QueryItem( at, legendSet, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
         }
 
         throw new IllegalQueryException( "Item identifier does not reference any data element or attribute part of the program: " + item );

=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java	2015-02-19 09:18:17 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java	2015-02-25 15:59:31 +0000
@@ -55,7 +55,6 @@
 import org.hisp.dhis.common.DimensionType;
 import org.hisp.dhis.common.DimensionalObject;
 import org.hisp.dhis.common.Grid;
-import org.hisp.dhis.common.IdentifiableObject;
 import org.hisp.dhis.common.NameableObject;
 import org.hisp.dhis.common.QueryFilter;
 import org.hisp.dhis.common.QueryItem;
@@ -171,7 +170,7 @@
             
             for ( QueryItem queryItem : params.getItems() )
             {
-                String itemValue = rowSet.getString( queryItem.getItem().getUid() );                
+                String itemValue = rowSet.getString( queryItem.getItemName() );                
                 grid.addValue( itemValue );
             }
             
@@ -389,12 +388,10 @@
         {
             sql += statementBuilder.columnQuote( dimension.getDimensionName() ) + ",";
         }
-                
+        
         for ( QueryItem queryItem : params.getItems() )
-        {
-            IdentifiableObject item = queryItem.getItem();
-            
-            sql += statementBuilder.columnQuote( item.getUid() ) + ",";
+        {            
+            sql += statementBuilder.columnQuote( queryItem.getItemName() ) + ",";
         }
         
         return removeLastComma( sql );
@@ -523,7 +520,7 @@
      */
     private String getColumn( QueryItem item )
     {
-        String col = statementBuilder.columnQuote( item.getItem().getUid() );
+        String col = statementBuilder.columnQuote( item.getItemName() );
         
         return item.isNumeric() ? col : "lower(" + col + ")"; 
     }
@@ -548,7 +545,7 @@
     {
         if ( columns == null || columns.isEmpty() )
         {
-            return "";
+            return StringUtils.EMPTY;
         }
         
         String fixedCols = StringUtils.join( columns, ", " );

=== modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java'
--- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java	2015-02-10 18:40:27 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java	2015-02-25 15:59:31 +0000
@@ -1738,7 +1738,7 @@
             else
             {
                 TrackedEntityAttribute at = attributeService.getTrackedEntityAttributeByName( split[0] );
-                QueryItem queryItem = new QueryItem( at, at.getValueType(), null );
+                QueryItem queryItem = new QueryItem( at, null, at.getValueType(), null );
                 QueryOperator operator = QueryOperator.fromString( split[1] );
                 queryItem.getFilters().add( new QueryFilter( operator, split[2] ) );
                 param.getFilters().add( queryItem );

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java	2015-02-22 20:02:00 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java	2015-02-25 15:59:31 +0000
@@ -490,7 +490,7 @@
             throw new IllegalQueryException( "Attribute does not exist: " + item );
         }
         
-        return new QueryItem( at, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
+        return new QueryItem( at, null, at.getValueType(), at.hasOptionSet() ? at.getOptionSet().getUid() : null );
     }
     
     /**