=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2013-08-26 13:01:59 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2013-09-02 10:37:36 +0000 @@ -66,6 +66,8 @@ Collection getProgramStageInstances( ProgramStage programStage, OrganisationUnit organisationUnit); + Collection getProgramStageInstances( ProgramStage programStage, OrganisationUnit organisationUnit, Date start, Date end); + Collection getProgramStageInstances( Collection programInstances ); Collection getProgramStageInstances( Date dueDate ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/BaseEventService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/BaseEventService.java 2013-08-26 13:01:59 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/BaseEventService.java 2013-09-02 10:37:36 +0000 @@ -354,18 +354,29 @@ ProgramStage programStage = program.getProgramStageByStage( 1 ); - List programStageInstances = null; - - if ( organisationUnit != null ) - { - programStageInstances = new ArrayList( - programStageInstanceService.getProgramStageInstances( programStage, organisationUnit ) ); - } - else - { - programStageInstances = new ArrayList( - programStageInstanceService.getProgramStageInstances( programStage ) ); - } + List programStageInstances; + + programStageInstances = new ArrayList( + programStageInstanceService.getProgramStageInstances( programStage, organisationUnit ) ); + + List convertedEvents = convertProgramStageInstances( programStageInstances ); + + events.setEvents( convertedEvents ); + + return events; + } + + @Override + public Events getEvents( Program program, OrganisationUnit organisationUnit, Date start, Date end ) + { + Events events = new Events(); + + ProgramStage programStage = program.getProgramStageByStage( 1 ); + + List programStageInstances; + + programStageInstances = new ArrayList( + programStageInstanceService.getProgramStageInstances( programStage, organisationUnit, start, end ) ); List convertedEvents = convertProgramStageInstances( programStageInstances ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/EventService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/EventService.java 2013-08-26 13:01:59 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/EventService.java 2013-09-02 10:37:36 +0000 @@ -36,6 +36,7 @@ import java.io.IOException; import java.io.InputStream; +import java.util.Date; /** * @author Morten Olav Hansen @@ -54,6 +55,8 @@ Events getEvents( Program program, OrganisationUnit organisationUnit ); + Events getEvents( Program program, OrganisationUnit organisationUnit, Date start, Date end ); + Event getEvent( String uid ); Event getEvent( ProgramStageInstance programStageInstance ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/Options.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/Options.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/Options.java 2013-09-02 10:37:36 +0000 @@ -53,7 +53,7 @@ return str; } - protected static Date stringAsDate( String str ) + public static Date stringAsDate( String str ) { if ( str == null ) { === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2013-08-27 03:31:40 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2013-09-02 10:37:36 +0000 @@ -166,6 +166,12 @@ return programStageInstanceStore.get( programStage, organisationUnit ); } + @Override + public Collection getProgramStageInstances( ProgramStage programStage, OrganisationUnit organisationUnit, Date start, Date end ) + { + return programStageInstanceStore.get( programStage, organisationUnit, start, end, 0, Integer.MAX_VALUE ); + } + public void updateProgramStageInstance( ProgramStageInstance programStageInstance ) { programStageInstance.setAutoFields(); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/EventController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/EventController.java 2013-08-26 13:01:59 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/EventController.java 2013-09-02 10:37:36 +0000 @@ -41,6 +41,7 @@ import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.program.Program; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.http.HttpStatus; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; @@ -55,13 +56,14 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.Date; import java.util.Map; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping(value = EventController.RESOURCE_PATH) +@RequestMapping( value = EventController.RESOURCE_PATH ) public class EventController { public static final String RESOURCE_PATH = "/events"; @@ -81,27 +83,39 @@ // ------------------------------------------------------------------------- @RequestMapping( value = "", method = RequestMethod.GET ) - public String getEvents( @RequestParam( "program" ) String programUid, @RequestParam( value = "orgUnit", required = false ) String orgUnitUid, + public String getEvents( + @RequestParam( "program" ) String programUid, + @RequestParam( value = "orgUnit" ) String orgUnitUid, + @RequestParam @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date startDate, + @RequestParam @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date endDate, @RequestParam Map parameters, Model model, HttpServletRequest request, HttpServletResponse response ) throws Exception { WebOptions options = new WebOptions( parameters ); Program program = manager.get( Program.class, programUid ); - OrganisationUnit organisationUnit = null; + OrganisationUnit organisationUnit; if ( program == null ) { throw new NotFoundException( "Program", programUid ); } - if ( orgUnitUid != null ) - { - organisationUnit = manager.get( OrganisationUnit.class, orgUnitUid ); - - if ( organisationUnit == null ) - { - throw new NotFoundException( "OrganisationUnit", programUid ); - } + organisationUnit = manager.get( OrganisationUnit.class, orgUnitUid ); + + if ( organisationUnit == null ) + { + try + { + organisationUnit = manager.get( OrganisationUnit.class, Integer.parseInt( orgUnitUid ) ); + } + catch ( NumberFormatException ignored ) + { + } + } + + if ( organisationUnit == null ) + { + throw new NotFoundException( "OrganisationUnit", programUid ); } if ( program.isRegistration() || !program.isSingleEvent() ) @@ -109,7 +123,7 @@ throw new HttpClientErrorException( HttpStatus.BAD_REQUEST, "Only single event with no registration is currently supported." ); } - Events events = eventService.getEvents( program, organisationUnit ); + Events events = eventService.getEvents( program, organisationUnit, startDate, endDate ); if ( options.hasLinks() ) { === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/eventExportForm.vm' --- dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/eventExportForm.vm 2013-09-02 08:27:33 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/eventExportForm.vm 2013-09-02 10:37:36 +0000 @@ -1,14 +1,40 @@ + +