@Override @Transactional public void substituteExpressions( Collection<Indicator> indicators, Integer days ) { if ( indicators != null && !indicators.isEmpty() ) { Map<String, Constant> constants = new CachingMap<String, Constant>() .load( idObjectManager.getAllNoAcl( Constant.class ), c -> c.getUid() ); Map<String, OrganisationUnitGroup> orgUnitGroups = new CachingMap<String, OrganisationUnitGroup>() .load( idObjectManager.getAllNoAcl( OrganisationUnitGroup.class ), g -> g.getUid() ); for ( Indicator indicator : indicators ) { indicator.setExplodedNumerator( substituteExpression( indicator.getNumerator(), constants, orgUnitGroups, days ) ); indicator.setExplodedDenominator( substituteExpression( indicator.getDenominator(), constants, orgUnitGroups, days ) ); } } }