dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #40524
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 20564: TEI query. Optional inclusion of relationships.
------------------------------------------------------------
revno: 20564
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2015-10-07 14:34:21 +0200
message:
TEI query. Optional inclusion of relationships.
modified:
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/TrackedEntityInstanceService.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.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-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java 2015-10-02 09:07:28 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java 2015-10-07 12:34:21 +0000
@@ -28,7 +28,12 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import org.hisp.dhis.common.CodeGenerator;
import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.commons.collection.CachingMap;
@@ -51,12 +56,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
+import com.google.common.collect.Lists;
/**
* @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
@@ -103,9 +103,16 @@
// -------------------------------------------------------------------------
@Override
- public List<TrackedEntityInstance> getTrackedEntityInstances( List<org.hisp.dhis.trackedentity.TrackedEntityInstance> trackedEntityInstances )
+ public List<TrackedEntityInstance> getTrackedEntityInstances( List<org.hisp.dhis.trackedentity.TrackedEntityInstance> trackedEntityInstances, boolean includeRelationships )
{
- return trackedEntityInstances.stream().map( this::getTrackedEntityInstance ).collect( Collectors.toList() );
+ List<TrackedEntityInstance> teiItems = new ArrayList<>();
+
+ for ( org.hisp.dhis.trackedentity.TrackedEntityInstance trackedEntityInstance : trackedEntityInstances )
+ {
+ teiItems.add( getTrackedEntityInstance( trackedEntityInstance, includeRelationships ) );
+ }
+
+ return teiItems;
}
@Override
@@ -121,7 +128,7 @@
}
@Override
- public TrackedEntityInstance getTrackedEntityInstance( org.hisp.dhis.trackedentity.TrackedEntityInstance entityInstance, boolean expandRelative )
+ public TrackedEntityInstance getTrackedEntityInstance( org.hisp.dhis.trackedentity.TrackedEntityInstance entityInstance, boolean includeRelationships )
{
if ( entityInstance == null )
{
@@ -136,19 +143,21 @@
trackedEntityInstance.setLastUpdated( entityInstance.getLastUpdated().toString() );
trackedEntityInstance.setInactive( entityInstance.isInactive() );
- Collection<Relationship> relationships = relationshipService.getRelationshipsForTrackedEntityInstance( entityInstance );
-
- for ( Relationship entityRelationship : relationships )
- {
- org.hisp.dhis.dxf2.events.trackedentity.Relationship relationship = new org.hisp.dhis.dxf2.events.trackedentity.Relationship();
- relationship.setDisplayName( entityRelationship.getRelationshipType().getDisplayName() );
- relationship.setTrackedEntityInstanceA( entityRelationship.getEntityInstanceA().getUid() );
- relationship.setTrackedEntityInstanceB( entityRelationship.getEntityInstanceB().getUid() );
-
- relationship.setRelationship( entityRelationship.getRelationshipType().getUid() );
-
- if ( expandRelative )
+ if ( includeRelationships )
+ {
+ //TODO include relationships in data model and void transactional query in for-loop
+
+ Collection<Relationship> relationships = relationshipService.getRelationshipsForTrackedEntityInstance( entityInstance );
+
+ for ( Relationship entityRelationship : relationships )
{
+ org.hisp.dhis.dxf2.events.trackedentity.Relationship relationship = new org.hisp.dhis.dxf2.events.trackedentity.Relationship();
+ relationship.setDisplayName( entityRelationship.getRelationshipType().getDisplayName() );
+ relationship.setTrackedEntityInstanceA( entityRelationship.getEntityInstanceA().getUid() );
+ relationship.setTrackedEntityInstanceB( entityRelationship.getEntityInstanceB().getUid() );
+
+ relationship.setRelationship( entityRelationship.getRelationshipType().getUid() );
+
// we might have cases where A <=> A, so we only include the relative if the UIDs do not match
if ( !entityRelationship.getEntityInstanceA().getUid().equals( entityInstance.getUid() ) )
{
@@ -158,9 +167,9 @@
{
relationship.setRelative( getTrackedEntityInstance( entityRelationship.getEntityInstanceB(), false ) );
}
+
+ trackedEntityInstance.getRelationships().add( relationship );
}
-
- trackedEntityInstance.getRelationships().add( relationship );
}
for ( TrackedEntityAttributeValue attributeValue : entityInstance.getAttributeValues() )
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/TrackedEntityInstanceService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/TrackedEntityInstanceService.java 2015-06-29 06:42:08 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/TrackedEntityInstanceService.java 2015-10-07 12:34:21 +0000
@@ -47,7 +47,7 @@
// READ
// -------------------------------------------------------------------------
- List<TrackedEntityInstance> getTrackedEntityInstances( List<org.hisp.dhis.trackedentity.TrackedEntityInstance> trackedEntityInstances );
+ List<TrackedEntityInstance> getTrackedEntityInstances( List<org.hisp.dhis.trackedentity.TrackedEntityInstance> trackedEntityInstances, boolean includeRelationships );
TrackedEntityInstance getTrackedEntityInstance( String uid );
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.java 2015-10-01 10:05:20 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.java 2015-10-07 12:34:21 +0000
@@ -124,6 +124,7 @@
@RequestParam( required = false ) Date eventStartDate,
@RequestParam( required = false ) Date eventEndDate,
@RequestParam( required = false ) boolean skipMeta,
+ @RequestParam( required = false ) boolean includeRelationships,
@RequestParam( required = false ) Integer page,
@RequestParam( required = false ) Integer pageSize,
@RequestParam( required = false ) boolean totalPages,
@@ -142,7 +143,8 @@
program, programStatus, followUp, programStartDate, programEndDate, trackedEntity,
eventStatus, eventStartDate, eventEndDate, skipMeta, page, pageSize, totalPages, skipPaging );
- List<TrackedEntityInstance> trackedEntityInstances = trackedEntityInstanceService.getTrackedEntityInstances( instanceService.getTrackedEntityInstances( params ) );
+ List<TrackedEntityInstance> trackedEntityInstances = trackedEntityInstanceService.getTrackedEntityInstances(
+ instanceService.getTrackedEntityInstances( params ), includeRelationships );
RootNode rootNode = NodeUtils.createMetadata();
rootNode.addChild( fieldFilterService.filter( TrackedEntityInstance.class, trackedEntityInstances, fields ) );