=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementOperand.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementOperand.java 2013-04-18 13:39:33 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementOperand.java 2013-04-19 09:20:59 +0000 @@ -493,7 +493,6 @@ // hashCode, equals, toString, compareTo // ------------------------------------------------------------------------- - @Override public String toString() { === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/compulsory/GetCompulsoryDataElementsAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/compulsory/GetCompulsoryDataElementsAction.java 2013-04-18 13:39:33 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/compulsory/GetCompulsoryDataElementsAction.java 2013-04-19 09:20:59 +0000 @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; import java.util.List; import org.hisp.dhis.dataelement.DataElementCategoryService; @@ -109,8 +110,26 @@ availableOperands = new ArrayList( dataElementCategoryService.getOperands( dataSet.getDataElements() ) ); - availableOperands.removeAll( selectedOperands ); - + Iterator availableIter = availableOperands.iterator(); + + // --------------------------------------------------------------------- + // Remove already selected operands - must check manually since selected + // operands are persisted while available operands are generated + // --------------------------------------------------------------------- + + while ( availableIter.hasNext() ) + { + DataElementOperand availableOperand = availableIter.next(); + + for ( DataElementOperand selectedOperand : selectedOperands ) + { + if ( availableOperand.getOperandExpression().equals( selectedOperand.getOperandExpression() ) ) + { + availableIter.remove(); + } + } + } + Collections.sort( availableOperands, new DataElementOperandNameComparator() ); return SUCCESS;