=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/indicator/IndicatorDeletionHandler.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/indicator/IndicatorDeletionHandler.java 2011-06-22 06:57:50 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/indicator/IndicatorDeletionHandler.java 2011-07-01 05:21:03 +0000 @@ -30,6 +30,8 @@ import java.util.Set; import org.hisp.dhis.dataelement.DataElement; +import org.hisp.dhis.dataelement.DataElementCategoryCombo; +import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; import org.hisp.dhis.expression.ExpressionService; import org.hisp.dhis.system.deletion.DeletionHandler; @@ -93,7 +95,7 @@ } } } - + @Override public void deleteIndicatorGroup( IndicatorGroup group ) { @@ -112,14 +114,14 @@ for ( Indicator indicator : indicatorService.getAllIndicators() ) { Set daels = expressionService.getDataElementsInExpression( indicator.getNumerator() ); - + if ( daels != null && daels.contains( dataElement ) ) { return false; } - + daels = expressionService.getDataElementsInExpression( indicator.getDenominator() ); - + if ( daels != null && daels.contains( dataElement ) ) { return false; @@ -127,5 +129,31 @@ } return true; - } + } + + @Override + public boolean allowDeleteDataElementCategoryCombo( DataElementCategoryCombo categoryCombo ) + { + for ( Indicator indicator : indicatorService.getAllIndicators() ) + { + Set optionCombos = expressionService.getOptionCombosInExpression( indicator + .getNumerator() ); + optionCombos.retainAll( categoryCombo.getOptionCombos() ); + + if ( optionCombos != null && optionCombos.size() > 0 ) + { + return false; + } + + optionCombos = expressionService.getOptionCombosInExpression( indicator.getDenominator() ); + optionCombos.retainAll( categoryCombo.getOptionCombos() ); + + if ( optionCombos != null && optionCombos.size() > 0 ) + { + return false; + } + } + + return true; + } }