=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericIdentifiableObjectStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericIdentifiableObjectStore.java 2013-02-04 03:14:27 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericIdentifiableObjectStore.java 2013-02-04 14:57:16 +0000 @@ -85,11 +85,19 @@ * @param name the name. * @return a Collection of objects. */ - Collection getAllEqName( String name ); + List getAllEqName( String name ); + + /** + * Retrieves a Collection of objects where the name is equal the given name (ignore case). + * + * @param name the name. + * @return a Collection of objects. + */ + List getAllEqNameIgnoreCase( String name ); /** * Return the number of objects where the name is equal the given name. - * + *

* This count is _unfiltered_ (no ACL!), so this is not the same as * getAllEqName().size(). * === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericNameableObjectStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericNameableObjectStore.java 2013-02-04 03:14:27 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericNameableObjectStore.java 2013-02-04 14:57:16 +0000 @@ -28,6 +28,7 @@ */ import java.util.Collection; +import java.util.List; /** * @author Lars Helge Overland @@ -61,5 +62,13 @@ * @param shortName the name. * @return a Collection of objects. */ - Collection getAllEqShortName( String shortName ); + List getAllEqShortName( String shortName ); + + /** + * Retrieves a Collection of objects where the name is like the given name (ignore case). + * + * @param shortName the name. + * @return a Collection of objects. + */ + List getAllEqShortNameIgnoreCase( String shortName ); } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupService.java 2013-01-11 13:12:31 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupService.java 2013-02-04 14:57:16 +0000 @@ -102,11 +102,12 @@ /** * Returns an OrganisationUnitGroup with a given name. * + * * @param name the name of the OrganisationUnitGroup. * @return the OrganisationUnitGroup with the given name, or null if no * match. */ - OrganisationUnitGroup getOrganisationUnitGroupByName( String name ); + List getOrganisationUnitGroupByName( String name ); /** * Returns all OrganisationUnitGroups. @@ -196,11 +197,12 @@ /** * Returns an OrganisationUnitGroupSet with a given name. * + * * @param name the name of the OrganisationUnitGroupSet to return. * @return the OrganisationUnitGroupSet with the given name, or null if no * match. */ - OrganisationUnitGroupSet getOrganisationUnitGroupSetByName( String name ); + List getOrganisationUnitGroupSetByName( String name ); /** * Returns all OrganisationUnitGroupSets. === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java 2012-12-13 10:47:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java 2013-02-04 14:57:16 +0000 @@ -176,7 +176,7 @@ * @param name the name of the OrganisationUnit to return. * @return the OrganisationUnit with the given name, or null if not match. */ - OrganisationUnit getOrganisationUnitByName( String name ); + List getOrganisationUnitByName( String name ); /** * Returns an OrganisationUnit with a given name. Case is ignored. @@ -184,7 +184,7 @@ * @param name the name of the OrganisationUnit to return. * @return the OrganisationUnit with the given name, or null if not match. */ - OrganisationUnit getOrganisationUnitByNameIgnoreCase( String name ); + Collection getOrganisationUnitByNameIgnoreCase( String name ); /** * Returns all root OrganisationUnits. A root OrganisationUnit is an @@ -358,7 +358,7 @@ OrganisationUnitLevel getOrganisationUnitLevelByLevel( int level ); - OrganisationUnitLevel getOrganisationUnitLevelByName( String name ); + List getOrganisationUnitLevelByName( String name ); List getFilledOrganisationUnitLevels(); === 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-01-11 13:12:31 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitGroupService.java 2013-02-04 14:57:16 +0000 @@ -27,18 +27,18 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.i18n.I18nUtils.*; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - import org.hisp.dhis.common.GenericIdentifiableObjectStore; import org.hisp.dhis.i18n.I18nService; import org.hisp.dhis.system.util.Filter; import org.hisp.dhis.system.util.FilterUtils; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import static org.hisp.dhis.i18n.I18nUtils.*; + /** * @author Torgeir Lorange Ostby * @version $Id: DefaultOrganisationUnitGroupService.java 5017 2008-04-25 09:19:19Z larshelg $ @@ -57,7 +57,7 @@ { this.organisationUnitGroupStore = organisationUnitGroupStore; } - + private GenericIdentifiableObjectStore organisationUnitGroupSetStore; public void setOrganisationUnitGroupSetStore( GenericIdentifiableObjectStore organisationUnitGroupSetStore ) @@ -95,18 +95,18 @@ { return i18n( i18nService, organisationUnitGroupStore.get( id ) ); } - + public Collection getOrganisationUnitGroups( final Collection identifiers ) { Collection objects = getAllOrganisationUnitGroups(); - + return identifiers == null ? objects : FilterUtils.filter( objects, new Filter() + { + public boolean retain( OrganisationUnitGroup object ) { - public boolean retain( OrganisationUnitGroup object ) - { - return identifiers.contains( object.getId() ); - } - } ); + return identifiers.contains( object.getId() ); + } + } ); } public List getOrganisationUnitGroupsByUid( Collection uids ) @@ -119,16 +119,16 @@ return i18n( i18nService, organisationUnitGroupStore.getByUid( uid ) ); } - public OrganisationUnitGroup getOrganisationUnitGroupByName( String name ) + public List getOrganisationUnitGroupByName( String name ) { - return i18n( i18nService, organisationUnitGroupStore.getByName( name ) ); + return new ArrayList( i18n( i18nService, organisationUnitGroupStore.getAllEqName( name ) ) ); } public Collection getAllOrganisationUnitGroups() { return i18n( i18nService, organisationUnitGroupStore.getAll() ); } - + public Collection getOrganisationUnitGroupsWithGroupSets() { return i18n( i18nService, organisationUnitGroupStore.getOrganisationUnitGroupsWithGroupSets() ); @@ -143,7 +143,7 @@ { return getCountByName( i18nService, organisationUnitGroupStore, name ); } - + public Collection getOrganisationUnitGroupsBetween( int first, int max ) { return getObjectsBetween( i18nService, organisationUnitGroupStore, first, max ); @@ -181,12 +181,12 @@ public OrganisationUnitGroupSet getOrganisationUnitGroupSet( int id, boolean i18nGroups ) { OrganisationUnitGroupSet groupSet = getOrganisationUnitGroupSet( id ); - + if ( i18nGroups ) { i18n( i18nService, groupSet.getOrganisationUnitGroups() ); } - + return groupSet; } @@ -194,18 +194,18 @@ { return i18n( i18nService, organisationUnitGroupSetStore.getByUid( uid ) ); } - + public Collection getOrganisationUnitGroupSets( final Collection identifiers ) { Collection objects = getAllOrganisationUnitGroupSets(); - + return identifiers == null ? objects : FilterUtils.filter( objects, new Filter() + { + public boolean retain( OrganisationUnitGroupSet object ) { - public boolean retain( OrganisationUnitGroupSet object ) - { - return identifiers.contains( object.getId() ); - } - } ); + return identifiers.contains( object.getId() ); + } + } ); } public List getOrganisationUnitGroupSetsByUid( Collection uids ) @@ -213,9 +213,9 @@ return organisationUnitGroupSetStore.getByUid( uids ); } - public OrganisationUnitGroupSet getOrganisationUnitGroupSetByName( String name ) + public List getOrganisationUnitGroupSetByName( String name ) { - return i18n( i18nService, organisationUnitGroupSetStore.getByName( name ) ); + return new ArrayList( i18n( i18nService, organisationUnitGroupSetStore.getAllEqName( name ) ) ); } public Collection getAllOrganisationUnitGroupSets() @@ -226,7 +226,7 @@ public Collection getCompulsoryOrganisationUnitGroupSets() { Collection groupSets = new ArrayList(); - + for ( OrganisationUnitGroupSet groupSet : getAllOrganisationUnitGroupSets() ) { if ( groupSet.isCompulsory() ) @@ -234,21 +234,21 @@ groupSets.add( groupSet ); } } - + return groupSets; } public Collection getCompulsoryOrganisationUnitGroupSetsWithMembers() { return FilterUtils.filter( getAllOrganisationUnitGroupSets(), new Filter() + { + public boolean retain( OrganisationUnitGroupSet object ) { - public boolean retain( OrganisationUnitGroupSet object ) - { - return object.isCompulsory() && object.hasOrganisationUnitGroups(); - } - } ); + return object.isCompulsory() && object.hasOrganisationUnitGroups(); + } + } ); } - + public OrganisationUnitGroup getOrganisationUnitGroup( OrganisationUnitGroupSet groupSet, OrganisationUnit unit ) { for ( OrganisationUnitGroup group : groupSet.getOrganisationUnitGroups() ) @@ -258,14 +258,14 @@ return group; } } - + return null; } - + public Collection getCompulsoryOrganisationUnitGroupSetsNotAssignedTo( OrganisationUnit organisationUnit ) { Collection groupSets = new ArrayList(); - + for ( OrganisationUnitGroupSet groupSet : getCompulsoryOrganisationUnitGroupSets() ) { if ( !groupSet.isMemberOfOrganisationUnitGroups( organisationUnit ) && groupSet.hasOrganisationUnitGroups() ) @@ -273,25 +273,25 @@ groupSets.add( groupSet ); } } - + return groupSets; } - + public int getOrganisationUnitGroupSetCount() { return organisationUnitGroupSetStore.getCount(); } - + public int getOrganisationUnitGroupSetCountByName( String name ) { return getCountByName( i18nService, organisationUnitGroupSetStore, name ); } - + public Collection getOrganisationUnitGroupSetsBetween( int first, int max ) { return getObjectsBetween( i18nService, organisationUnitGroupSetStore, first, max ); } - + public Collection getOrganisationUnitGroupSetsBetweenByName( String name, int first, int max ) { return getObjectsBetweenByName( i18nService, organisationUnitGroupSetStore, name, first, max ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java 2013-01-28 06:30:22 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java 2013-02-04 14:57:16 +0000 @@ -27,8 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.i18n.I18nUtils.i18n; - import org.apache.commons.collections.CollectionUtils; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.hierarchy.HierarchyViolationException; @@ -54,6 +52,8 @@ import java.util.Set; import java.util.UUID; +import static org.hisp.dhis.i18n.I18nUtils.i18n; + /** * @author Torgeir Lorange Ostby * @version $Id: DefaultOrganisationUnitService.java 5951 2008-10-16 17:41:34Z @@ -225,9 +225,9 @@ return organisationUnitStore.getByUid( uid ); } - public OrganisationUnit getOrganisationUnitByName( String name ) + public List getOrganisationUnitByName( String name ) { - return organisationUnitStore.getByName( name ); + return organisationUnitStore.getAllEqName( name ); } public OrganisationUnit getOrganisationUnitByCode( String code ) @@ -235,9 +235,9 @@ return organisationUnitStore.getByCode( code ); } - public OrganisationUnit getOrganisationUnitByNameIgnoreCase( String name ) + public Collection getOrganisationUnitByNameIgnoreCase( String name ) { - return organisationUnitStore.getOrganisationUnitByNameIgnoreCase( name ); + return organisationUnitStore.getAllEqNameIgnoreCase( name ); } public Collection getRootOrganisationUnits() @@ -465,7 +465,7 @@ return organisationUnitStore.getOrganisationUnitsByNameAndGroups( query, groups, limit ); } - @SuppressWarnings( "unchecked" ) + @SuppressWarnings("unchecked") public Collection getOrganisationUnitsByNameAndGroups( String name, Collection groups, OrganisationUnit parent, boolean limit ) { @@ -692,9 +692,9 @@ return i18n( i18nService, organisationUnitLevelStore.getByLevel( level ) ); } - public OrganisationUnitLevel getOrganisationUnitLevelByName( String name ) + public List getOrganisationUnitLevelByName( String name ) { - return i18n( i18nService, organisationUnitLevelStore.getByName( name ) ); + return new ArrayList( i18n( i18nService, organisationUnitLevelStore.getAllEqName( name ) ) ); } public List getFilledOrganisationUnitLevels() === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSetPopulator.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSetPopulator.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSetPopulator.java 2013-02-04 14:57:16 +0000 @@ -29,6 +29,9 @@ import org.hisp.dhis.system.startup.AbstractStartupRoutine; +import java.util.ArrayList; +import java.util.List; + /** * @author Lars Helge Overland * @version $Id$ @@ -44,7 +47,7 @@ // ------------------------------------------------------------------------- private OrganisationUnitGroupService organisationUnitGroupService; - + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) { this.organisationUnitGroupService = organisationUnitGroupService; @@ -57,27 +60,29 @@ public void execute() throws Exception { - OrganisationUnitGroupSet type = organisationUnitGroupService.getOrganisationUnitGroupSetByName( NAME_TYPE ); - + List types = new ArrayList( organisationUnitGroupService.getOrganisationUnitGroupSetByName( NAME_TYPE ) ); + OrganisationUnitGroupSet type = types.isEmpty() ? null : types.get( 0 ); + if ( type == null ) { type = new OrganisationUnitGroupSet(); type.setName( "Type" ); type.setDescription( "Type of organisation unit, examples are PHU, chiefdom and district" ); type.setCompulsory( false ); - + organisationUnitGroupService.addOrganisationUnitGroupSet( type ); } - - OrganisationUnitGroupSet ownership = organisationUnitGroupService.getOrganisationUnitGroupSetByName( NAME_OWNERSHIP ); - + + List ownerships = new ArrayList( organisationUnitGroupService.getOrganisationUnitGroupSetByName( NAME_OWNERSHIP ) ); + OrganisationUnitGroupSet ownership = ownerships.isEmpty() ? null : ownerships.get( 0 ); + if ( ownership == null ) { ownership = new OrganisationUnitGroupSet(); ownership.setName( "Ownership" ); ownership.setDescription( "Ownership of organisation unit, examples are private and public" ); ownership.setCompulsory( false ); - + organisationUnitGroupService.addOrganisationUnitGroupSet( ownership ); } } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2013-01-30 07:31:03 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2013-02-04 14:57:16 +0000 @@ -480,7 +480,7 @@ executeSql( "update report set type='jasperReportTable' where type is null and reporttableid is not null" ); executeSql( "update report set type='jasperJdbc' where type is null and reporttableid is null" ); - + // upgrade authorities executeSql( "UPDATE userroleauthorities SET authority='F_DOCUMENT_PUBLIC_ADD' WHERE authority='F_DOCUMENT_ADD'" ); @@ -503,9 +503,14 @@ executeSql( "UPDATE userroleauthorities SET authority='F_USERGROUP_LIST' WHERE authority='F_USER_GRUP_LIST'" ); // update denominator of indicator which has indicatortype as 'number' - - executeSql( "UPDATE indicator SET denominator = 1, denominatordescription = '' WHERE indicatortypeid IN (SELECT DISTINCT indicatortypeid FROM indicatortype WHERE indicatornumber = true) AND denominator IS NULL"); - + + executeSql( "UPDATE indicator SET denominator = 1, denominatordescription = '' WHERE indicatortypeid IN (SELECT DISTINCT indicatortypeid FROM indicatortype WHERE indicatornumber = true) AND denominator IS NULL" ); + + // remove name/shortName uniqueness + executeSql( "ALTER TABLE organisationunit DROP CONSTRAINT organisationunit_name_key" ); + executeSql( "ALTER TABLE orgunitgroup DROP CONSTRAINT orgunitgroup_name_key" ); + executeSql( "ALTER TABLE orgunitgroupset DROP CONSTRAINT orgunitgroupset_name_key" ); + log.info( "Tables updated" ); } === modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/organisationunit/OrganisationUnitServiceTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/organisationunit/OrganisationUnitServiceTest.java 2013-01-14 21:35:56 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/organisationunit/OrganisationUnitServiceTest.java 2013-02-04 14:57:16 +0000 @@ -27,11 +27,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; +import org.hisp.dhis.DhisSpringTest; +import org.junit.Ignore; +import org.junit.Test; import java.util.Arrays; import java.util.Collection; @@ -39,9 +37,7 @@ import java.util.Iterator; import java.util.List; -import org.hisp.dhis.DhisSpringTest; -import org.junit.Ignore; -import org.junit.Test; +import static org.junit.Assert.*; /** * @author Kristian Nordal @@ -53,7 +49,7 @@ private OrganisationUnitService organisationUnitService; private OrganisationUnitGroupService organisationUnitGroupService; - + @Override public void setUpTest() throws Exception @@ -87,15 +83,15 @@ String organisationUnitName2 = "organisationUnitName2"; OrganisationUnit organisationUnit2 = new OrganisationUnit( organisationUnitName2, organisationUnit1, "shortName2", "organisationUnitCode2", new Date(), new Date(), true, "comment" ); - + int id2 = organisationUnitService.addOrganisationUnit( organisationUnit2 ); assertTrue( organisationUnitService.getOrganisationUnit( id2 ).getParent().getId() == id1 ); - + organisationUnitService.deleteOrganisationUnit( organisationUnitService.getOrganisationUnit( id2 ) ); - + organisationUnitService.deleteOrganisationUnit( organisationUnitService.getOrganisationUnit( id1 ) ); - + // assert delOrganisationUnit assertNull( organisationUnitService.getOrganisationUnit( id1 ) ); assertNull( organisationUnitService.getOrganisationUnit( id2 ) ); @@ -146,7 +142,7 @@ organisationUnitService.addOrganisationUnit( unit3 ); organisationUnitService.addOrganisationUnit( unit4 ); - Collection actual = organisationUnitService.getOrganisationUnitWithChildren( id1 ); + Collection actual = organisationUnitService.getOrganisationUnitWithChildren( id1 ); assertEquals( 3, actual.size() ); assertTrue( actual.contains( unit1 ) ); assertTrue( actual.contains( unit2 ) ); @@ -177,16 +173,16 @@ organisationUnitService.addOrganisationUnit( organisationUnit2 ); organisationUnitService.addOrganisationUnit( organisationUnit3 ); - OrganisationUnit unit1 = organisationUnitService.getOrganisationUnitByName( oU1Name ); + OrganisationUnit unit1 = organisationUnitService.getOrganisationUnitByName( oU1Name ).get( 0 ); assertEquals( unit1.getName(), oU1Name ); - OrganisationUnit unit4 = organisationUnitService.getOrganisationUnitByName( "foo" ); - assertNull( unit4 ); + List foo = organisationUnitService.getOrganisationUnitByName( "foo" ); + assertTrue( foo.isEmpty() ); unit1 = organisationUnitService.getOrganisationUnitByCode( oU1Code ); assertEquals( unit1.getName(), oU1Name ); - unit4 = organisationUnitService.getOrganisationUnitByCode( "foo" ); + OrganisationUnit unit4 = organisationUnitService.getOrganisationUnitByCode( "foo" ); assertNull( unit4 ); } @@ -235,7 +231,7 @@ organisationUnitService.addOrganisationUnit( unit5 ); Collection units = organisationUnitService.getAllOrganisationUnits(); - + assertNotNull( units ); assertEquals( 5, units.size() ); assertTrue( units.contains( unit1 ) ); @@ -316,7 +312,7 @@ OrganisationUnit unitM = createOrganisationUnit( 'M', unitF ); OrganisationUnit unitN = createOrganisationUnit( 'N', unitG ); OrganisationUnit unitO = createOrganisationUnit( 'O', unitG ); - + unitA.getChildren().add( unitB ); unitA.getChildren().add( unitC ); unitB.getChildren().add( unitD ); @@ -331,7 +327,7 @@ unitF.getChildren().add( unitM ); unitG.getChildren().add( unitN ); unitG.getChildren().add( unitO ); - + organisationUnitService.addOrganisationUnit( unitA ); organisationUnitService.addOrganisationUnit( unitB ); organisationUnitService.addOrganisationUnit( unitC ); @@ -347,12 +343,12 @@ organisationUnitService.addOrganisationUnit( unitM ); organisationUnitService.addOrganisationUnit( unitN ); organisationUnitService.addOrganisationUnit( unitO ); - + assertTrue( equals( organisationUnitService.getOrganisationUnitsAtLevel( 2, unitB ), unitB ) ); assertTrue( equals( organisationUnitService.getOrganisationUnitsAtLevel( 3, unitB ), unitD, unitE ) ); assertTrue( equals( organisationUnitService.getOrganisationUnitsAtLevel( 4, unitB ), unitH, unitI, unitJ, unitK ) ); } - + @Test public void testGetOrganisationUnitsByNameAndGroups() { @@ -363,23 +359,23 @@ organisationUnitService.addOrganisationUnit( unitA ); organisationUnitService.addOrganisationUnit( unitB ); organisationUnitService.addOrganisationUnit( unitC ); - + OrganisationUnitGroup groupA = createOrganisationUnitGroup( 'A' ); OrganisationUnitGroup groupB = createOrganisationUnitGroup( 'B' ); OrganisationUnitGroup groupC = createOrganisationUnitGroup( 'C' ); - + groupA.getMembers().add( unitA ); groupA.getMembers().add( unitB ); groupA.getMembers().add( unitC ); groupB.getMembers().add( unitA ); groupB.getMembers().add( unitB ); groupC.getMembers().add( unitA ); - + organisationUnitGroupService.addOrganisationUnitGroup( groupA ); organisationUnitGroupService.addOrganisationUnitGroup( groupB ); organisationUnitGroupService.addOrganisationUnitGroup( groupC ); - - List groups = Arrays.asList( groupA ); + + List groups = Arrays.asList( groupA ); Collection units = organisationUnitService.getOrganisationUnitsByNameAndGroups( null, groups, false ); assertEquals( 3, units.size() ); units = organisationUnitService.getOrganisationUnitsByNameAndGroups( unitA.getName().toLowerCase(), groups, false ); @@ -404,11 +400,11 @@ units = organisationUnitService.getOrganisationUnitsByNameAndGroups( null, groups, unitA, false ); assertEquals( 2, units.size() ); - groups = Arrays.asList( groupA, groupB, groupC ); - units = organisationUnitService.getOrganisationUnitsByNameAndGroups( null, groups, false ); + groups = Arrays.asList( groupA, groupB, groupC ); + units = organisationUnitService.getOrganisationUnitsByNameAndGroups( null, groups, false ); assertEquals( 1, units.size() ); } - + // ------------------------------------------------------------------------- // OrganisationUnitGroup // ------------------------------------------------------------------------- @@ -454,7 +450,7 @@ int ougid = organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup ); assertTrue( organisationUnitGroupService.getOrganisationUnitGroup( ougid ).getMembers().size() == 2 ); - + organisationUnitGroup.getMembers().remove( organisationUnit1 ); organisationUnitGroupService.updateOrganisationUnitGroup( organisationUnitGroup ); @@ -506,10 +502,10 @@ organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup1 ); organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup2 ); - OrganisationUnitGroup group1 = organisationUnitGroupService.getOrganisationUnitGroupByName( oUG1Name ); + OrganisationUnitGroup group1 = organisationUnitGroupService.getOrganisationUnitGroupByName( oUG1Name ).get( 0 ); assertEquals( group1.getName(), oUG1Name ); - OrganisationUnitGroup group2 = organisationUnitGroupService.getOrganisationUnitGroupByName( oUG2Name ); + OrganisationUnitGroup group2 = organisationUnitGroupService.getOrganisationUnitGroupByName( oUG2Name ).get( 0 ); assertEquals( group2.getName(), oUG2Name ); } @@ -546,14 +542,14 @@ // retrieves children from hierarchyVersion ver_id and parentId id2 Collection children1 = hierarchy.getChildren( unit2.getId() ); - + // assert 4, 5, 6 are children of 2 assertEquals( 4, children1.size() ); assertTrue( children1.contains( id2 ) ); assertTrue( children1.contains( id4 ) ); assertTrue( children1.contains( id5 ) ); assertTrue( children1.contains( id6 ) ); - + // retrieves children from hierarchyVersion ver_id and parentId id1 Collection children2 = hierarchy.getChildren( unit1.getId() ); @@ -562,11 +558,11 @@ // retrieves children from hierarchyVersion ver_id and parentId id5 Collection children3 = hierarchy.getChildren( unit5.getId() ); - + // assert 6 is children of 5 assertEquals( 2, children3.size() ); assertTrue( children3.contains( id5 ) ); - assertTrue( children3.contains( id6 ) ); + assertTrue( children3.contains( id6 ) ); } // ------------------------------------------------------------------------- @@ -606,14 +602,14 @@ assertEquals( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ).getName(), "ougs1" ); assertTrue( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ).getOrganisationUnitGroups().size() == 3 ); - + organisationUnitGroupSet1.getOrganisationUnitGroups().remove( organisationUnitGroup3 ); organisationUnitGroupService.updateOrganisationUnitGroupSet( organisationUnitGroupSet1 ); // assert update assertTrue( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ).getOrganisationUnitGroups().size() == 2 ); - + OrganisationUnitGroupSet organisationUnitGroupSet2 = new OrganisationUnitGroupSet(); organisationUnitGroupSet2.setName( "ougs2" ); organisationUnitGroupSet2.setCompulsory( true ); @@ -623,10 +619,10 @@ // assert getAllOrderedName assertTrue( organisationUnitGroupService.getAllOrganisationUnitGroupSets().size() == 2 ); - + organisationUnitGroupService.deleteOrganisationUnitGroupSet( organisationUnitGroupSet1 ); organisationUnitGroupService.deleteOrganisationUnitGroupSet( organisationUnitGroupSet2 ); - + assertNull( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ) ); assertNull( organisationUnitGroupService.getOrganisationUnitGroupSet( id2 ) ); } @@ -667,8 +663,8 @@ organisationUnitGroupService.addOrganisationUnitGroupSet( organisationUnitGroupSet1 ); organisationUnitGroupService.addOrganisationUnitGroupSet( organisationUnitGroupSet2 ); - OrganisationUnitGroupSet set1 = organisationUnitGroupService.getOrganisationUnitGroupSetByName( ougs1 ); - OrganisationUnitGroupSet set2 = organisationUnitGroupService.getOrganisationUnitGroupSetByName( ougs2 ); + OrganisationUnitGroupSet set1 = organisationUnitGroupService.getOrganisationUnitGroupSetByName( ougs1 ).get( 0 ); + OrganisationUnitGroupSet set2 = organisationUnitGroupService.getOrganisationUnitGroupSetByName( ougs2 ).get( 0 ); assertEquals( set1.getName(), ougs1 ); assertEquals( set2.getName(), ougs2 ); @@ -687,12 +683,12 @@ { OrganisationUnitLevel levelA = new OrganisationUnitLevel( 1, "National" ); OrganisationUnitLevel levelB = new OrganisationUnitLevel( 2, "District" ); - + int idA = organisationUnitService.addOrganisationUnitLevel( levelA ); int idB = organisationUnitService.addOrganisationUnitLevel( levelB ); - + assertEquals( levelA, organisationUnitService.getOrganisationUnitLevel( idA ) ); - assertEquals( levelB, organisationUnitService.getOrganisationUnitLevel( idB ) ); + assertEquals( levelB, organisationUnitService.getOrganisationUnitLevel( idB ) ); } @Test @@ -701,33 +697,33 @@ OrganisationUnitLevel level1 = new OrganisationUnitLevel( 1, "National" ); OrganisationUnitLevel level2 = new OrganisationUnitLevel( 2, "District" ); OrganisationUnitLevel level4 = new OrganisationUnitLevel( 4, "PHU" ); - + organisationUnitService.addOrganisationUnitLevel( level1 ); organisationUnitService.addOrganisationUnitLevel( level2 ); organisationUnitService.addOrganisationUnitLevel( level4 ); - + OrganisationUnit unitA = createOrganisationUnit( 'A' ); OrganisationUnit unitB = createOrganisationUnit( 'B', unitA ); OrganisationUnit unitC = createOrganisationUnit( 'C', unitB ); OrganisationUnit unitD = createOrganisationUnit( 'D', unitC ); - + unitA.getChildren().add( unitB ); unitB.getChildren().add( unitC ); unitC.getChildren().add( unitD ); - + organisationUnitService.addOrganisationUnit( unitA ); organisationUnitService.addOrganisationUnit( unitB ); organisationUnitService.addOrganisationUnit( unitC ); organisationUnitService.addOrganisationUnit( unitD ); - + Iterator actual = organisationUnitService.getOrganisationUnitLevels().iterator(); - + assertNotNull( actual ); assertEquals( level1, actual.next() ); assertEquals( level2, actual.next() ); - + level4 = actual.next(); - + assertEquals( 4, level4.getLevel() ); assertEquals( "PHU", level4.getName() ); } @@ -737,13 +733,13 @@ { OrganisationUnitLevel levelA = new OrganisationUnitLevel( 1, "National" ); OrganisationUnitLevel levelB = new OrganisationUnitLevel( 2, "District" ); - + int idA = organisationUnitService.addOrganisationUnitLevel( levelA ); int idB = organisationUnitService.addOrganisationUnitLevel( levelB ); - + assertNotNull( organisationUnitService.getOrganisationUnitLevel( idA ) ); assertNotNull( organisationUnitService.getOrganisationUnitLevel( idB ) ); - + organisationUnitService.deleteOrganisationUnitLevel( levelA ); assertNull( organisationUnitService.getOrganisationUnitLevel( idA ) ); @@ -752,6 +748,6 @@ organisationUnitService.deleteOrganisationUnitLevel( levelB ); assertNull( organisationUnitService.getOrganisationUnitLevel( idA ) ); - assertNull( organisationUnitService.getOrganisationUnitLevel( idB ) ); + assertNull( organisationUnitService.getOrganisationUnitLevel( idB ) ); } } === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/GroupSetImporter.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/GroupSetImporter.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/GroupSetImporter.java 2013-02-04 14:57:16 +0000 @@ -35,6 +35,8 @@ import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; +import java.util.List; + /** * @author Lars Helge Overland * @version $Id: AbstractGroupSetConverter.java 4646 2008-02-26 14:54:29Z larshelg $ @@ -47,18 +49,18 @@ public GroupSetImporter() { } - + public GroupSetImporter( BatchHandler batchHandler, OrganisationUnitGroupService organisationUnitGroupService ) { this.batchHandler = batchHandler; this.organisationUnitGroupService = organisationUnitGroupService; } - + @Override public void importObject( OrganisationUnitGroupSet object, ImportParams params ) { NameMappingUtil.addGroupSetMapping( object.getId(), object.getName() ); - + read( object, GroupMemberType.NONE, params ); } @@ -74,14 +76,16 @@ match.setName( object.getName() ); match.setDescription( object.getDescription() ); match.setCompulsory( object.isCompulsory() ); - + organisationUnitGroupService.updateOrganisationUnitGroupSet( match ); } @Override protected OrganisationUnitGroupSet getMatching( OrganisationUnitGroupSet object ) { - return organisationUnitGroupService.getOrganisationUnitGroupSetByName( object.getName() ); + List organisationUnitGroupSetByName = organisationUnitGroupService.getOrganisationUnitGroupSetByName( object.getName() ); + + return organisationUnitGroupSetByName.isEmpty() ? null : organisationUnitGroupSetByName.get( 0 ); } @Override @@ -99,7 +103,7 @@ { return false; } - + return true; } } === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitGroupImporter.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitGroupImporter.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitGroupImporter.java 2013-02-04 14:57:16 +0000 @@ -8,6 +8,8 @@ import org.hisp.dhis.organisationunit.OrganisationUnitGroup; import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import java.util.List; + /* * Copyright (c) 2004-2012, University of Oslo * All rights reserved. @@ -43,18 +45,18 @@ public OrganisationUnitGroupImporter() { } - + public OrganisationUnitGroupImporter( BatchHandler batchHandler, OrganisationUnitGroupService organisationUnitGroupService ) { this.batchHandler = batchHandler; this.organisationUnitGroupService = organisationUnitGroupService; } - + @Override public void importObject( OrganisationUnitGroup object, ImportParams params ) { NameMappingUtil.addOrganisationUnitGroupMapping( object.getId(), object.getName() ); - + read( object, GroupMemberType.NONE, params ); } @@ -68,14 +70,16 @@ protected void importMatching( OrganisationUnitGroup object, OrganisationUnitGroup match ) { match.setName( object.getName() ); - + organisationUnitGroupService.updateOrganisationUnitGroup( match ); } @Override protected OrganisationUnitGroup getMatching( OrganisationUnitGroup object ) { - return organisationUnitGroupService.getOrganisationUnitGroupByName( object.getName() ); + List organisationUnitGroupByName = organisationUnitGroupService.getOrganisationUnitGroupByName( object.getName() ); + + return organisationUnitGroupByName.isEmpty() ? null : organisationUnitGroupByName.get( 0 ); } @Override === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitImporter.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitImporter.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitImporter.java 2013-02-04 14:57:16 +0000 @@ -27,8 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.apache.commons.lang.StringUtils.defaultIfEmpty; - import org.amplecode.quick.BatchHandler; import org.hisp.dhis.importexport.GroupMemberType; import org.hisp.dhis.importexport.ImportParams; @@ -37,6 +35,10 @@ import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; +import java.util.List; + +import static org.apache.commons.lang.StringUtils.defaultIfEmpty; + /** * @author Lars Helge Overland * @version $Id: AbstractOrganisationUnitConverter.java 6251 2008-11-10 14:37:05Z larshelg $ @@ -49,21 +51,21 @@ public OrganisationUnitImporter() { } - + public OrganisationUnitImporter( BatchHandler batchHandler, OrganisationUnitService organisationUnitService ) { this.batchHandler = batchHandler; this.organisationUnitService = organisationUnitService; } - + @Override public void importObject( OrganisationUnit object, ImportParams params ) { NameMappingUtil.addOrganisationUnitMapping( object.getId(), object.getName() ); - + read( object, GroupMemberType.NONE, params ); } - + @Override protected void importUnique( OrganisationUnit object ) { @@ -84,20 +86,21 @@ match.setFeatureType( defaultIfEmpty( object.getFeatureType(), match.getFeatureType() ) ); match.setCoordinates( defaultIfEmpty( object.getCoordinates(), match.getCoordinates() ) ); match.setLastUpdated( object.getLastUpdated() ); - + organisationUnitService.updateOrganisationUnit( match ); } @Override protected OrganisationUnit getMatching( OrganisationUnit object ) { - OrganisationUnit match = organisationUnitService.getOrganisationUnitByName( object.getName() ); - + List organisationUnitByName = organisationUnitService.getOrganisationUnitByName( object.getName() ); + OrganisationUnit match = organisationUnitByName.isEmpty() ? null : organisationUnitByName.get( 0 ); + if ( match == null ) { match = organisationUnitService.getOrganisationUnitByCode( object.getCode() ); } - + return match; } @@ -112,15 +115,15 @@ { return false; } - if ( !isSimiliar( object.getCode(), existing.getCode() ) || ( isNotNull( object.getCode(), existing.getCode() ) && !object.getCode().equals( existing.getCode() ) ) ) - { - return false; - } - if ( !isSimiliar( object.getOpeningDate(), existing.getOpeningDate() ) || ( isNotNull( object.getOpeningDate(), existing.getOpeningDate() ) && !object.getOpeningDate().equals( existing.getOpeningDate() ) ) ) - { - return false; - } - if ( !isSimiliar( object.getClosedDate(), existing.getClosedDate() ) || ( isNotNull( object.getClosedDate(), existing.getClosedDate() ) && !object.getClosedDate().equals( existing.getClosedDate() ) ) ) + if ( !isSimiliar( object.getCode(), existing.getCode() ) || (isNotNull( object.getCode(), existing.getCode() ) && !object.getCode().equals( existing.getCode() )) ) + { + return false; + } + if ( !isSimiliar( object.getOpeningDate(), existing.getOpeningDate() ) || (isNotNull( object.getOpeningDate(), existing.getOpeningDate() ) && !object.getOpeningDate().equals( existing.getOpeningDate() )) ) + { + return false; + } + if ( !isSimiliar( object.getClosedDate(), existing.getClosedDate() ) || (isNotNull( object.getClosedDate(), existing.getClosedDate() ) && !object.getClosedDate().equals( existing.getClosedDate() )) ) { return false; } @@ -128,23 +131,23 @@ { return false; } - if ( !isSimiliar( object.getComment(), existing.getComment() ) || ( isNotNull( object.getComment(), existing.getComment() ) && !object.getComment().equals( existing.getComment() ) ) ) - { - return false; - } - if ( !isSimiliar( object.getGeoCode(), existing.getGeoCode() ) || ( isNotNull( object.getGeoCode(), existing.getGeoCode() ) && !object.getGeoCode().equals( existing.getGeoCode() ) ) ) - { - return false; - } - if ( !isSimiliar( object.getFeatureType(), existing.getFeatureType() ) || ( isNotNull( object.getFeatureType(), existing.getFeatureType() ) && !object.getFeatureType().equals( existing.getFeatureType() ) ) ) - { - return false; - } - if ( !isSimiliar( object.getCoordinates(), existing.getCoordinates() ) || ( isNotNull( object.getCoordinates(), existing.getCoordinates() ) && !object.getCoordinates().equals( existing.getCoordinates() ) ) ) - { - return false; - } - + if ( !isSimiliar( object.getComment(), existing.getComment() ) || (isNotNull( object.getComment(), existing.getComment() ) && !object.getComment().equals( existing.getComment() )) ) + { + return false; + } + if ( !isSimiliar( object.getGeoCode(), existing.getGeoCode() ) || (isNotNull( object.getGeoCode(), existing.getGeoCode() ) && !object.getGeoCode().equals( existing.getGeoCode() )) ) + { + return false; + } + if ( !isSimiliar( object.getFeatureType(), existing.getFeatureType() ) || (isNotNull( object.getFeatureType(), existing.getFeatureType() ) && !object.getFeatureType().equals( existing.getFeatureType() )) ) + { + return false; + } + if ( !isSimiliar( object.getCoordinates(), existing.getCoordinates() ) || (isNotNull( object.getCoordinates(), existing.getCoordinates() ) && !object.getCoordinates().equals( existing.getCoordinates() )) ) + { + return false; + } + return true; } } === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitLevelImporter.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitLevelImporter.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/OrganisationUnitLevelImporter.java 2013-02-04 14:57:16 +0000 @@ -79,7 +79,7 @@ if ( match == null ) { - match = organisationUnitService.getOrganisationUnitLevelByName( object.getName() ); + match = organisationUnitService.getOrganisationUnitLevelByName( object.getName() ).get( 0 ); } return match; === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/dxf/DXFOrganisationUnitsTest.java' --- dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/dxf/DXFOrganisationUnitsTest.java 2012-11-20 17:04:08 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/dxf/DXFOrganisationUnitsTest.java 2013-02-04 14:57:16 +0000 @@ -27,10 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; - import org.hisp.dhis.DhisTest; import org.hisp.dhis.external.location.LocationManagerException; import org.hisp.dhis.importexport.ImportParams; @@ -41,7 +37,12 @@ import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.junit.Test; -import static org.junit.Assert.*; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; /** * @author Lars Helge Overland @@ -50,19 +51,19 @@ extends DhisTest { private InputStream inputStream; - + private ImportService importService; - + @Override public void setUpTest() throws LocationManagerException, IOException { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); inputStream = classLoader.getResourceAsStream( "dxfOrganisationUnits.xml" ); - + organisationUnitService = (OrganisationUnitService) getBean( OrganisationUnitService.ID ); } - + @Override public void tearDownTest() throws Exception @@ -79,15 +80,15 @@ @Test public void testImportOrganisationUnits() throws Exception { - importService = (ImportService) getBean( "org.hisp.dhis.importexport.ImportService" ); + importService = (ImportService) getBean( "org.hisp.dhis.importexport.ImportService" ); ImportParams params = ImportExportUtils.getImportParams( ImportStrategy.NEW_AND_UPDATES, false, false, false ); - + importService.importData( params, inputStream ); - + Collection units = organisationUnitService.getAllOrganisationUnits(); OrganisationUnit unit = units.iterator().next(); - + assertNotNull( units ); assertEquals( 3, units.size() ); assertEquals( "GeoCode", unit.getGeoCode() ); === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/dxf/GML2DXFTest.java' --- dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/dxf/GML2DXFTest.java 2012-11-20 17:04:08 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/dxf/GML2DXFTest.java 2013-02-04 14:57:16 +0000 @@ -80,24 +80,24 @@ assertNotNull( organisationUnitService.getAllOrganisationUnits() ); assertEquals( 13, organisationUnitService.getAllOrganisationUnits().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Bo" ).getCoordinatesAsList().size() ); - assertEquals( 18, organisationUnitService.getOrganisationUnitByName( "Bonthe" ).getCoordinatesAsList().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Moyamba" ).getCoordinatesAsList().size() ); - assertEquals( 3, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).getCoordinatesAsList().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Kailahun" ).getCoordinatesAsList().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Kenema" ).getCoordinatesAsList().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Kono" ).getCoordinatesAsList().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Bombali" ).getCoordinatesAsList().size() ); - assertEquals( 3, organisationUnitService.getOrganisationUnitByName( "Kambia" ).getCoordinatesAsList().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Koinadugu" ).getCoordinatesAsList().size() ); - assertEquals( 9, organisationUnitService.getOrganisationUnitByName( "Port Loko" ).getCoordinatesAsList().size() ); - assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Tonkolili" ).getCoordinatesAsList().size() ); - assertEquals( 2, organisationUnitService.getOrganisationUnitByName( "Western Area" ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Bo" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 18, organisationUnitService.getOrganisationUnitByName( "Bonthe" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Moyamba" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 3, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Kailahun" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Kenema" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Kono" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Bombali" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 3, organisationUnitService.getOrganisationUnitByName( "Kambia" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Koinadugu" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 9, organisationUnitService.getOrganisationUnitByName( "Port Loko" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 1, organisationUnitService.getOrganisationUnitByName( "Tonkolili" ).get( 0 ).getCoordinatesAsList().size() ); + assertEquals( 2, organisationUnitService.getOrganisationUnitByName( "Western Area" ).get( 0 ).getCoordinatesAsList().size() ); - assertEquals( 76, organisationUnitService.getOrganisationUnitByName( "Bo" ).getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); - assertEquals( 7, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); - assertEquals( 7, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).getCoordinatesAsList().get( 1 ).getNumberOfCoordinates() ); - assertEquals( 159, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).getCoordinatesAsList().get( 2 ).getNumberOfCoordinates() ); - assertEquals( 189, organisationUnitService.getOrganisationUnitByName( "Bonthe" ).getCoordinatesAsList().get( 1 ).getNumberOfCoordinates() ); + assertEquals( 76, organisationUnitService.getOrganisationUnitByName( "Bo" ).get( 0 ).getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); + assertEquals( 7, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).get( 0 ).getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); + assertEquals( 7, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).get( 0 ).getCoordinatesAsList().get( 1 ).getNumberOfCoordinates() ); + assertEquals( 159, organisationUnitService.getOrganisationUnitByName( "Pujehun" ).get( 0 ).getCoordinatesAsList().get( 2 ).getNumberOfCoordinates() ); + assertEquals( 189, organisationUnitService.getOrganisationUnitByName( "Bonthe" ).get( 0 ).getCoordinatesAsList().get( 1 ).getNumberOfCoordinates() ); } } === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportObjectServiceImportAllTest.java' --- dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportObjectServiceImportAllTest.java 2012-11-20 17:04:08 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/importobject/ImportObjectServiceImportAllTest.java 2013-02-04 14:57:16 +0000 @@ -27,13 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import java.util.Collection; - import org.amplecode.quick.BatchHandler; import org.amplecode.quick.BatchHandlerFactory; import org.hisp.dhis.DhisTest; @@ -62,18 +55,22 @@ import org.junit.Ignore; import org.junit.Test; +import java.util.Collection; + +import static org.junit.Assert.*; + /** * @author Lars Helge Overland * @version $Id$ */ -@SuppressWarnings( "unused" ) +@SuppressWarnings("unused") public class ImportObjectServiceImportAllTest extends DhisTest { private ImportObjectService importObjectService; - + private BatchHandlerFactory batchHandlerFactory; - + // ------------------------------------------------------------------------- // CategoryOption // ------------------------------------------------------------------------- @@ -104,7 +101,7 @@ private DataElementCategoryCombo categoryComboA; private DataElementCategoryCombo categoryComboB; - + private DataElementCategoryCombo categoryComboADuplicate; private DataElementCategoryCombo categoryComboBDuplicate; @@ -143,12 +140,12 @@ // DataElement // ------------------------------------------------------------------------- - private DataElement dataElementA; + private DataElement dataElementA; private DataElement dataElementB; private DataElement dataElementC; private DataElement dataElementD; - - private DataElement dataElementAModified; + + private DataElement dataElementAModified; private DataElement dataElementBModified; private DataElement dataElementCModified; private DataElement dataElementDModified; @@ -157,11 +154,11 @@ // DataElementGroup // ------------------------------------------------------------------------- - private DataElementGroup dataElementGroupA; + private DataElementGroup dataElementGroupA; private DataElementGroup dataElementGroupB; private DataElementGroup dataElementGroupC; - - private DataElementGroup dataElementGroupADuplicate; + + private DataElementGroup dataElementGroupADuplicate; private DataElementGroup dataElementGroupBDuplicate; private DataElementGroup dataElementGroupCDuplicate; @@ -185,7 +182,7 @@ private PeriodType periodTypeA; private Period periodA; - + private Period periodADuplicate; // ------------------------------------------------------------------------- @@ -195,7 +192,7 @@ private OrganisationUnit organisationUnitA; private OrganisationUnit organisationUnitB; private OrganisationUnit organisationUnitC; - + private OrganisationUnit organisationUnitAModified; private OrganisationUnit organisationUnitBModified; private OrganisationUnit organisationUnitCModified; @@ -220,7 +217,7 @@ private DataValue dataValueG; private DataValue dataValueH; private DataValue dataValueI; - + private DataValue dataValueADuplicate; private DataValue dataValueBDuplicate; private DataValue dataValueCDuplicate; @@ -230,7 +227,7 @@ private DataValue dataValueGDuplicate; private DataValue dataValueHDuplicate; private DataValue dataValueIDuplicate; - + // ------------------------------------------------------------------------- // Fixture // ------------------------------------------------------------------------- @@ -243,17 +240,17 @@ // --------------------------------------------------------------------- importObjectService = (ImportObjectService) getBean( ImportObjectService.ID ); - + batchHandlerFactory = (BatchHandlerFactory) getBean( "batchHandlerFactory" ); - + dataElementService = (DataElementService) getBean( DataElementService.ID ); - + categoryService = (DataElementCategoryService) getBean( DataElementCategoryService.ID ); - + periodService = (PeriodService) getBean( PeriodService.ID ); - + organisationUnitService = (OrganisationUnitService) getBean( OrganisationUnitService.ID ); - + dataValueService = (DataValueService) getBean( DataValueService.ID ); // --------------------------------------------------------------------- @@ -264,12 +261,12 @@ categoryOptionB = new DataElementCategoryOption( "CategoryOptionB" ); categoryOptionC = new DataElementCategoryOption( "CategoryOptionC" ); categoryOptionD = new DataElementCategoryOption( "CategoryOptionD" ); - + categoryService.addDataElementCategoryOption( categoryOptionA ); categoryService.addDataElementCategoryOption( categoryOptionB ); categoryService.addDataElementCategoryOption( categoryOptionC ); categoryService.addDataElementCategoryOption( categoryOptionD ); - + categoryOptionADuplicate = new DataElementCategoryOption( "CategoryOptionA" ); categoryOptionBDuplicate = new DataElementCategoryOption( "CategoryOptionB" ); categoryOptionCDuplicate = new DataElementCategoryOption( "CategoryOptionC" ); @@ -279,7 +276,7 @@ categoryOptionBDuplicate.setId( 'B' ); categoryOptionCDuplicate.setId( 'C' ); categoryOptionDDuplicate.setId( 'D' ); - + importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryOptionADuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryOptionBDuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryOptionCDuplicate, null ); @@ -291,15 +288,15 @@ categoryA = new DataElementCategory( "CategoryA" ); categoryB = new DataElementCategory( "CategoryB" ); - + categoryA.getCategoryOptions().add( categoryOptionA ); categoryA.getCategoryOptions().add( categoryOptionB ); categoryB.getCategoryOptions().add( categoryOptionC ); categoryB.getCategoryOptions().add( categoryOptionD ); - + categoryService.addDataElementCategory( categoryA ); categoryService.addDataElementCategory( categoryB ); - + categoryADuplicate = new DataElementCategory( "CategoryA" ); categoryBDuplicate = new DataElementCategory( "CategoryB" ); @@ -317,7 +314,7 @@ categoryCategoryOptionAssociationB = new GroupMemberAssociation( 'A', 'B', 2 ); categoryCategoryOptionAssociationC = new GroupMemberAssociation( 'B', 'C', 1 ); categoryCategoryOptionAssociationD = new GroupMemberAssociation( 'B', 'D', 2 ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.CATEGORY_CATEGORYOPTION, categoryCategoryOptionAssociationA ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.CATEGORY_CATEGORYOPTION, categoryCategoryOptionAssociationB ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.CATEGORY_CATEGORYOPTION, categoryCategoryOptionAssociationC ); @@ -329,20 +326,20 @@ categoryComboA = new DataElementCategoryCombo( "CategoryComboA" ); categoryComboB = new DataElementCategoryCombo( "CategoryComboB" ); - + categoryComboA.getCategories().add( categoryA ); categoryComboA.getCategories().add( categoryB ); categoryComboB.getCategories().add( categoryA ); - + categoryService.addDataElementCategoryCombo( categoryComboA ); categoryService.addDataElementCategoryCombo( categoryComboB ); - + categoryComboADuplicate = new DataElementCategoryCombo( "CategoryComboA" ); categoryComboBDuplicate = new DataElementCategoryCombo( "CategoryComboB" ); - + categoryComboADuplicate.setId( 'A' ); categoryComboBDuplicate.setId( 'B' ); - + importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryComboADuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryComboBDuplicate, null ); @@ -353,7 +350,7 @@ categoryComboCategoryAssociationA = new GroupMemberAssociation( 'A', 'A', 1 ); categoryComboCategoryAssociationB = new GroupMemberAssociation( 'A', 'B', 2 ); categoryComboCategoryAssociationC = new GroupMemberAssociation( 'B', 'A', 1 ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.CATEGORYCOMBO_CATEGORY, categoryComboCategoryAssociationA ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.CATEGORYCOMBO_CATEGORY, categoryComboCategoryAssociationB ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.CATEGORYCOMBO_CATEGORY, categoryComboCategoryAssociationC ); @@ -371,41 +368,41 @@ categoryOptionComboB.setCategoryCombo( categoryComboA ); categoryOptionComboC.setCategoryCombo( categoryComboB ); categoryOptionComboD.setCategoryCombo( categoryComboB ); - + categoryOptionComboA.getCategoryOptions().add( categoryOptionA ); categoryOptionComboA.getCategoryOptions().add( categoryOptionC ); categoryOptionComboB.getCategoryOptions().add( categoryOptionB ); categoryOptionComboB.getCategoryOptions().add( categoryOptionD ); categoryOptionComboC.getCategoryOptions().add( categoryOptionA ); categoryOptionComboD.getCategoryOptions().add( categoryOptionB ); - + categoryService.addDataElementCategoryOptionCombo( categoryOptionComboA ); categoryService.addDataElementCategoryOptionCombo( categoryOptionComboB ); categoryService.addDataElementCategoryOptionCombo( categoryOptionComboC ); categoryService.addDataElementCategoryOptionCombo( categoryOptionComboD ); - + categoryOptionComboADuplicate = new DataElementCategoryOptionCombo(); categoryOptionComboBDuplicate = new DataElementCategoryOptionCombo(); categoryOptionComboCDuplicate = new DataElementCategoryOptionCombo(); categoryOptionComboDDuplicate = new DataElementCategoryOptionCombo(); - + categoryOptionComboADuplicate.setId( 'A' ); categoryOptionComboBDuplicate.setId( 'B' ); categoryOptionComboCDuplicate.setId( 'C' ); categoryOptionComboDDuplicate.setId( 'D' ); - + categoryOptionComboADuplicate.setCategoryCombo( categoryComboADuplicate ); categoryOptionComboBDuplicate.setCategoryCombo( categoryComboADuplicate ); categoryOptionComboCDuplicate.setCategoryCombo( categoryComboBDuplicate ); categoryOptionComboDDuplicate.setCategoryCombo( categoryComboBDuplicate ); - + categoryOptionComboADuplicate.getCategoryOptions().add( categoryOptionADuplicate ); categoryOptionComboADuplicate.getCategoryOptions().add( categoryOptionCDuplicate ); categoryOptionComboBDuplicate.getCategoryOptions().add( categoryOptionBDuplicate ); categoryOptionComboBDuplicate.getCategoryOptions().add( categoryOptionDDuplicate ); categoryOptionComboCDuplicate.getCategoryOptions().add( categoryOptionADuplicate ); categoryOptionComboDDuplicate.getCategoryOptions().add( categoryOptionBDuplicate ); - + importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryOptionComboADuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryOptionComboBDuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.MATCH, categoryOptionComboCDuplicate, null ); @@ -415,8 +412,8 @@ // DataElement // --------------------------------------------------------------------- - dataElementA = createDataElement( 'A', categoryComboA ); - dataElementB = createDataElement( 'B', categoryComboA ); + dataElementA = createDataElement( 'A', categoryComboA ); + dataElementB = createDataElement( 'B', categoryComboA ); dataElementC = createDataElement( 'C', categoryComboA ); dataElementD = createDataElement( 'D', categoryComboA ); @@ -424,12 +421,12 @@ dataElementBModified = createDataElement( 'B', categoryComboADuplicate ); dataElementCModified = createDataElement( 'C', categoryComboADuplicate ); dataElementDModified = createDataElement( 'D', categoryComboADuplicate ); - + dataElementAModified.setId( 'A' ); dataElementBModified.setId( 'B' ); dataElementCModified.setId( 'C' ); dataElementDModified.setId( 'D' ); - + dataElementAModified.setShortName( "ShortNameModifiedA" ); dataElementBModified.setShortName( "ShortNameModifiedB" ); dataElementCModified.setShortName( "ShortNameModifiedC" ); @@ -446,18 +443,18 @@ dataElementGroupADuplicate = createDataElementGroup( 'A' ); dataElementGroupBDuplicate = createDataElementGroup( 'B' ); dataElementGroupCDuplicate = createDataElementGroup( 'C' ); - + dataElementGroupADuplicate.setId( 'A' ); dataElementGroupBDuplicate.setId( 'B' ); dataElementGroupCDuplicate.setId( 'C' ); - + dataElementGroupAssociationA = new GroupMemberAssociation( 'A', 'A' ); dataElementGroupAssociationB = new GroupMemberAssociation( 'A', 'B' ); dataElementGroupAssociationC = new GroupMemberAssociation( 'A', 'C' ); dataElementGroupAssociationD = new GroupMemberAssociation( 'A', 'D' ); dataElementGroupAssociationE = new GroupMemberAssociation( 'B', 'A' ); dataElementGroupAssociationF = new GroupMemberAssociation( 'B', 'B' ); - dataElementGroupAssociationG = new GroupMemberAssociation( 'B', 'C' ); + dataElementGroupAssociationG = new GroupMemberAssociation( 'B', 'C' ); dataElementGroupAssociationH = new GroupMemberAssociation( 'B', 'D' ); dataElementGroupAssociationI = new GroupMemberAssociation( 'C', 'A' ); dataElementGroupAssociationJ = new GroupMemberAssociation( 'C', 'B' ); @@ -471,9 +468,9 @@ periodTypeA = periodService.getPeriodTypeByName( MonthlyPeriodType.NAME ); periodA = createPeriod( periodTypeA, getDate( 1, 0, 2000 ), getDate( 31, 0, 2000 ) ); - + periodADuplicate = createPeriod( periodTypeA, getDate( 1, 0, 2000 ), getDate( 31, 0, 2000 ) ); - + periodADuplicate.setId( 'A' ); // --------------------------------------------------------------------- @@ -483,15 +480,15 @@ organisationUnitA = createOrganisationUnit( 'A' ); organisationUnitB = createOrganisationUnit( 'B' ); organisationUnitC = createOrganisationUnit( 'C' ); - + organisationUnitAModified = createOrganisationUnit( 'A' ); organisationUnitBModified = createOrganisationUnit( 'B' ); organisationUnitCModified = createOrganisationUnit( 'C' ); - + organisationUnitAModified.setId( 'A' ); organisationUnitBModified.setId( 'B' ); organisationUnitCModified.setId( 'C' ); - + organisationUnitAModified.setShortName( "ShortNameModifiedA" ); organisationUnitBModified.setShortName( "ShortNameModifiedB" ); organisationUnitCModified.setShortName( "ShortNameModifiedC" ); @@ -516,7 +513,7 @@ dataValueG = createDataValue( dataElementC, periodA, organisationUnitA, "10", categoryOptionComboA ); dataValueH = createDataValue( dataElementC, periodA, organisationUnitB, "10", categoryOptionComboA ); dataValueI = createDataValue( dataElementC, periodA, organisationUnitC, "10", categoryOptionComboA ); - + dataValueADuplicate = createDataValue( dataElementAModified, periodADuplicate, organisationUnitAModified, "10", categoryOptionComboADuplicate ); dataValueBDuplicate = createDataValue( dataElementAModified, periodADuplicate, organisationUnitBModified, "10", categoryOptionComboADuplicate ); dataValueCDuplicate = createDataValue( dataElementAModified, periodADuplicate, organisationUnitCModified, "10", categoryOptionComboADuplicate ); @@ -525,9 +522,9 @@ dataValueFDuplicate = createDataValue( dataElementBModified, periodADuplicate, organisationUnitCModified, "10", categoryOptionComboADuplicate ); dataValueGDuplicate = createDataValue( dataElementCModified, periodADuplicate, organisationUnitAModified, "10", categoryOptionComboADuplicate ); dataValueHDuplicate = createDataValue( dataElementCModified, periodADuplicate, organisationUnitBModified, "10", categoryOptionComboADuplicate ); - dataValueIDuplicate = createDataValue( dataElementCModified, periodADuplicate, organisationUnitCModified, "10", categoryOptionComboADuplicate ); + dataValueIDuplicate = createDataValue( dataElementCModified, periodADuplicate, organisationUnitCModified, "10", categoryOptionComboADuplicate ); } - + @Override public boolean emptyDatabaseAfterTest() { @@ -545,11 +542,11 @@ importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementAModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementBModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementCModified, null ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementGroupADuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementGroupBDuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementGroupCDuplicate, null ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationA ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationB ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationC ); @@ -563,30 +560,30 @@ dbmsManager.clearSession(); importObjectService.importAll(); - + Collection dataElements = dataElementService.getAllDataElements(); - + assertEquals( dataElements.size(), 3 ); - + assertTrue( dataElements.contains( dataElementA ) ); assertTrue( dataElements.contains( dataElementB ) ); assertTrue( dataElements.contains( dataElementC ) ); - + Collection dataElementGroups = dataElementService.getAllDataElementGroups(); - + assertEquals( dataElementGroups.size(), 3 ); - + assertTrue( dataElementGroups.contains( dataElementGroupA ) ); assertTrue( dataElementGroups.contains( dataElementGroupB ) ); assertTrue( dataElementGroups.contains( dataElementGroupC ) ); - + for ( DataElementGroup dataElementGroup : dataElementGroups ) { assertEquals( dataElementGroup.getMembers().size(), 3 ); - + assertTrue( dataElementGroup.getMembers().containsAll( dataElements ) ); } - + assertEquals( importObjectService.getImportObjects( DataElement.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( DataElementGroup.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( GroupMemberAssociation.class ).size(), 0 ); @@ -599,57 +596,57 @@ dataElementService.addDataElement( dataElementA ); dataElementService.addDataElement( dataElementB ); dataElementService.addDataElement( dataElementC ); - + dataElementGroupA.getMembers().add( dataElementA ); dataElementGroupB.getMembers().add( dataElementA ); - dataElementGroupC.getMembers().add( dataElementA ); - + dataElementGroupC.getMembers().add( dataElementA ); + dataElementService.addDataElementGroup( dataElementGroupA ); dataElementService.addDataElementGroup( dataElementGroupB ); dataElementService.addDataElementGroup( dataElementGroupC ); - + importObjectService.addImportObject( ImportObjectStatus.UPDATE, dataElementAModified, dataElementA ); importObjectService.addImportObject( ImportObjectStatus.UPDATE, dataElementBModified, dataElementB ); importObjectService.addImportObject( ImportObjectStatus.UPDATE, dataElementCModified, dataElementC ); - + importObjectService.addImportObject( ImportObjectStatus.MATCH, GroupMemberType.NONE, dataElementGroupADuplicate ); importObjectService.addImportObject( ImportObjectStatus.MATCH, GroupMemberType.NONE, dataElementGroupBDuplicate ); importObjectService.addImportObject( ImportObjectStatus.MATCH, GroupMemberType.NONE, dataElementGroupCDuplicate ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationB ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationC ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationF ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationG ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationJ ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationK ); - + dbmsManager.clearSession(); - + importObjectService.importAll(); Collection dataElements = dataElementService.getAllDataElements(); - + assertEquals( dataElements.size(), 3 ); - + assertTrue( dataElements.contains( dataElementAModified ) ); assertTrue( dataElements.contains( dataElementBModified ) ); assertTrue( dataElements.contains( dataElementCModified ) ); - + Collection dataElementGroups = dataElementService.getAllDataElementGroups(); - + assertEquals( dataElementGroups.size(), 3 ); - + assertTrue( dataElementGroups.contains( dataElementGroupA ) ); assertTrue( dataElementGroups.contains( dataElementGroupB ) ); assertTrue( dataElementGroups.contains( dataElementGroupC ) ); - + for ( DataElementGroup dataElementGroup : dataElementGroups ) { assertEquals( dataElementGroup.getMembers().size(), 3 ); - + assertTrue( dataElementGroup.getMembers().containsAll( dataElements ) ); } - + assertEquals( importObjectService.getImportObjects( DataElement.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( DataElementGroup.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( GroupMemberAssociation.class ).size(), 0 ); @@ -662,23 +659,23 @@ dataElementService.addDataElement( dataElementA ); dataElementService.addDataElement( dataElementB ); dataElementService.addDataElement( dataElementC ); - + dataElementGroupA.getMembers().add( dataElementA ); dataElementGroupB.getMembers().add( dataElementA ); - dataElementGroupC.getMembers().add( dataElementA ); - + dataElementGroupC.getMembers().add( dataElementA ); + dataElementService.addDataElementGroup( dataElementGroupA ); dataElementService.addDataElementGroup( dataElementGroupB ); dataElementService.addDataElementGroup( dataElementGroupC ); - + importObjectService.addImportObject( ImportObjectStatus.MATCH, dataElementAModified, null ); importObjectService.addImportObject( ImportObjectStatus.MATCH, dataElementBModified, null ); importObjectService.addImportObject( ImportObjectStatus.MATCH, dataElementCModified, null ); - + importObjectService.addImportObject( ImportObjectStatus.MATCH, GroupMemberType.NONE, dataElementGroupADuplicate ); importObjectService.addImportObject( ImportObjectStatus.MATCH, GroupMemberType.NONE, dataElementGroupBDuplicate ); importObjectService.addImportObject( ImportObjectStatus.MATCH, GroupMemberType.NONE, dataElementGroupCDuplicate ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationB ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationC ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationF ); @@ -687,32 +684,32 @@ importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationK ); dbmsManager.clearSession(); - + importObjectService.importAll(); Collection dataElements = dataElementService.getAllDataElements(); - + assertEquals( dataElements.size(), 3 ); - + assertTrue( dataElements.contains( dataElementA ) ); assertTrue( dataElements.contains( dataElementB ) ); assertTrue( dataElements.contains( dataElementC ) ); - + Collection dataElementGroups = dataElementService.getAllDataElementGroups(); - + assertEquals( dataElementGroups.size(), 3 ); - + assertTrue( dataElementGroups.contains( dataElementGroupA ) ); assertTrue( dataElementGroups.contains( dataElementGroupB ) ); assertTrue( dataElementGroups.contains( dataElementGroupC ) ); - + for ( DataElementGroup dataElementGroup : dataElementGroups ) { assertEquals( dataElementGroup.getMembers().size(), 3 ); - + assertTrue( dataElementGroup.getMembers().containsAll( dataElements ) ); } - + assertEquals( importObjectService.getImportObjects( DataElement.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( DataElementGroup.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( GroupMemberAssociation.class ).size(), 0 ); @@ -723,15 +720,15 @@ public void testMatchAndImportAll() { int existingObjectIdA = dataElementService.addDataElement( dataElementA ); - + dataElementGroupA.getMembers().add( dataElementA ); - + int existingObjectIdB = dataElementService.addDataElementGroup( dataElementGroupA ); - + int importObjectIdA = importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementBModified, null ); int importObjectIdB = importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementCModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementDModified, null ); - + int importObjectIdC = importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementGroupBDuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementGroupCDuplicate, null ); @@ -743,31 +740,31 @@ importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationL ); dbmsManager.clearSession(); - + importObjectService.matchObject( importObjectIdA, existingObjectIdA ); importObjectService.matchObject( importObjectIdB, existingObjectIdA ); importObjectService.matchObject( importObjectIdC, existingObjectIdB ); - + importObjectService.importAll(); - + Collection dataElements = dataElementService.getAllDataElements(); - + assertEquals( dataElements.size(), 2 ); - + assertTrue( dataElements.contains( dataElementA ) ); assertTrue( dataElements.contains( dataElementDModified ) ); - + Collection dataElementGroups = dataElementService.getAllDataElementGroups(); - + assertEquals( dataElementGroups.size(), 2 ); - + assertTrue( dataElementGroups.contains( dataElementGroupA ) ); assertTrue( dataElementGroups.contains( dataElementGroupCDuplicate ) ); - + for ( DataElementGroup dataElementGroup : dataElementGroups ) { assertEquals( dataElementGroup.getMembers().size(), 2 ); - + assertTrue( dataElementGroup.getMembers().containsAll( dataElements ) ); } @@ -781,15 +778,15 @@ public void testDeleteAndImportAll() { dataElementService.addDataElement( dataElementA ); - + dataElementGroupA.getMembers().add( dataElementA ); - + dataElementService.addDataElementGroup( dataElementGroupA ); - + int importObjectIdA = importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementBModified, null ); int importObjectIdB = importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementCModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementDModified, null ); - + int importObjectIdC = importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementGroupBDuplicate, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementGroupCDuplicate, null ); @@ -801,31 +798,31 @@ importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.DATAELEMENTGROUP, dataElementGroupAssociationL ); dbmsManager.clearSession(); - + importObjectService.cascadeDeleteImportObject( importObjectIdA ); importObjectService.cascadeDeleteImportObject( importObjectIdB ); importObjectService.cascadeDeleteImportObject( importObjectIdC ); - + importObjectService.importAll(); - + Collection dataElements = dataElementService.getAllDataElements(); - + assertEquals( dataElements.size(), 2 ); - + assertTrue( dataElements.contains( dataElementA ) ); assertTrue( dataElements.contains( dataElementDModified ) ); - + Collection dataElementGroups = dataElementService.getAllDataElementGroups(); - + assertEquals( dataElementGroups.size(), 2 ); - + assertTrue( dataElementGroups.contains( dataElementGroupA ) ); assertTrue( dataElementGroups.contains( dataElementGroupCDuplicate ) ); - + for ( DataElementGroup dataElementGroup : dataElementGroups ) { assertEquals( dataElementGroup.getMembers().size(), 1 ); - } + } assertEquals( importObjectService.getImportObjects( DataElement.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( DataElementGroup.class ).size(), 0 ); @@ -839,29 +836,29 @@ importObjectService.addImportObject( ImportObjectStatus.NEW, organisationUnitAModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, organisationUnitBModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, organisationUnitCModified, null ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.ORGANISATIONUNITRELATIONSHIP, relationshipAssociationA ); importObjectService.addImportObject( ImportObjectStatus.NEW, GroupMemberType.ORGANISATIONUNITRELATIONSHIP, relationshipAssociationB ); - dbmsManager.clearSession(); - + dbmsManager.clearSession(); + importObjectService.importAll(); - - organisationUnitAModified = organisationUnitService.getOrganisationUnitByName( organisationUnitAModified.getName() ); - organisationUnitBModified = organisationUnitService.getOrganisationUnitByName( organisationUnitBModified.getName() ); - organisationUnitCModified = organisationUnitService.getOrganisationUnitByName( organisationUnitCModified.getName() ); - + + organisationUnitAModified = organisationUnitService.getOrganisationUnitByName( organisationUnitAModified.getName() ).get( 0 ); + organisationUnitBModified = organisationUnitService.getOrganisationUnitByName( organisationUnitBModified.getName() ).get( 0 ); + organisationUnitCModified = organisationUnitService.getOrganisationUnitByName( organisationUnitCModified.getName() ).get( 0 ); + assertNotNull( organisationUnitAModified ); assertNotNull( organisationUnitBModified ); assertNotNull( organisationUnitCModified ); - + assertNull( organisationUnitAModified.getParent() ); assertNotNull( organisationUnitBModified.getParent() ); assertNotNull( organisationUnitCModified.getParent() ); - + assertTrue( organisationUnitBModified.getParent().equals( organisationUnitAModified ) ); assertTrue( organisationUnitCModified.getParent().equals( organisationUnitBModified ) ); - + assertEquals( importObjectService.getImportObjects( OrganisationUnit.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( GroupMemberAssociation.class ).size(), 0 ); } @@ -873,17 +870,17 @@ importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementAModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementBModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, dataElementCModified, null ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, periodADuplicate, null ); - + importObjectService.addImportObject( ImportObjectStatus.NEW, organisationUnitAModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, organisationUnitBModified, null ); importObjectService.addImportObject( ImportObjectStatus.NEW, organisationUnitCModified, null ); - + BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ImportDataValueBatchHandler.class ); - + batchHandler.init(); - + batchHandler.addObject( new ImportDataValue( dataValueADuplicate, ImportObjectStatus.NEW ) ); batchHandler.addObject( new ImportDataValue( dataValueBDuplicate, ImportObjectStatus.NEW ) ); batchHandler.addObject( new ImportDataValue( dataValueCDuplicate, ImportObjectStatus.NEW ) ); @@ -893,21 +890,21 @@ batchHandler.addObject( new ImportDataValue( dataValueGDuplicate, ImportObjectStatus.NEW ) ); batchHandler.addObject( new ImportDataValue( dataValueHDuplicate, ImportObjectStatus.NEW ) ); batchHandler.addObject( new ImportDataValue( dataValueIDuplicate, ImportObjectStatus.NEW ) ); - + batchHandler.flush(); dbmsManager.clearSession(); - + importObjectService.importAll(); - + assertEquals( dataElementService.getAllDataElements().size(), 3 ); - + assertEquals( periodService.getPeriodsByPeriodType( periodTypeA ).size(), 1 ); - + assertEquals( organisationUnitService.getAllOrganisationUnits().size(), 3 ); - + assertEquals( dataValueService.getAllDataValues().size(), 9 ); - + assertEquals( importObjectService.getImportObjects( DataElement.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( Period.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( OrganisationUnit.class ).size(), 0 ); @@ -920,29 +917,29 @@ dataElementService.addDataElement( dataElementA ); dataElementService.addDataElement( dataElementB ); dataElementService.addDataElement( dataElementC ); - + organisationUnitService.addOrganisationUnit( organisationUnitA ); organisationUnitService.addOrganisationUnit( organisationUnitB ); organisationUnitService.addOrganisationUnit( organisationUnitC ); dataValueService.addDataValue( dataValueA ); dataValueService.addDataValue( dataValueE ); - dataValueService.addDataValue( dataValueI ); - + dataValueService.addDataValue( dataValueI ); + importObjectService.addImportObject( ImportObjectStatus.UPDATE, dataElementAModified, dataElementA ); importObjectService.addImportObject( ImportObjectStatus.UPDATE, dataElementBModified, dataElementB ); importObjectService.addImportObject( ImportObjectStatus.UPDATE, dataElementCModified, dataElementC ); - + importObjectService.addImportObject( ImportObjectStatus.MATCH, periodADuplicate, null ); - + importObjectService.addImportObject( ImportObjectStatus.UPDATE, organisationUnitAModified, organisationUnitA ); importObjectService.addImportObject( ImportObjectStatus.UPDATE, organisationUnitBModified, organisationUnitB ); importObjectService.addImportObject( ImportObjectStatus.UPDATE, organisationUnitCModified, organisationUnitC ); BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ImportDataValueBatchHandler.class ); - + batchHandler.init(); - + batchHandler.addObject( new ImportDataValue( dataValueADuplicate, ImportObjectStatus.UPDATE ) ); batchHandler.addObject( new ImportDataValue( dataValueBDuplicate, ImportObjectStatus.NEW ) ); batchHandler.addObject( new ImportDataValue( dataValueCDuplicate, ImportObjectStatus.NEW ) ); @@ -952,21 +949,21 @@ batchHandler.addObject( new ImportDataValue( dataValueGDuplicate, ImportObjectStatus.NEW ) ); batchHandler.addObject( new ImportDataValue( dataValueHDuplicate, ImportObjectStatus.NEW ) ); batchHandler.addObject( new ImportDataValue( dataValueIDuplicate, ImportObjectStatus.UPDATE ) ); - + batchHandler.flush(); dbmsManager.clearSession(); - + importObjectService.importAll(); assertEquals( dataElementService.getAllDataElements().size(), 3 ); - + assertEquals( periodService.getPeriodsByPeriodType( periodTypeA ).size(), 1 ); - + assertEquals( organisationUnitService.getAllOrganisationUnits().size(), 3 ); - + assertEquals( dataValueService.getAllDataValues().size(), 9 ); - + assertEquals( importObjectService.getImportObjects( DataElement.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( Period.class ).size(), 0 ); assertEquals( importObjectService.getImportObjects( OrganisationUnit.class ).size(), 0 ); === modified file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java' --- dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java 2013-02-04 03:14:27 +0000 +++ dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java 2013-02-04 14:57:16 +0000 @@ -392,7 +392,7 @@ } @Override - public Collection getAllEqName( String name ) + public List getAllEqName( String name ) { Query query = sharingEnabled() ? getQueryAllEqNameACL( name ) : getQueryAllEqName( name ); @@ -423,7 +423,38 @@ } @Override - public Collection getAllEqShortName( String shortName ) + public List getAllEqNameIgnoreCase( String name ) + { + Query query = sharingEnabled() ? getQueryAllEqNameACLIgnoreCase( name ) : getQueryAllEqNameIgnoreCase( name ); + + return query.list(); + } + + private Query getQueryAllEqNameACLIgnoreCase( String name ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where lower(name) = :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.name"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "name", name.toLowerCase() ); + + return query; + } + + private Query getQueryAllEqNameIgnoreCase( String name ) + { + Query query = getQuery( "from " + clazz.getName() + " c where lower(name) = :name order by c.name" ); + query.setString( "name", name.toLowerCase() ); + + return query; + } + + @Override + public List getAllEqShortName( String shortName ) { Query query = sharingEnabled() ? getQueryAllEqShortNameACL( shortName ) : getQueryAllEqShortName( shortName ); @@ -454,6 +485,37 @@ } @Override + public List getAllEqShortNameIgnoreCase( String shortName ) + { + Query query = sharingEnabled() ? getQueryAllEqShortNameACLIgnoreCase( shortName ) : getQueryAllEqShortNameIgnoreCase( shortName ); + + return query.list(); + } + + private Query getQueryAllEqShortNameACLIgnoreCase( String shortName ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where lower(shortName) = :shortName and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.shortName"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "shortName", shortName.toLowerCase() ); + + return query; + } + + private Query getQueryAllEqShortNameIgnoreCase( String shortName ) + { + Query query = getQuery( "from " + clazz.getName() + " c where lower(shortName) = :shortName order by c.shortName" ); + query.setString( "shortName", shortName.toLowerCase() ); + + return query; + } + + @Override @SuppressWarnings( "unchecked" ) public Collection getAllLikeName( String name ) { === modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java' --- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java 2013-02-03 05:46:01 +0000 +++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java 2013-02-04 14:57:16 +0000 @@ -491,16 +491,6 @@ return new ResponseEntity( MessageResponseUtils.jsonMessage( "No object with that identifier exists." ), headers, HttpStatus.NOT_FOUND ); } - else if ( !organisationUnit.getName().equals( organisationUnitUpdate.getName() ) ) - { - OrganisationUnit ouByName = organisationUnitService.getOrganisationUnitByName( organisationUnitUpdate.getName() ); - - if ( ouByName != null && !organisationUnit.getUid().equals( ouByName.getUid() ) ) - { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "Another object with the same name already exists." ), - headers, HttpStatus.CONFLICT ); - } - } else if ( organisationUnitUpdate.getCode() != null ) { OrganisationUnit ouByCode = organisationUnitService.getOrganisationUnitByCode( organisationUnitUpdate.getCode() ); === modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityServiceController.java' --- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityServiceController.java 2012-12-13 17:04:35 +0000 +++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityServiceController.java 2013-02-04 14:57:16 +0000 @@ -179,16 +179,6 @@ return new ResponseEntity( MessageResponseUtils.jsonMessage( "No object with that identifier exists." ), headers, HttpStatus.NOT_FOUND ); } - else if ( !ou.getName().equals( organisationUnit.getName() ) ) - { - OrganisationUnit ouByName = organisationUnitService.getOrganisationUnitByName( organisationUnit.getName() ); - - if ( ouByName != null && !ou.getUid().equals( ouByName.getUid() ) ) - { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "Another object with the same name already exists." ), - headers, HttpStatus.CONFLICT ); - } - } else if ( organisationUnit.getCode() != null ) { OrganisationUnit ouByCode = organisationUnitService.getOrganisationUnitByCode( organisationUnit.getCode() ); === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global.properties' --- dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global.properties 2013-02-03 08:35:03 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/resources/i18n_global.properties 2013-02-04 14:57:16 +0000 @@ -271,6 +271,8 @@ #-- About ----------------------------------------------------------------------# +name_exists=Warning, name already exists +name_is_required=Error, name is required version=Version build_revision=Build revision build_date=Build date === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/ValidateOrganisationUnitAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/ValidateOrganisationUnitAction.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunit/ValidateOrganisationUnitAction.java 2013-02-04 14:57:16 +0000 @@ -27,11 +27,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import com.opensymphony.xwork2.Action; import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; -import com.opensymphony.xwork2.Action; +import java.util.List; /** * @author Torgeir Lorange Ostby @@ -69,7 +70,7 @@ { this.name = name; } - + private String code; public void setCode( String code ) @@ -105,18 +106,37 @@ // Validate values // --------------------------------------------------------------------- - if ( name != null ) + if ( name != null && !name.trim().isEmpty() ) { - OrganisationUnit match = organisationUnitService.getOrganisationUnitByName( name ); + List organisationUnits = organisationUnitService.getOrganisationUnitByName( name ); - if ( match != null && (id == null || match.getId() != id) ) + if ( !organisationUnits.isEmpty() && id == null ) { - message = i18n.getString( "name_in_use" ); + message = i18n.getString( "name_exists" ); return ERROR; } + else if ( !organisationUnits.isEmpty() ) + { + boolean found = false; + + for ( OrganisationUnit organisationUnit : organisationUnits ) + { + if ( organisationUnit.getId() == id ) + { + found = true; + } + } + + if ( !found ) + { + message = i18n.getString( "name_exists" ); + + return ERROR; + } + } } - + if ( code != null && !code.trim().isEmpty() ) { OrganisationUnit match = organisationUnitService.getOrganisationUnitByCode( code ); @@ -126,9 +146,9 @@ message = i18n.getString( "code_in_use" ); return ERROR; - } + } } - + message = "OK"; return SUCCESS; === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunitgroup/ValidateOrganisationUnitGroupAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunitgroup/ValidateOrganisationUnitGroupAction.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunitgroup/ValidateOrganisationUnitGroupAction.java 2013-02-04 14:57:16 +0000 @@ -27,11 +27,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import com.opensymphony.xwork2.Action; import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.organisationunit.OrganisationUnitGroup; import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; -import com.opensymphony.xwork2.Action; +import java.util.List; /** * @author Torgeir Lorange Ostby @@ -97,16 +98,36 @@ // --------------------------------------------------------------------- // Validate values // --------------------------------------------------------------------- - if ( name != null ) + + if ( name != null && !name.trim().isEmpty() ) { - OrganisationUnitGroup match = organisationUnitGroupService.getOrganisationUnitGroupByName( name ); + List organisationUnitGroups = organisationUnitGroupService.getOrganisationUnitGroupByName( name ); - if ( match != null && (id == null || match.getId() != id) ) + if ( !organisationUnitGroups.isEmpty() && id == null ) { - message = i18n.getString( "name_is_already_in_use" ); + message = i18n.getString( "name_exists" ); return ERROR; } + else if ( !organisationUnitGroups.isEmpty() ) + { + boolean found = false; + + for ( OrganisationUnitGroup organisationUnitGroup : organisationUnitGroups ) + { + if ( organisationUnitGroup.getId() == id ) + { + found = true; + } + } + + if ( !found ) + { + message = i18n.getString( "name_exists" ); + + return ERROR; + } + } } message = "OK"; === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunitgroupset/ValidateGroupSetAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunitgroupset/ValidateGroupSetAction.java 2012-01-25 17:11:43 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/java/org/hisp/dhis/oum/action/organisationunitgroupset/ValidateGroupSetAction.java 2013-02-04 14:57:16 +0000 @@ -27,20 +27,20 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import com.opensymphony.xwork2.Action; +import org.hisp.dhis.i18n.I18n; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupSetPopulator; +import org.hisp.dhis.system.util.ListUtils; + import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.HashSet; import java.util.List; -import org.hisp.dhis.i18n.I18n; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; -import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; -import org.hisp.dhis.system.util.ListUtils; - -import com.opensymphony.xwork2.Action; - /** * @author Lars Helge Overland * @version $Id$ @@ -75,7 +75,7 @@ public void setName( String name ) { this.name = name; - } + } private Collection selectedGroups = new HashSet(); @@ -112,17 +112,36 @@ // Validate values // --------------------------------------------------------------------- - if ( name != null ) + if ( name != null && !name.trim().isEmpty() ) { - OrganisationUnitGroupSet match = organisationUnitGroupService.getOrganisationUnitGroupSetByName( name ); + List organisationUnitGroupSets = organisationUnitGroupService.getOrganisationUnitGroupSetByName( name ); - if ( match != null && (id == null || match.getId() != id) ) + if ( !organisationUnitGroupSets.isEmpty() && id == null ) { - message = i18n.getString( "name_in_use" ); + message = i18n.getString( "name_exists" ); return ERROR; } - } + else if ( !organisationUnitGroupSets.isEmpty() ) + { + boolean found = false; + + for ( OrganisationUnitGroupSet organisationUnitGroupSet : organisationUnitGroupSets ) + { + if ( organisationUnitGroupSet.getId() == id ) + { + found = true; + } + } + + if ( !found ) + { + message = i18n.getString( "name_exists" ); + + return ERROR; + } + } + } // --------------------------------------------------------------------- // When adding or updating an exclusive group set any unit in the === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/webapp/dhis-web-maintenance-organisationunit/addOrganisationUnitForm.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/webapp/dhis-web-maintenance-organisationunit/addOrganisationUnitForm.vm 2013-02-03 10:13:17 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-organisationunit/src/main/webapp/dhis-web-maintenance-organisationunit/addOrganisationUnitForm.vm 2013-02-04 14:57:16 +0000 @@ -10,7 +10,7 @@ }, 'rules' : getValidationRules("organisationUnit") }); - + checkValueIsExist("name", "validateOrganisationUnit.action"); checkValueIsExist("code", "validateOrganisationUnit.action"); datePickerValid('openingDate', false); === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetOrganisationUnitInfoFacilityAction.java' --- dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetOrganisationUnitInfoFacilityAction.java 2012-10-01 16:08:41 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetOrganisationUnitInfoFacilityAction.java 2013-02-04 14:57:16 +0000 @@ -92,7 +92,7 @@ object = organisationUnitService.getOrganisationUnit( id ); OrganisationUnitGroupSet typeGroupSet = organisationUnitGroupService - .getOrganisationUnitGroupSetByName( OrganisationUnitGroupSetPopulator.NAME_TYPE ); + .getOrganisationUnitGroupSetByName( OrganisationUnitGroupSetPopulator.NAME_TYPE ).get( 0 ); object.setType( object.getGroupNameInGroupSet( typeGroupSet ) );