=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitGroupService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitGroupService.java 2013-12-30 11:12:53 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitGroupService.java 2014-01-23 08:51:22 +0000 @@ -28,6 +28,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.apache.commons.collections.CollectionUtils; +import org.hisp.dhis.common.IdentifiableObject; +import org.hisp.dhis.common.IdentifiableObjectManager; import org.hisp.dhis.i18n.I18nService; import org.hisp.dhis.system.util.Filter; import org.hisp.dhis.system.util.FilterUtils; @@ -93,22 +96,36 @@ this.organisationUnitService = organisationUnitService; } + private IdentifiableObjectManager objectManager; + + @Autowired + public void setObjectManager( IdentifiableObjectManager objectManager ) + { + this.objectManager = objectManager; + } + // ------------------------------------------------------------------------- // OrganisationUnitGroup // ------------------------------------------------------------------------- public int addOrganisationUnitGroup( OrganisationUnitGroup organisationUnitGroup ) { + objectManager.update( new ArrayList( organisationUnitGroup.getMembers() ) ); + return organisationUnitGroupStore.save( organisationUnitGroup ); } public void updateOrganisationUnitGroup( OrganisationUnitGroup organisationUnitGroup ) { + objectManager.update( new ArrayList( organisationUnitGroup.getMembers() ) ); + organisationUnitGroupStore.update( organisationUnitGroup ); } public void deleteOrganisationUnitGroup( OrganisationUnitGroup organisationUnitGroup ) { + objectManager.update( new ArrayList( organisationUnitGroup.getMembers() ) ); + organisationUnitGroupStore.delete( organisationUnitGroup ); } @@ -267,7 +284,7 @@ @Override public Collection getDataDimensionOrganisationUnitGroupSets() { - return i18n( i18nService, organisationUnitGroupSetStore.getByDataDimension(true) ); + return i18n( i18nService, organisationUnitGroupSetStore.getByDataDimension( true ) ); } public Collection getCompulsoryOrganisationUnitGroupSets() @@ -361,6 +378,9 @@ organisationUnits.removeAll( userOrganisationUnits ); organisationUnits.addAll( mergeOrganisationUnits ); + Collection removedOrgUnits = CollectionUtils.subtract( organisationUnitGroup.getMembers(), organisationUnits ); + objectManager.update( new ArrayList( removedOrgUnits ) ); + organisationUnitGroup.updateOrganisationUnits( organisationUnits ); updateOrganisationUnitGroup( organisationUnitGroup );