=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroup.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroup.java 2011-05-05 21:14:56 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroup.java 2011-05-30 15:27:38 +0000 @@ -60,6 +60,38 @@ { this.name = name; } + + // ------------------------------------------------------------------------- + // Logic + // ------------------------------------------------------------------------- + + public void addIndicator( Indicator indicator ) + { + members.add( indicator ); + indicator.getGroups().remove( this ); + } + + public void removeIndicator( Indicator indicator ) + { + members.remove( indicator ); + indicator.getGroups().remove( this ); + } + + public void updateIndicators( Set updates ) + { + for ( Indicator indicator : new HashSet( members ) ) + { + if ( !updates.contains( indicator ) ) + { + removeIndicator( indicator ); + } + } + + for ( Indicator indicator : updates ) + { + addIndicator( indicator ); + } + } // ------------------------------------------------------------------------- // hashCode and equals === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelementgroup/UpdateDataElementGroupAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelementgroup/UpdateDataElementGroupAction.java 2011-05-30 14:56:19 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelementgroup/UpdateDataElementGroupAction.java 2011-05-30 15:27:38 +0000 @@ -104,18 +104,15 @@ dataElementGroup.setName( name ); } - if ( !groupMembers.isEmpty() ) + Set members = new HashSet(); + + for ( String id : groupMembers ) { - Set members = new HashSet(); - - for ( String id : groupMembers ) - { - members.add( dataElementService.getDataElement( Integer.parseInt( id ) ) ); - } - - dataElementGroup.updateDataElements( members ); + members.add( dataElementService.getDataElement( Integer.parseInt( id ) ) ); } + dataElementGroup.updateDataElements( members ); + dataElementService.updateDataElementGroup( dataElementGroup ); return SUCCESS; === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatorgroup/AddIndicatorGroupAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatorgroup/AddIndicatorGroupAction.java 2011-05-05 21:15:45 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatorgroup/AddIndicatorGroupAction.java 2011-05-30 15:27:38 +0000 @@ -27,11 +27,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.Collection; import java.util.HashSet; import java.util.Set; -import org.hisp.dhis.indicator.Indicator; import org.hisp.dhis.indicator.IndicatorGroup; import org.hisp.dhis.indicator.IndicatorService; @@ -66,9 +64,9 @@ this.name = name; } - private Collection groupMembers; + private Set groupMembers = new HashSet(); - public void setGroupMembers( Collection groupMembers ) + public void setGroupMembers( Set groupMembers ) { this.groupMembers = groupMembers; } @@ -88,18 +86,11 @@ { indicatorGroup = new IndicatorGroup( name ); - if ( groupMembers != null ) + for ( String id : groupMembers ) { - Set members = new HashSet(); - - for ( String id : groupMembers ) - { - members.add( indicatorService.getIndicator( Integer.parseInt( id ) ) ); - } - - indicatorGroup.setMembers( members ); + indicatorGroup.addIndicator( indicatorService.getIndicator( Integer.parseInt( id ) ) ); } - + indicatorService.addIndicatorGroup( indicatorGroup ); return SUCCESS; === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatorgroup/UpdateIndicatorGroupAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatorgroup/UpdateIndicatorGroupAction.java 2011-05-05 21:15:45 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatorgroup/UpdateIndicatorGroupAction.java 2011-05-30 15:27:38 +0000 @@ -27,7 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.Collection; import java.util.HashSet; import java.util.Set; @@ -74,9 +73,9 @@ this.name = name; } - private Collection groupMembers; + private Set groupMembers = new HashSet(); - public void setGroupMembers( Collection groupMembers ) + public void setGroupMembers( Set groupMembers ) { this.groupMembers = groupMembers; } @@ -101,21 +100,14 @@ indicatorGroup.setName( name ); } - if ( groupMembers != null ) - { - Set members = new HashSet(); - - for ( String memberId : groupMembers ) - { - members.add( indicatorService.getIndicator( Integer.parseInt( memberId ) ) ); - } - - indicatorGroup.setMembers( members ); - } - else - { - indicatorGroup.getMembers().clear(); - } + Set members = new HashSet(); + + for ( String memberId : groupMembers ) + { + members.add( indicatorService.getIndicator( Integer.parseInt( memberId ) ) ); + } + + indicatorGroup.updateIndicators( members ); indicatorService.updateIndicatorGroup( indicatorGroup );