=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AbstractIdentifiableObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AbstractIdentifiableObject.java 2011-09-06 14:01:26 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AbstractIdentifiableObject.java 2011-09-07 11:42:48 +0000 @@ -121,4 +121,23 @@ return map; } + + /** + * Get a map of uuids to iidentifiable objects + * + * @param objects the IdentifiableObjects to put in the map + * @return the map + */ + public static Map getUUIDMapObjects( Collection objects ) + { + Map map = new HashMap(); + for ( IdentifiableObject object : objects ) + { + String uuid = object.getUuid(); + + map.put( uuid, object ); + } + + return map; + } } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AbstractNameableObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AbstractNameableObject.java 2011-09-06 14:01:26 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/AbstractNameableObject.java 2011-09-07 11:42:48 +0000 @@ -148,4 +148,25 @@ } return map; } + + public static Map getCodeMappedObjects( Collection objects ) + { + Map map = new HashMap(); + for ( NameableObject object : objects ) + { + String code = object.getCode(); + + // NOTE: its really not good that duplicate codes are possible + // Best we can do here is severe log and remove the item + if ( map.containsKey( code ) ) + { + log.warn( object.getClass() + ": Duplicate code " + code ); + map.remove( code ); + } else + { + map.put( code, object ); + } + } + return map; + } } === modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/AbstractNameableObjectTest.java' --- dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/AbstractNameableObjectTest.java 2011-09-06 14:01:26 +0000 +++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/AbstractNameableObjectTest.java 2011-09-07 11:42:48 +0000 @@ -69,4 +69,35 @@ } + @Test + public void testCodeMappedObjects() + { + + List dataElements = new LinkedList(); + for (int i=0; i<5; ++i) + { + DataElement de = new DataElement(); + de.setId( i); + de.setUrl( "http://junk.org/"+i); + de.setCode("code"+i); + dataElements.add( de ); + } + + Map codeMap = DataElement.getCodeMappedObjects( dataElements ); + DataElement de = (DataElement) codeMap.get( "code2"); + int id = de.getId(); + assertEquals(2, id); + assertEquals("http://junk.org/2", de.getUrl()); + + DataElement dup = new DataElement(); + dup.setId(6); + dup.setCode("code2"); + dataElements.add( dup ); + + codeMap = DataElement.getCodeMappedObjects( dataElements ); + DataElement de2 = (DataElement) codeMap.get( "code2"); + assertNull(de2); + + } + }