=== 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 @@ -103,9 +103,16 @@ // ------------------------------------------------------------------------- @Override - public List getTrackedEntityInstances( List trackedEntityInstances ) + public List getTrackedEntityInstances( List trackedEntityInstances, boolean includeRelationships ) { - return trackedEntityInstances.stream().map( this::getTrackedEntityInstance ).collect( Collectors.toList() ); + List 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 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 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 getTrackedEntityInstances( List trackedEntityInstances ); + List getTrackedEntityInstances( List 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 trackedEntityInstances = trackedEntityInstanceService.getTrackedEntityInstances( instanceService.getTrackedEntityInstances( params ) ); + List trackedEntityInstances = trackedEntityInstanceService.getTrackedEntityInstances( + instanceService.getTrackedEntityInstances( params ), includeRelationships ); RootNode rootNode = NodeUtils.createMetadata(); rootNode.addChild( fieldFilterService.filter( TrackedEntityInstance.class, trackedEntityInstances, fields ) );