/** * Adds values to the given grid based on dynamic dimensions from the given * data query parameters. This assumes that no fixed dimensions are part of * the query. * * @param params the {@link DataQueryParams}. * @param grid the grid. */ private void addDynamicDimensionValues( DataQueryParams params, Grid grid ) { if ( params.getDataDimensionAndFilterOptions().isEmpty() && !params.isSkipData() ) { Map<String, Double> aggregatedDataMap = getAggregatedDataValueMap( DataQueryParams.newBuilder( params ) .withIncludeNumDen( false ).build() ); fillGridWithAggregatedDataMap(params, grid, aggregatedDataMap); } }
/** * Adds data element operand values to the given grid based on the given data * query parameters. * * @param params the {@link DataQueryParams}. * @param grid the grid. */ private void addDataElementOperandValues( DataQueryParams params, Grid grid ) { if ( !params.getDataElementOperands().isEmpty() && !params.isSkipData() ) { DataQueryParams dataSourceParams = DataQueryParams.newBuilder( params ) .retainDataDimension( DataDimensionItemType.DATA_ELEMENT_OPERAND ).build(); for ( DataElementOperand.TotalType type : DataElementOperand.TotalType.values() ) { addDataElementOperandValues( dataSourceParams, grid, type ); } } }
/** * Adds data element values to the given grid based on the given data query * parameters. * * @param params the {@link DataQueryParams}. * @param grid the grid. */ private void addDataElementValues( DataQueryParams params, Grid grid ) { if ( !params.getAllDataElements().isEmpty() && !params.isSkipData() ) { DataQueryParams dataSourceParams = DataQueryParams.newBuilder( params ) .retainDataDimension( DataDimensionItemType.DATA_ELEMENT ) .withIncludeNumDen( false ).build(); Map<String, Object> aggregatedDataMap = getAggregatedDataValueMapObjectTyped( dataSourceParams ); for ( Map.Entry<String, Object> entry : aggregatedDataMap.entrySet() ) { Object value = AnalyticsUtils.getRoundedValueObject( params, entry.getValue() ); grid.addRow() .addValues( entry.getKey().split( DIMENSION_SEP ) ) .addValue( value ); if ( params.isIncludeNumDen() ) { grid.addNullValues( 5 ); } } } }
/** * Adds raw data to the grid for the given data query parameters. * * @param params the {@link DataQueryParams}. * @param grid the grid. */ private void addRawData( DataQueryParams params, Grid grid ) { if ( !params.isSkipData() ) { QueryPlannerParams plannerParams = QueryPlannerParams.newBuilder() .withTableName( AnalyticsTableType.DATA_VALUE.getTableName() ).build(); params = queryPlanner.withTableNameAndPartitions( params, plannerParams ); rawAnalyticsManager.getRawDataValues( params, grid ); } }
/** * Adds validation results to the given grid based on the given data query * parameters. * * @param params the {@link DataQueryParams}. * @param grid the grid. */ private void addValidationResultValues( DataQueryParams params, Grid grid ) { if ( !params.getAllValidationResults().isEmpty() && !params.isSkipData() ) { DataQueryParams dataSourceParams = DataQueryParams.newBuilder( params ) .retainDataDimension( DataDimensionItemType.VALIDATION_RULE ) .withAggregationType( AnalyticsAggregationType.COUNT ) .withIncludeNumDen( false ).build(); Map<String, Double> aggregatedDataMap = getAggregatedValidationResultMapObjectTyped( dataSourceParams ); fillGridWithAggregatedDataMap(params, grid, aggregatedDataMap); } }
/** * Adds program data element values to the given grid based on the given data * query parameters. * * @param params the {@link DataQueryParams}. * @param grid the grid. */ private void addProgramDataElementAttributeIndicatorValues( DataQueryParams params, Grid grid ) { if ( ( !params.getAllProgramDataElementsAndAttributes().isEmpty() || !params.getProgramIndicators().isEmpty() ) && !params.isSkipData() ) { DataQueryParams dataSourceParams = DataQueryParams.newBuilder( params ) .retainDataDimensions( PROGRAM_DATA_ELEMENT, PROGRAM_ATTRIBUTE, PROGRAM_INDICATOR ).build(); EventQueryParams eventQueryParams = new EventQueryParams.Builder( EventQueryParams.fromDataQueryParams( dataSourceParams ) ) .withSkipMeta( true ).build(); Grid eventGrid = eventAnalyticsService.getAggregatedEventData( eventQueryParams ); grid.addRows( eventGrid ); } }
if ( !params.getReportingRates().isEmpty() && !params.isSkipData() )
/** * Adds reporting rates to the given grid based on the given data query * parameters. * * @param params the {@link DataQueryParams}. * @param grid the grid. */ private void addReportingRates( DataQueryParams params, Grid grid ) { if ( !params.getReportingRates().isEmpty() && !params.isSkipData() ) { for ( ReportingRateMetric metric : ReportingRateMetric.values() ) { DataQueryParams dataSourceParams = DataQueryParams.newBuilder( params ) .retainDataDimensionReportingRates( metric ) .ignoreDataApproval() // No approval for reporting rates .withAggregationType( AnalyticsAggregationType.COUNT ) .withTimely( ( REPORTING_RATE_ON_TIME == metric || ACTUAL_REPORTS_ON_TIME == metric ) ).build(); addReportingRates( dataSourceParams, grid, metric ); } } }
if ( !params.isSkipData() && !params.isSkipHeaders() )
if ( !params.isSkipData() && params.getDataDimensionAndFilterOptions().isEmpty() && params.getAllDataElementGroups().isEmpty() )
if ( !params.getIndicators().isEmpty() && !params.isSkipData() )