dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #21399
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 10117: Analytics, handling situations where no filters have any items
------------------------------------------------------------
revno: 10117
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Sun 2013-03-10 15:26:48 +0100
message:
Analytics, handling situations where no filters have any items
modified:
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/data/JdbcAnalyticsManager.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-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 2013-03-10 14:13:41 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2013-03-10 14:26:48 +0000
@@ -142,7 +142,8 @@
}
/**
- * Creates a mapping between dimension identifiers and filter dimensions.
+ * Creates a mapping between dimension identifiers and filter dimensions. Filters
+ * are guaranteed not to be null.
*/
public ListMap<String, Dimension> getDimensionFilterMap()
{
@@ -150,7 +151,10 @@
for ( Dimension filter : filters )
{
- map.putValue( filter.getDimension(), filter );
+ if ( filter != null )
+ {
+ map.putValue( filter.getDimension(), filter );
+ }
}
return map;
@@ -643,6 +647,28 @@
return map;
}
+ /**
+ * Indicates whether at least one of the given dimenions has at least one
+ * item.
+ */
+ public static boolean anyDimensionHasItems( Collection<Dimension> dimensions )
+ {
+ if ( dimensions == null || dimensions.isEmpty() )
+ {
+ return false;
+ }
+
+ for ( Dimension dim : dimensions )
+ {
+ if ( dim.hasItems() )
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
// -------------------------------------------------------------------------
// Supportive methods
// -------------------------------------------------------------------------
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/JdbcAnalyticsManager.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/JdbcAnalyticsManager.java 2013-03-10 13:51:37 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/JdbcAnalyticsManager.java 2013-03-10 14:26:48 +0000
@@ -131,19 +131,22 @@
}
}
- ListMap<String, Dimension> filters = params.getDimensionFilterMap();
-
- //TODO check if any items for all filters
-
- for ( String dimension : filters.keySet() )
+ ListMap<String, Dimension> filterMap = params.getDimensionFilterMap();
+
+ for ( String dimension : filterMap.keySet() )
{
- sql += sqlHelper.whereAnd() + " (";
+ List<Dimension> filters = filterMap.get( dimension );
- for ( Dimension filter : filters.get( dimension ) )
+ if ( DataQueryParams.anyDimensionHasItems( filters ) )
{
- if ( filter != null && filter.hasItems() )
+ sql += sqlHelper.whereAnd() + " (";
+
+ for ( Dimension filter : filters )
{
- sql += filter.getDimensionName() + " in (" + getQuotedCommaDelimitedString( getUids( filter.getItems() ) ) + ") or ";
+ if ( filter.hasItems() )
+ {
+ sql += filter.getDimensionName() + " in (" + getQuotedCommaDelimitedString( getUids( filter.getItems() ) ) + ") or ";
+ }
}
}