dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #23963
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11688: Analytics, added option for ignoring max cell number limit in response. Useful when doing export-...
------------------------------------------------------------
revno: 11688
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Sat 2013-08-17 11:24:30 +0200
message:
Analytics, added option for ignoring max cell number limit in response. Useful when doing export-like requests for external analysis. Will add a required authority later.
modified:
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/DataQueryParams.java
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/DefaultQueryPlanner.java
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/MockAnalyticsService.java
dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/AnalyticsServiceTest.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-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-06-19 16:52:32 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsService.java 2013-08-17 09:24:30 +0000
@@ -143,11 +143,12 @@
* @param aggregationType the aggregation type.
* @param measureCriteria the measure criteria.
* @param skipMeta whether to skip the meta data part of the response.
+ * @param ignoreLimit whether to ignore the max number of cells limit.
* @param format the i18n format.
* @return a data query parameter object created based on the given URL info.
*/
DataQueryParams getFromUrl( Set<String> dimensionParams, Set<String> filterParams,
- AggregationType aggregationType, String measureCriteria, boolean skipMeta, I18nFormat format );
+ AggregationType aggregationType, String measureCriteria, boolean skipMeta, boolean ignoreLimit, I18nFormat format );
/**
* Creates a data query parameter object from the given BaseAnalyticalObject.
=== 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-08-15 09:32:41 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2013-08-17 09:24:30 +0000
@@ -112,6 +112,8 @@
private boolean skipMeta;
+ private boolean ignoreLimit;
+
// -------------------------------------------------------------------------
// Transient properties
// -------------------------------------------------------------------------
@@ -1041,6 +1043,16 @@
this.skipMeta = skipMeta;
}
+ public boolean isIgnoreLimit()
+ {
+ return ignoreLimit;
+ }
+
+ public void setIgnoreLimit( boolean ignoreLimit )
+ {
+ this.ignoreLimit = ignoreLimit;
+ }
+
// -------------------------------------------------------------------------
// Get and set methods for transient properties
// -------------------------------------------------------------------------
=== 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-08-16 13:09:16 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-08-17 09:24:30 +0000
@@ -580,11 +580,12 @@
@Override
public DataQueryParams getFromUrl( Set<String> dimensionParams, Set<String> filterParams,
- AggregationType aggregationType, String measureCriteria, boolean skipMeta, I18nFormat format )
+ AggregationType aggregationType, String measureCriteria, boolean skipMeta, boolean ignoreLimit, I18nFormat format )
{
DataQueryParams params = new DataQueryParams();
params.setAggregationType( aggregationType );
+ params.setIgnoreLimit( ignoreLimit );
if ( dimensionParams != null && !dimensionParams.isEmpty() )
{
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultQueryPlanner.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultQueryPlanner.java 2013-05-28 13:48:36 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultQueryPlanner.java 2013-08-17 09:24:30 +0000
@@ -127,7 +127,7 @@
violation = "Category option combos cannot be specified as filter";
}
- if ( params.getNumberOfDimensionOptionPermutations() > MAX_DIM_OPT_PERM )
+ if ( !params.isIgnoreLimit() && params.getNumberOfDimensionOptionPermutations() > MAX_DIM_OPT_PERM )
{
violation = "Table exceeds max number of cells: " + MAX_DIM_OPT_PERM + " (" + params.getNumberOfDimensionOptionPermutations() + ")";
}
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/MockAnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/MockAnalyticsService.java 2013-05-29 18:35:32 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/MockAnalyticsService.java 2013-08-17 09:24:30 +0000
@@ -78,7 +78,7 @@
@Override
public DataQueryParams getFromUrl( Set<String> dimensionParams, Set<String> filterParams,
- AggregationType aggregationType, String measureCriteria, boolean skipMeta, I18nFormat format )
+ AggregationType aggregationType, String measureCriteria, boolean skipMeta, boolean ignoreLimit, I18nFormat format )
{
throw new NotImplementedException();
}
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/AnalyticsServiceTest.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/AnalyticsServiceTest.java 2013-07-04 15:41:57 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/AnalyticsServiceTest.java 2013-08-17 09:24:30 +0000
@@ -163,7 +163,7 @@
Set<String> filterParams = new HashSet<String>();
filterParams.add( "ou:" + ouA.getUid() + ";" + ouB.getUid() + ";" + ouC.getUid() + ";" + ouD.getUid() + ";" + ouE.getUid() );
- DataQueryParams params = analyticsService.getFromUrl( dimensionParams, filterParams, null, null, false, null );
+ DataQueryParams params = analyticsService.getFromUrl( dimensionParams, filterParams, null, null, false, false, null );
assertEquals( 4, params.getDataElements().size() );
assertEquals( 3, params.getPeriods().size() );
@@ -180,7 +180,7 @@
Set<String> filterParams = new HashSet<String>();
filterParams.add( "ou:" + ouA.getUid() );
- DataQueryParams params = analyticsService.getFromUrl( dimensionParams, filterParams, null, null, false, null );
+ DataQueryParams params = analyticsService.getFromUrl( dimensionParams, filterParams, null, null, false, false, null );
assertEquals( 4, params.getDataElements().size() );
assertEquals( 1, params.getFilterOrganisationUnits().size() );
@@ -196,7 +196,7 @@
Set<String> filterParams = new HashSet<String>();
filterParams.add( "ou:" + ouA.getUid() + ";" + ouB.getUid() );
- DataQueryParams params = analyticsService.getFromUrl( dimensionParams, filterParams, null, null, false, null );
+ DataQueryParams params = analyticsService.getFromUrl( dimensionParams, filterParams, null, null, false, false, null );
assertEquals( 4, params.getDataElements().size() );
assertEquals( 12, params.getPeriods().size() );
@@ -211,7 +211,7 @@
dimensionParams.add( "dx:" + deA.getUid() + ";" + deB.getUid() );
dimensionParams.add( "pe:2011;2012" );
- DataQueryParams params = analyticsService.getFromUrl( dimensionParams, null, null, null, false, null );
+ DataQueryParams params = analyticsService.getFromUrl( dimensionParams, null, null, null, false, false, null );
assertEquals( 1, params.getOrganisationUnits().size() );
assertEquals( 2, params.getDataElements().size() );
@@ -226,7 +226,7 @@
dimensionParams.add( "dx:" + deA.getUid() + ";" + deB.getUid() );
dimensionParams.add( "pe:2011;2012" );
- DataQueryParams params = analyticsService.getFromUrl( dimensionParams, null, null, null, false, null );
+ DataQueryParams params = analyticsService.getFromUrl( dimensionParams, null, null, null, false, false, null );
assertEquals( 2, params.getOrganisationUnits().size() );
assertEquals( 2, params.getDataElements().size() );
@@ -240,7 +240,7 @@
dimensionParams.add( "dx" );
dimensionParams.add( "pe:2012,2012S1,2012S2" );
- analyticsService.getFromUrl( dimensionParams, null, null, null, false, null );
+ analyticsService.getFromUrl( dimensionParams, null, null, null, false, false, null );
}
@Test( expected = IllegalQueryException.class )
@@ -250,7 +250,7 @@
dimensionParams.add( "dx:" + BASE_UID + "A;" + BASE_UID + "B;" + BASE_UID + "C;" + BASE_UID + "D" );
dimensionParams.add( "pe" );
- analyticsService.getFromUrl( dimensionParams, null, null, null, false, null );
+ analyticsService.getFromUrl( dimensionParams, null, null, null, false, false, null );
}
@Test( expected = IllegalQueryException.class )
@@ -260,7 +260,7 @@
dimensionParams.add( "dx:" + BASE_UID + "A;" + BASE_UID + "B;" + BASE_UID + "C;" + BASE_UID + "D" );
dimensionParams.add( "ou" );
- analyticsService.getFromUrl( dimensionParams, null, null, null, false, null );
+ analyticsService.getFromUrl( dimensionParams, null, null, null, false, false, null );
}
@Test( expected = IllegalQueryException.class )
@@ -270,7 +270,7 @@
dimensionParams.add( "dx:" + BASE_UID + "A;" + BASE_UID + "B;" + BASE_UID + "C;" + BASE_UID + "D" );
dimensionParams.add( "yebo:2012,2012S1,2012S2" );
- analyticsService.getFromUrl( dimensionParams, null, null, null, false, null );
+ analyticsService.getFromUrl( dimensionParams, null, null, null, false, false, null );
}
@Test
=== 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-05-29 18:35:32 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AnalyticsController.java 2013-08-17 09:24:30 +0000
@@ -77,13 +77,14 @@
@RequestParam(required = false) AggregationType aggregationType,
@RequestParam(required = false) String measureCriteria,
@RequestParam(required = false) boolean skipMeta,
+ @RequestParam(required = false) boolean ignoreLimit,
@RequestParam(required = false) boolean tableLayout,
@RequestParam(required = false) String columns,
@RequestParam(required = false) String rows,
Model model,
HttpServletResponse response ) throws Exception
{
- DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, i18nManager.getI18nFormat() );
+ DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, ignoreLimit, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_JSON, CacheStrategy.RESPECT_SYSTEM_SETTING );
Grid grid = analyticsService.getAggregatedDataValues( params, tableLayout, getDimensionsFromParam( columns ), getDimensionsFromParam( rows ) );
@@ -99,13 +100,14 @@
@RequestParam(required = false) AggregationType aggregationType,
@RequestParam(required = false) String measureCriteria,
@RequestParam(required = false) boolean skipMeta,
+ @RequestParam(required = false) boolean ignoreLimit,
@RequestParam(required = false) boolean tableLayout,
@RequestParam(required = false) String columns,
@RequestParam(required = false) String rows,
Model model,
HttpServletResponse response ) throws Exception
{
- DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, i18nManager.getI18nFormat() );
+ DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, ignoreLimit, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_XML, CacheStrategy.RESPECT_SYSTEM_SETTING );
Grid grid = analyticsService.getAggregatedDataValues( params, tableLayout, getDimensionsFromParam( columns ), getDimensionsFromParam( rows ) );
@@ -119,13 +121,14 @@
@RequestParam(required = false) AggregationType aggregationType,
@RequestParam(required = false) String measureCriteria,
@RequestParam(required = false) boolean skipMeta,
+ @RequestParam(required = false) boolean ignoreLimit,
@RequestParam(required = false) boolean tableLayout,
@RequestParam(required = false) String columns,
@RequestParam(required = false) String rows,
Model model,
HttpServletResponse response ) throws Exception
{
- DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, i18nManager.getI18nFormat() );
+ DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, ignoreLimit, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_HTML, CacheStrategy.RESPECT_SYSTEM_SETTING );
Grid grid = analyticsService.getAggregatedDataValues( params, tableLayout, getDimensionsFromParam( columns ), getDimensionsFromParam( rows ) );
@@ -139,13 +142,14 @@
@RequestParam(required = false) AggregationType aggregationType,
@RequestParam(required = false) String measureCriteria,
@RequestParam(required = false) boolean skipMeta,
+ @RequestParam(required = false) boolean ignoreLimit,
@RequestParam(required = false) boolean tableLayout,
@RequestParam(required = false) String columns,
@RequestParam(required = false) String rows,
Model model,
HttpServletResponse response ) throws Exception
{
- DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, i18nManager.getI18nFormat() );
+ DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, ignoreLimit, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_CSV, CacheStrategy.RESPECT_SYSTEM_SETTING, "data.csv", true );
Grid grid = analyticsService.getAggregatedDataValues( params, tableLayout, getDimensionsFromParam( columns ), getDimensionsFromParam( rows ) );
@@ -159,13 +163,14 @@
@RequestParam(required = false) AggregationType aggregationType,
@RequestParam(required = false) String measureCriteria,
@RequestParam(required = false) boolean skipMeta,
+ @RequestParam(required = false) boolean ignoreLimit,
@RequestParam(required = false) boolean tableLayout,
@RequestParam(required = false) String columns,
@RequestParam(required = false) String rows,
Model model,
HttpServletResponse response ) throws Exception
{
- DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, i18nManager.getI18nFormat() );
+ DataQueryParams params = analyticsService.getFromUrl( dimension, filter, aggregationType, measureCriteria, skipMeta, ignoreLimit, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_EXCEL, CacheStrategy.RESPECT_SYSTEM_SETTING, "data.xls", true );
Grid grid = analyticsService.getAggregatedDataValues( params, tableLayout, getDimensionsFromParam( columns ), getDimensionsFromParam( rows ) );
@@ -179,13 +184,14 @@
@RequestParam(required = false) AggregationType aggregationType,
@RequestParam(required = false) String measureCriteria,
@RequestParam(required = false) boolean skipMeta,
+ @RequestParam(required = false) boolean ignoreLimit,
@RequestParam(required = false) boolean tableLayout,
@RequestParam(required = false) String columns,
@RequestParam(required = false) String rows,
Model model,
HttpServletResponse response ) throws Exception
{
- DataQueryParams params = analyticsService.getFromUrl( dimension, filter, null, null, true, i18nManager.getI18nFormat() );
+ DataQueryParams params = analyticsService.getFromUrl( dimension, filter, null, null, true, ignoreLimit, i18nManager.getI18nFormat() );
contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_XML, CacheStrategy.RESPECT_SYSTEM_SETTING, "data.jrxml", false );
Grid grid = analyticsService.getAggregatedDataValues( params );