=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2014-09-08 11:29:51 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2014-10-16 08:57:58 +0000 @@ -30,9 +30,9 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.IdentifiableObjectManager; +import org.hisp.dhis.common.IdentifiableObjectUtils; import org.hisp.dhis.common.OrganisationUnitSelectionMode; import org.hisp.dhis.common.QueryItem; import org.hisp.dhis.common.QueryOperator; @@ -65,6 +65,7 @@ import org.springframework.util.Assert; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.List; @@ -93,10 +94,10 @@ @Autowired private TrackedEntityAttributeValueService trackedEntityAttributeValueService; - + @Autowired protected CurrentUserService currentUserService; - + @Autowired private TrackedEntityCommentService commentService; @@ -188,6 +189,24 @@ } @Override + public Enrollments getEnrollments( Program program, EnrollmentStatus status, OrganisationUnit organisationUnit, Date startDate, Date endDate ) + { + List programInstances = new ArrayList<>( + programInstanceService.getProgramInstancesByStatus( status.getValue(), program, Arrays.asList( organisationUnit.getId() ), startDate, endDate ) ); + + return getEnrollments( programInstances ); + } + + @Override + public Enrollments getEnrollments( Program program, EnrollmentStatus status, List organisationUnits, Date startDate, Date endDate ) + { + List programInstances = new ArrayList<>( + programInstanceService.getProgramInstancesByStatus( status.getValue(), program, IdentifiableObjectUtils.getIdentifiers( organisationUnits ), startDate, endDate ) ); + + return getEnrollments( programInstances ); + } + + @Override public Enrollments getEnrollments( OrganisationUnit organisationUnit ) { List programs = getProgramsWithRegistration(); @@ -348,7 +367,7 @@ updateAttributeValues( enrollment ); programInstance.setFollowup( enrollment.getFollowup() ); programInstanceService.updateProgramInstance( programInstance ); - + saveTrackedEntityComment( programInstance, enrollment ); importSummary.setReference( programInstance.getUid() ); @@ -430,7 +449,7 @@ updateAttributeValues( enrollment ); programInstanceService.updateProgramInstance( programInstance ); - + saveTrackedEntityComment( programInstance, enrollment ); importSummary.setReference( enrollment.getEnrollment() ); @@ -712,11 +731,11 @@ return importConflicts; } - + private void saveTrackedEntityComment( ProgramInstance programInstance, Enrollment enrollment ) { String storedBy = currentUserService.getCurrentUsername(); - + for ( Note note : enrollment.getNotes() ) { TrackedEntityComment comment = new TrackedEntityComment(); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentService.java 2014-03-18 08:10:10 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentService.java 2014-10-16 08:57:58 +0000 @@ -28,10 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; - import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance; import org.hisp.dhis.dxf2.importsummary.ImportSummaries; import org.hisp.dhis.dxf2.importsummary.ImportSummary; @@ -39,6 +35,12 @@ import org.hisp.dhis.program.Program; import org.hisp.dhis.program.ProgramInstance; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.Date; +import java.util.List; + /** * @author Morten Olav Hansen */ @@ -64,6 +66,10 @@ Enrollments getEnrollments( Program program, EnrollmentStatus status ); + Enrollments getEnrollments( Program program, EnrollmentStatus status, OrganisationUnit organisationUnit, Date startDate, Date endDate ); + + Enrollments getEnrollments( Program program, EnrollmentStatus status, List organisationUnits, Date startDate, Date endDate ); + Enrollments getEnrollments( Program program, TrackedEntityInstance trackedEntityInstance ); Enrollments getEnrollments( Program program, TrackedEntityInstance trackedEntityInstance, EnrollmentStatus status ); === removed file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramInstanceController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramInstanceController.java 2014-10-16 05:49:47 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramInstanceController.java 1970-01-01 00:00:00 +0000 @@ -1,155 +0,0 @@ -package org.hisp.dhis.webapi.controller.event; - -/* - * Copyright (c) 2004-2014, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -import com.google.common.collect.Lists; -import org.hisp.dhis.common.DxfNamespaces; -import org.hisp.dhis.common.IdentifiableObjectManager; -import org.hisp.dhis.common.IdentifiableObjectUtils; -import org.hisp.dhis.common.Pager; -import org.hisp.dhis.dxf2.fieldfilter.FieldFilterService; -import org.hisp.dhis.node.types.ComplexNode; -import org.hisp.dhis.node.types.RootNode; -import org.hisp.dhis.node.types.SimpleNode; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.program.Program; -import org.hisp.dhis.program.ProgramInstance; -import org.hisp.dhis.program.ProgramInstanceService; -import org.hisp.dhis.webapi.service.ContextService; -import org.hisp.dhis.webapi.utils.ContextUtils; -import org.hisp.dhis.webapi.webdomain.WebMetaData; -import org.hisp.dhis.webapi.webdomain.WebOptions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * @author Morten Olav Hansen - */ -@RestController -@RequestMapping( value = "/programInstances" ) -public class ProgramInstanceController -{ - @Autowired - private ProgramInstanceService programInstanceService; - - @Autowired - private IdentifiableObjectManager manager; - - @Autowired - protected ContextService contextService; - - @Autowired - protected FieldFilterService fieldFilterService; - - @RequestMapping( method = RequestMethod.GET ) - public RootNode getProgramInstances( - @RequestParam( value = "program" ) String programId, - @RequestParam( value = "orgUnit" ) List orgUnits, - @RequestParam @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date startDate, - @RequestParam @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date endDate, - @RequestParam( required = false ) Integer status, - @RequestParam Map parameters, HttpServletResponse response - ) - { - List fields = Lists.newArrayList( contextService.getParameterValues( "fields" ) ); - - if ( fields.isEmpty() ) - { - fields.add( ":identifiable" ); - } - - WebOptions options = new WebOptions( parameters ); - WebMetaData metaData = new WebMetaData(); - - Program program = manager.get( Program.class, programId ); - - if ( program == null ) - { - ContextUtils.conflictResponse( response, "program parameter is required." ); - } - - if ( orgUnits.isEmpty() ) - { - ContextUtils.conflictResponse( response, "At least one orgUnit is required." ); - } - - List organisationUnits = new ArrayList<>( manager.getByUid( OrganisationUnit.class, orgUnits ) ); - List identifiers = IdentifiableObjectUtils.getIdentifiers( organisationUnits ); - - List programInstances; - - if ( options.hasPaging() ) - { - int count = status == null ? - programInstanceService.countProgramInstances( program, identifiers, startDate, endDate ) : - programInstanceService.countProgramInstancesByStatus( status, program, identifiers, startDate, endDate ); - - Pager pager = new Pager( options.getPage(), count, options.getPageSize() ); - metaData.setPager( pager ); - - programInstances = new ArrayList<>( status == null ? - programInstanceService.getProgramInstances( program, identifiers, startDate, endDate, pager.getOffset(), pager.getPageSize() ) : - programInstanceService.getProgramInstancesByStatus( status, program, identifiers, startDate, endDate, pager.getOffset(), pager.getPageSize() ) ); - } - else - { - programInstances = new ArrayList<>( status == null ? - programInstanceService.getProgramInstances( program, identifiers, startDate, endDate, 0, Integer.MAX_VALUE ) : - programInstanceService.getProgramInstancesByStatus( status, program, identifiers, startDate, endDate ) ); - } - - RootNode rootNode = new RootNode( "metadata" ); - rootNode.setDefaultNamespace( DxfNamespaces.DXF_2_0 ); - rootNode.setNamespace( DxfNamespaces.DXF_2_0 ); - - if ( options.hasPaging() ) - { - ComplexNode pagerNode = rootNode.addChild( new ComplexNode( "pager" ) ); - pagerNode.addChild( new SimpleNode( "page", metaData.getPager().getPage() ) ); - pagerNode.addChild( new SimpleNode( "pageCount", metaData.getPager().getPageCount() ) ); - pagerNode.addChild( new SimpleNode( "total", metaData.getPager().getTotal() ) ); - pagerNode.addChild( new SimpleNode( "nextPage", metaData.getPager().getNextPage() ) ); - pagerNode.addChild( new SimpleNode( "prevPage", metaData.getPager().getPrevPage() ) ); - } - - rootNode.addChild( fieldFilterService.filter( ProgramInstance.class, programInstances, fields ) ); - - return rootNode; - } -}