← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 20788: use new TEI Exists method in JacksonTrackedEntityInstance

 

------------------------------------------------------------
revno: 20788
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2015-10-20 13:46:47 +0700
message:
  use new TEI Exists method in JacksonTrackedEntityInstance
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceService.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStore.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStoreTest.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/JacksonTrackedEntityInstanceService.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/trackedentity/TrackedEntityInstanceService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceService.java	2015-10-01 07:51:29 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceService.java	2015-10-20 06:46:47 +0000
@@ -208,6 +208,14 @@
     TrackedEntityInstance getTrackedEntityInstance( String uid );
 
     /**
+     * Checks for the existence of a TEI by UID
+     *
+     * @param uid PSI UID to check for
+     * @return true/false depending on result
+     */
+    boolean trackedEntityInstanceExists(String uid);
+
+    /**
      * Register a new entityInstance
      *
      * @param entityInstance     TrackedEntityInstance

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStore.java	2015-09-22 05:03:02 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStore.java	2015-10-20 06:46:47 +0000
@@ -60,4 +60,12 @@
      * @return
      */
     String validate( TrackedEntityInstance instance, TrackedEntityAttributeValue attributeValue, Program program );
+
+    /**
+     * Checks for the existence of a TEI by UID
+     *
+     * @param uid PSI UID to check for
+     * @return true/false depending on result
+     */
+    boolean exists( String uid );
 }

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java	2015-09-30 08:37:01 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java	2015-10-20 06:46:47 +0000
@@ -596,6 +596,12 @@
     }
 
     @Override
+    public boolean trackedEntityInstanceExists( String uid )
+    {
+        return trackedEntityInstanceStore.exists( uid );
+    }
+
+    @Override
     public void updateTrackedEntityInstance( TrackedEntityInstance instance, String representativeId,
         Integer relationshipTypeId, List<TrackedEntityAttributeValue> valuesForSave,
         List<TrackedEntityAttributeValue> valuesForUpdate, Collection<TrackedEntityAttributeValue> valuesForDelete )

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java	2015-10-13 04:36:43 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java	2015-10-20 06:46:47 +0000
@@ -542,4 +542,11 @@
 
         return null;
     }
+
+    @Override
+    public boolean exists( String uid )
+    {
+        Integer result = jdbcTemplate.queryForObject( "select count(*) from trackedentityinstance where uid=?", Integer.class, uid );
+        return result != null && result > 0;
+    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStoreTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStoreTest.java	2015-10-09 15:33:21 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/trackedentity/TrackedEntityInstanceStoreTest.java	2015-10-20 06:46:47 +0000
@@ -28,14 +28,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.Date;
-import java.util.List;
-
 import org.hisp.dhis.DhisSpringTest;
 import org.hisp.dhis.analytics.AggregationType;
 import org.hisp.dhis.common.IdentifiableObjectManager;
@@ -52,6 +44,11 @@
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.Date;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
 /**
  * @author Lars Helge Overland
  */
@@ -69,7 +66,7 @@
 
     @Autowired
     private TrackedEntityAttributeValueService attributeValueService;
-    
+
     @Autowired
     private ProgramInstanceService programInstanceService;
 
@@ -82,14 +79,14 @@
 
     private TrackedEntityAttribute atA;
     private TrackedEntityAttribute atB;
-    
+
     private OrganisationUnit ouA;
     private OrganisationUnit ouB;
     private OrganisationUnit ouC;
-        
+
     private Program prA;
     private Program prB;
-    
+
     @Override
     public void setUpTest()
     {
@@ -103,17 +100,17 @@
         ouA = createOrganisationUnit( 'A' );
         ouB = createOrganisationUnit( 'B', ouA );
         ouC = createOrganisationUnit( 'C', ouB );
-        
+
         organisationUnitService.addOrganisationUnit( ouA );
         organisationUnitService.addOrganisationUnit( ouB );
         organisationUnitService.addOrganisationUnit( ouC );
 
         prA = createProgram( 'A', null, null );
         prB = createProgram( 'B', null, null );
-        
+
         idObjectManager.save( prA );
-        idObjectManager.save( prB );        
-      
+        idObjectManager.save( prB );
+
         teiA = createTrackedEntityInstance( 'A', ouA );
         teiB = createTrackedEntityInstance( 'B', ouB );
         teiC = createTrackedEntityInstance( 'C', ouB );
@@ -123,6 +120,18 @@
     }
 
     @Test
+    public void testTrackedEntityInstanceExists()
+    {
+        teiStore.save( teiA );
+        teiStore.save( teiB );
+
+        assertTrue( teiStore.exists( teiA.getUid() ) );
+        assertTrue( teiStore.exists( teiB.getUid() ) );
+        assertFalse( teiStore.exists( "aaaabbbbccc" ) );
+        assertFalse( teiStore.exists( null ) );
+    }
+
+    @Test
     public void testAddGet()
     {
         int idA = teiStore.save( teiA );
@@ -170,7 +179,7 @@
 
         assertTrue( equals( teiStore.getAll(), teiA, teiB ) );
     }
-    
+
     @Test
     public void testQuery()
     {
@@ -180,45 +189,45 @@
         teiStore.save( teiD );
         teiStore.save( teiE );
         teiStore.save( teiF );
-        
+
         attributeValueService.addTrackedEntityAttributeValue( new TrackedEntityAttributeValue( atA, teiD, "Male" ) );
         attributeValueService.addTrackedEntityAttributeValue( new TrackedEntityAttributeValue( atA, teiE, "Male" ) );
         attributeValueService.addTrackedEntityAttributeValue( new TrackedEntityAttributeValue( atA, teiF, "Female" ) );
-        
+
         programInstanceService.enrollTrackedEntityInstance( teiB, prA, new Date(), new Date(), ouB );
         programInstanceService.enrollTrackedEntityInstance( teiE, prA, new Date(), new Date(), ouB );
-        
+
         // Get all
-        
+
         TrackedEntityInstanceQueryParams params = new TrackedEntityInstanceQueryParams();
-        
+
         List<TrackedEntityInstance> teis = teiStore.getTrackedEntityInstances( params );
-        
+
         assertEquals( 6, teis.size() );
-        
+
         // Filter by attribute
-        
+
         params = new TrackedEntityInstanceQueryParams();
         params.addFilter( new QueryItem( atA, QueryOperator.EQ, "Male", ValueType.TEXT, AggregationType.NONE, null ) );
-        
+
         teis = teiStore.getTrackedEntityInstances( params );
 
         assertEquals( 2, teis.size() );
         assertTrue( teis.contains( teiD ) );
         assertTrue( teis.contains( teiE ) );
-        
+
         // Filter by attribute
 
         params = new TrackedEntityInstanceQueryParams();
         params.addFilter( new QueryItem( atA, QueryOperator.EQ, "Female", ValueType.TEXT, AggregationType.NONE, null ) );
-        
+
         teis = teiStore.getTrackedEntityInstances( params );
 
         assertEquals( 1, teis.size() );
         assertTrue( teis.contains( teiF ) );
-        
+
         // Filter by selected org units
-        
+
         params = new TrackedEntityInstanceQueryParams();
         params.addOrganisationUnit( ouB );
         params.setOrganisationUnitMode( OrganisationUnitSelectionMode.SELECTED );
@@ -230,7 +239,7 @@
         assertTrue( teis.contains( teiC ) );
 
         // Filter by descendants org units
-        
+
         params = new TrackedEntityInstanceQueryParams();
         params.addOrganisationUnit( ouB );
         params.setOrganisationUnitMode( OrganisationUnitSelectionMode.DESCENDANTS );
@@ -243,7 +252,7 @@
         assertTrue( teis.contains( teiD ) );
         assertTrue( teis.contains( teiE ) );
         assertTrue( teis.contains( teiF ) );
-        
+
         // Filter by program enrollment
 
         params = new TrackedEntityInstanceQueryParams();

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/JacksonTrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/JacksonTrackedEntityInstanceService.java	2015-09-13 21:54:23 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/JacksonTrackedEntityInstanceService.java	2015-10-20 06:46:47 +0000
@@ -28,12 +28,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.List;
-
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import org.hisp.dhis.dxf2.importsummary.ImportSummaries;
 import org.hisp.dhis.dxf2.importsummary.ImportSummary;
 import org.hisp.dhis.importexport.ImportStrategy;
@@ -41,9 +38,11 @@
 import org.springframework.util.StreamUtils;
 import org.springframework.util.StringUtils;
 
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
@@ -158,7 +157,7 @@
                 }
                 else
                 {
-                    if ( teiService.getTrackedEntityInstance( trackedEntityInstance.getTrackedEntityInstance() ) == null )
+                    if ( !teiService.trackedEntityInstanceExists( trackedEntityInstance.getTrackedEntityInstance() ) )
                     {
                         create.getTrackedEntityInstances().add( trackedEntityInstance );
                     }