/** * Replaces the periods of this query with the corresponding data periods. * Sets the period type to the data period type. This method is relevant only * when then the data period type has lower frequency than the aggregation * period type. This is valid because disaggregation is allowed for data * with average aggregation operator. */ private void replaceAggregationPeriodsWithDataPeriods( ListMap<DimensionalItemObject, DimensionalItemObject> dataPeriodAggregationPeriodMap ) { this.periodType = this.dataPeriodType.getName(); if ( !getPeriods().isEmpty() ) // Period is dimension { setDimensionOptions( PERIOD_DIM_ID, DimensionType.PERIOD, dataPeriodType.getName().toLowerCase(), new ArrayList<>( dataPeriodAggregationPeriodMap.keySet() ) ); } else // Period is filter { setFilterOptions( PERIOD_DIM_ID, DimensionType.PERIOD, dataPeriodType.getName().toLowerCase(), new ArrayList<>( dataPeriodAggregationPeriodMap.keySet() ) ); } }
@Override public List<Period> getDuplicatePeriods() { Collection<Period> periods = periodService.getAllPeriods(); List<Period> duplicates = new ArrayList<>(); ListMap<String, Period> map = new ListMap<>(); for ( Period period : periods ) { String key = period.getPeriodType().getName() + period.getStartDate().toString(); period.setName( period.toString() ); map.putValue( key, period ); } for ( String key : map.keySet() ) { List<Period> values = map.get( key ); if ( values != null && values.size() > 1 ) { duplicates.addAll( values ); } } return duplicates; }
/** * Groups queries by their data type. * * @param params the data query parameters. * @return a list of {@link DataQueryParams}. */ private List<DataQueryParams> groupByDataType( DataQueryParams params ) { List<DataQueryParams> queries = new ArrayList<>(); if ( !params.getDataElements().isEmpty() ) { ListMap<DataType, DimensionalItemObject> dataTypeDataElementMap = QueryPlannerUtils.getDataTypeDataElementMap( params.getDataElements() ); for ( DataType dataType : dataTypeDataElementMap.keySet() ) { DataQueryParams query = DataQueryParams.newBuilder( params ) .withDataElements( dataTypeDataElementMap.get( dataType ) ) .withDataType( dataType ).build(); queries.add( query ); } } else { DataQueryParams query = DataQueryParams.newBuilder( params ) .withDataType( DataType.NUMERIC ).build(); queries.add( query ); } logQuerySplit( queries, "data type" ); return queries; }
QueryPlannerUtils.getPeriodTypeDataElementMap( params.getDataElements() ); for ( PeriodType periodType : periodTypeDataElementMap.keySet() )
for ( Integer days : daysPeriodMap.keySet() )
QueryPlannerUtils.getAggregationTypeDataElementMap( params ); for ( AnalyticsAggregationType aggregationType : aggregationTypeDataElementMap.keySet() )
@Override public List<Grid> getDefaultDataSetReport( DataSet dataSet, Period period, OrganisationUnit unit, Set<String> dimensions, boolean selectedUnitOnly, I18nFormat format, I18n i18n ) { ListMap<CategoryCombo, DataElement> map = new ListMap<>(); for ( DataSetElement element : dataSet.getDataSetElements() ) { map.putValue( element.getResolvedCategoryCombo(), element.getDataElement() ); } DataSet tmpDataSet = new DataSet( dataSet.getName(), dataSet.getShortName(), dataSet.getPeriodType() ); tmpDataSet.setDataSetElements( dataSet.getDataSetElements() ); for ( CategoryCombo categoryCombo : map.keySet() ) { List<DataElement> dataElements = map.get( categoryCombo ); String name = categoryCombo.isDefault() ? dataSet.getName() : categoryCombo.getName(); Section section = new Section( name, dataSet, dataElements, null ); tmpDataSet.getSections().add( section ); } return getSectionDataSetReport( tmpDataSet, period, unit, dimensions, selectedUnitOnly, format, i18n ); }
for ( String dimension : filterMap.keySet() )