dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #43910
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 22276: moved preheat object placeholder generation to preheatService
------------------------------------------------------------
revno: 22276
committer: Morten Olav Hansen <morten@xxxxxxxxx>
branch nick: dhis2
timestamp: Sun 2016-03-13 18:05:30 +0700
message:
moved preheat object placeholder generation to preheatService
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/preheat/Preheat.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java
dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/preheat/PreheatServiceTest.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/preheat/Preheat.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/preheat/Preheat.java 2016-03-13 10:19:38 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/preheat/Preheat.java 2016-03-13 11:05:30 +0000
@@ -35,6 +35,7 @@
import org.hisp.dhis.dataelement.DataElementCategoryOption;
import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserCredentials;
+import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Collection;
@@ -170,35 +171,115 @@
User user = (User) object;
Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.UID ).get( UserCredentials.class );
- identifierMap.put( user.getUid(), user.getUserCredentials() );
- }
-
- Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.UID ).get( klass );
- String key = PreheatIdentifier.UID.getIdentifier( object );
- identifierMap.put( key, object );
- }
-
- if ( PreheatIdentifier.CODE == identifier || PreheatIdentifier.AUTO == identifier )
- {
- if ( !map.containsKey( PreheatIdentifier.CODE ) ) map.put( PreheatIdentifier.CODE, new HashMap<>() );
- if ( !map.get( PreheatIdentifier.CODE ).containsKey( klass ) ) map.get( PreheatIdentifier.CODE ).put( klass, new HashMap<>() );
-
- if ( User.class.isAssignableFrom( klass ) )
- {
- if ( !map.get( PreheatIdentifier.CODE ).containsKey( UserCredentials.class ) )
- {
- map.get( PreheatIdentifier.CODE ).put( UserCredentials.class, new HashMap<>() );
- }
-
- User user = (User) object;
-
- Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.CODE ).get( UserCredentials.class );
- identifierMap.put( user.getCode(), user.getUserCredentials() );
- }
-
- Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.CODE ).get( klass );
- String key = PreheatIdentifier.CODE.getIdentifier( object );
- identifierMap.put( key, object );
+
+ if ( !StringUtils.isEmpty( user.getUid() ) && !identifierMap.containsKey( user.getUid() ) )
+ {
+ identifierMap.put( user.getUid(), user.getUserCredentials() );
+ }
+ }
+
+ Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.UID ).get( klass );
+ String key = PreheatIdentifier.UID.getIdentifier( object );
+
+ if ( !StringUtils.isEmpty( key ) && !identifierMap.containsKey( key ) )
+ {
+ identifierMap.put( key, object );
+ }
+ }
+
+ if ( PreheatIdentifier.CODE == identifier || PreheatIdentifier.AUTO == identifier )
+ {
+ if ( !map.containsKey( PreheatIdentifier.CODE ) ) map.put( PreheatIdentifier.CODE, new HashMap<>() );
+ if ( !map.get( PreheatIdentifier.CODE ).containsKey( klass ) ) map.get( PreheatIdentifier.CODE ).put( klass, new HashMap<>() );
+
+ if ( User.class.isAssignableFrom( klass ) )
+ {
+ if ( !map.get( PreheatIdentifier.CODE ).containsKey( UserCredentials.class ) )
+ {
+ map.get( PreheatIdentifier.CODE ).put( UserCredentials.class, new HashMap<>() );
+ }
+
+ User user = (User) object;
+
+ Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.CODE ).get( UserCredentials.class );
+ identifierMap.put( user.getCode(), user.getUserCredentials() );
+ }
+
+ Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.CODE ).get( klass );
+ String key = PreheatIdentifier.CODE.getIdentifier( object );
+
+ if ( !StringUtils.isEmpty( key ) && !identifierMap.containsKey( key ) )
+ {
+ identifierMap.put( key, object );
+ }
+ }
+
+ return this;
+ }
+
+ @SuppressWarnings( "unchecked" )
+ public <T extends IdentifiableObject> Preheat replace( PreheatIdentifier identifier, T object )
+ {
+ if ( object == null ) return this;
+
+ Class<? extends IdentifiableObject> klass = (Class<? extends IdentifiableObject>) getRealClass( object.getClass() );
+
+ if ( PreheatIdentifier.UID == identifier || PreheatIdentifier.AUTO == identifier )
+ {
+ if ( !map.containsKey( PreheatIdentifier.UID ) ) map.put( PreheatIdentifier.UID, new HashMap<>() );
+ if ( !map.get( PreheatIdentifier.UID ).containsKey( klass ) ) map.get( PreheatIdentifier.UID ).put( klass, new HashMap<>() );
+
+ if ( User.class.isAssignableFrom( klass ) )
+ {
+ if ( !map.get( PreheatIdentifier.UID ).containsKey( UserCredentials.class ) )
+ {
+ map.get( PreheatIdentifier.UID ).put( UserCredentials.class, new HashMap<>() );
+ }
+
+ User user = (User) object;
+
+ Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.UID ).get( UserCredentials.class );
+
+ if ( !StringUtils.isEmpty( user.getUid() ) && !identifierMap.containsKey( user.getUid() ) )
+ {
+ identifierMap.put( user.getUid(), user.getUserCredentials() );
+ }
+ }
+
+ Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.UID ).get( klass );
+ String key = PreheatIdentifier.UID.getIdentifier( object );
+
+ if ( !StringUtils.isEmpty( key ) )
+ {
+ identifierMap.put( key, object );
+ }
+ }
+
+ if ( PreheatIdentifier.CODE == identifier || PreheatIdentifier.AUTO == identifier )
+ {
+ if ( !map.containsKey( PreheatIdentifier.CODE ) ) map.put( PreheatIdentifier.CODE, new HashMap<>() );
+ if ( !map.get( PreheatIdentifier.CODE ).containsKey( klass ) ) map.get( PreheatIdentifier.CODE ).put( klass, new HashMap<>() );
+
+ if ( User.class.isAssignableFrom( klass ) )
+ {
+ if ( !map.get( PreheatIdentifier.CODE ).containsKey( UserCredentials.class ) )
+ {
+ map.get( PreheatIdentifier.CODE ).put( UserCredentials.class, new HashMap<>() );
+ }
+
+ User user = (User) object;
+
+ Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.CODE ).get( UserCredentials.class );
+ identifierMap.put( user.getCode(), user.getUserCredentials() );
+ }
+
+ Map<String, IdentifiableObject> identifierMap = map.get( PreheatIdentifier.CODE ).get( klass );
+ String key = PreheatIdentifier.CODE.getIdentifier( object );
+
+ if ( !StringUtils.isEmpty( key ) )
+ {
+ identifierMap.put( key, object );
+ }
}
return this;
@@ -208,6 +289,7 @@
{
for ( T object : objects )
{
+ if ( Preheat.isDefault( object ) ) continue;
put( identifier, object );
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java 2016-03-13 10:42:16 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java 2016-03-13 11:05:30 +0000
@@ -194,6 +194,13 @@
preheat.setUniquenessMap( collectUniqueness( uniqueCollectionMap ) );
+ // add preheat placeholders for objects that will be created
+ for ( Class<? extends IdentifiableObject> klass : params.getObjects().keySet() )
+ {
+ List<IdentifiableObject> objects = params.getObjects().get( klass );
+ preheat.put( params.getPreheatIdentifier(), objects );
+ }
+
return preheat;
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/preheat/PreheatServiceTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/preheat/PreheatServiceTest.java 2016-03-13 10:42:16 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/preheat/PreheatServiceTest.java 2016-03-13 11:05:30 +0000
@@ -426,7 +426,7 @@
assertFalse( preheat.isEmpty() );
assertFalse( preheat.isEmpty( PreheatIdentifier.UID ) );
assertFalse( preheat.isEmpty( PreheatIdentifier.UID, DataElement.class ) );
- assertTrue( preheat.isEmpty( PreheatIdentifier.UID, DataElementGroup.class ) );
+ assertFalse( preheat.isEmpty( PreheatIdentifier.UID, DataElementGroup.class ) );
assertFalse( preheat.isEmpty( PreheatIdentifier.UID, User.class ) );
assertTrue( preheat.containsKey( PreheatIdentifier.UID, DataElement.class, "deabcdefghA" ) );
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java 2016-03-13 10:42:16 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java 2016-03-13 11:05:30 +0000
@@ -32,8 +32,6 @@
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
-import org.hisp.dhis.common.BaseIdentifiableObject;
-import org.hisp.dhis.common.CodeGenerator;
import org.hisp.dhis.common.IdentifiableObject;
import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.dbms.DbmsManager;
@@ -43,8 +41,6 @@
import org.hisp.dhis.feedback.ErrorReport;
import org.hisp.dhis.feedback.ObjectErrorReport;
import org.hisp.dhis.preheat.Preheat;
-import org.hisp.dhis.preheat.PreheatIdentifier;
-import org.hisp.dhis.preheat.PreheatMode;
import org.hisp.dhis.preheat.PreheatParams;
import org.hisp.dhis.preheat.PreheatService;
import org.hisp.dhis.schema.SchemaService;
@@ -53,13 +49,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
/**
* @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
@@ -110,32 +103,6 @@
ObjectBundle bundle = new ObjectBundle( params, preheatService.preheat( preheatParams ), params.getObjects() );
bundle.setObjectReferences( preheatService.collectObjectReferences( params.getObjects() ) );
- // add preheat placeholders for objects that will be created
- for ( Class<? extends IdentifiableObject> klass : bundle.getObjectMap().keySet() )
- {
- Map<PreheatIdentifier, Map<Class<? extends IdentifiableObject>, Map<String, IdentifiableObject>>> map = bundle.getPreheat().getMap();
-
- if ( !map.containsKey( PreheatIdentifier.UID ) ) map.put( PreheatIdentifier.UID, new HashMap<>() );
- if ( !map.get( PreheatIdentifier.UID ).containsKey( klass ) ) map.get( PreheatIdentifier.UID ).put( klass, new HashMap<>() );
- if ( !map.containsKey( PreheatIdentifier.CODE ) ) map.put( PreheatIdentifier.CODE, new HashMap<>() );
- if ( !map.get( PreheatIdentifier.CODE ).containsKey( klass ) ) map.get( PreheatIdentifier.CODE ).put( klass, new HashMap<>() );
-
- for ( IdentifiableObject identifiableObject : bundle.getObjects( klass, false ) )
- {
- if ( Preheat.isDefault( identifiableObject ) ) continue;
-
- if ( !StringUtils.isEmpty( identifiableObject.getUid() ) )
- {
- map.get( PreheatIdentifier.UID ).get( klass ).put( identifiableObject.getUid(), identifiableObject );
- }
-
- if ( !StringUtils.isEmpty( identifiableObject.getCode() ) )
- {
- map.get( PreheatIdentifier.CODE ).get( klass ).put( identifiableObject.getCode(), identifiableObject );
- }
- }
- }
-
return bundle;
}
@@ -380,7 +347,7 @@
preheatService.connectReferences( object, bundle.getPreheat(), bundle.getPreheatIdentifier() );
manager.save( object, bundle.getUser(), false );
- bundle.getPreheat().put( bundle.getPreheatIdentifier(), object );
+ bundle.getPreheat().replace( bundle.getPreheatIdentifier(), object );
objectBundleHooks.forEach( hook -> hook.postCreate( object, bundle ) );
@@ -416,7 +383,7 @@
objectBundleHooks.forEach( hook -> hook.postUpdate( persistedObject, bundle ) );
- bundle.getPreheat().put( bundle.getPreheatIdentifier(), persistedObject );
+ bundle.getPreheat().replace( bundle.getPreheatIdentifier(), persistedObject );
if ( log.isDebugEnabled() )
{