@Override
public void replaceDataPeriodsWithAggregationPeriods( Map<String, Object> dataValueMap,
DataQueryParams params, ListMap<DimensionalItemObject, DimensionalItemObject> dataPeriodAggregationPeriodMap )
{
if ( params.isDisaggregation() )
{
int periodIndex = params.getPeriodDimensionIndex();
if ( periodIndex == -1 )
{
return;
}
Set<String> keys = new HashSet<>( dataValueMap.keySet() );
for ( String key : keys )
{
String[] keyArray = key.split( DIMENSION_SEP );
String periodKey = keyArray[periodIndex];
Assert.notNull( periodKey, String.format( "Period key cannot be null, key: '%s'", key ) );
List<DimensionalItemObject> periods = dataPeriodAggregationPeriodMap.get( PeriodType.getPeriodFromIsoString( periodKey ) );
Assert.notNull( periods, String.format( "Period list cannot be null, key: '%s', map: '%s'", key, dataPeriodAggregationPeriodMap.toString() ) );
Object value = dataValueMap.get( key );
for ( DimensionalItemObject period : periods )
{
String[] keyCopy = keyArray.clone();
keyCopy[periodIndex] = ((Period) period).getIsoDate();
dataValueMap.put( TextUtils.toString( keyCopy, DIMENSION_SEP ), value );
}
dataValueMap.remove( key );
}
}
}