=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/CrudControllerAdvice.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/CrudControllerAdvice.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/CrudControllerAdvice.java 2015-04-28 06:52:28 +0000 @@ -28,13 +28,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import javax.servlet.http.HttpServletResponse; -import javax.validation.ConstraintViolationException; - import org.hisp.dhis.common.DeleteNotAllowedException; import org.hisp.dhis.common.IllegalQueryException; import org.hisp.dhis.common.MaintenanceModeException; import org.hisp.dhis.dataapproval.exceptions.DataApprovalException; +import org.hisp.dhis.system.util.DateUtils; import org.hisp.dhis.webapi.controller.exception.NotAuthenticatedException; import org.hisp.dhis.webapi.controller.exception.NotFoundException; import org.hisp.dhis.webapi.utils.ContextUtils; @@ -42,18 +40,38 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.HttpStatusCodeException; +import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolationException; +import java.beans.PropertyEditorSupport; +import java.util.Date; + /** * @author Morten Olav Hansen */ @ControllerAdvice public class CrudControllerAdvice { + @InitBinder + protected void initBinder( WebDataBinder binder ) + { + binder.registerCustomEditor( Date.class, new PropertyEditorSupport() + { + @Override + public void setAsText( String value ) throws IllegalArgumentException + { + setValue( DateUtils.parseDate( value ) ); + } + } ); + } + @ExceptionHandler public ResponseEntity notAuthenticatedExceptionHandler( NotAuthenticatedException ex ) { @@ -95,25 +113,25 @@ { return new ResponseEntity<>( ex.getMessage(), getHeaders(), HttpStatus.CONFLICT ); } - + @ExceptionHandler( MaintenanceModeException.class ) public ResponseEntity maintenanceModeExceptionHandler( MaintenanceModeException ex ) { return new ResponseEntity<>( ex.getMessage(), getHeaders(), HttpStatus.SERVICE_UNAVAILABLE ); } - + @ExceptionHandler( DataApprovalException.class ) public void dataApprovalExceptionHandler( DataApprovalException ex, HttpServletResponse response ) { ContextUtils.conflictResponse( response, ex.getClass().getName() ); //TODO fix message } - + private HttpHeaders getHeaders() { HttpHeaders headers = new HttpHeaders(); headers.setContentType( MediaType.TEXT_PLAIN ); headers.setCacheControl( "max-age=0, no-cache, no-store" ); - return headers; + return headers; } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/EventController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/EventController.java 2015-04-27 08:28:06 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/EventController.java 2015-04-28 06:52:28 +0000 @@ -28,18 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.hisp.dhis.common.IdentifiableObjectManager; import org.hisp.dhis.common.OrganisationUnitSelectionMode; import org.hisp.dhis.dataelement.DataElement; @@ -73,7 +61,6 @@ import org.hisp.dhis.webapi.utils.ContextUtils; import org.hisp.dhis.webapi.webdomain.WebOptions; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.format.annotation.DateTimeFormat; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -83,7 +70,16 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; -import static org.hisp.dhis.system.util.DateUtils.DATE_PATTERN; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; /** * @author Morten Olav Hansen @@ -141,10 +137,10 @@ @RequestParam( required = false ) String trackedEntityInstance, @RequestParam( required = false ) String orgUnit, @RequestParam( required = false ) OrganisationUnitSelectionMode ouMode, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date startDate, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date endDate, + @RequestParam( required = false ) Date startDate, + @RequestParam( required = false ) Date endDate, @RequestParam( required = false ) EventStatus status, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date lastUpdated, + @RequestParam( required = false ) Date lastUpdated, @RequestParam( required = false ) Integer page, @RequestParam( required = false ) Integer pageSize, @RequestParam( required = false ) boolean skipMeta, @@ -153,9 +149,9 @@ { WebOptions options = new WebOptions( parameters ); - EventSearchParams params = eventService.getFromUrl( program, programStage, programStatus, followUp, orgUnit, ouMode, + EventSearchParams params = eventService.getFromUrl( program, programStage, programStatus, followUp, orgUnit, ouMode, trackedEntityInstance, startDate, endDate, status, lastUpdated, idSchemes, page, pageSize ); - + Events events = eventService.getEvents( params ); if ( options.hasLinks() ) @@ -192,10 +188,10 @@ @RequestParam( required = false ) String trackedEntityInstance, @RequestParam( required = false ) String orgUnit, @RequestParam( required = false ) OrganisationUnitSelectionMode ouMode, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date startDate, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date endDate, + @RequestParam( required = false ) Date startDate, + @RequestParam( required = false ) Date endDate, @RequestParam( required = false ) EventStatus status, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date lastUpdated, + @RequestParam( required = false ) Date lastUpdated, @RequestParam( required = false ) Integer page, @RequestParam( required = false ) Integer pageSize, @RequestParam( required = false ) String attachment, @@ -203,9 +199,9 @@ @RequestParam Map parameters, IdSchemes idSchemes, Model model, HttpServletResponse response, HttpServletRequest request ) throws IOException { - EventSearchParams params = eventService.getFromUrl( program, programStage, programStatus, followUp, orgUnit, ouMode, + EventSearchParams params = eventService.getFromUrl( program, programStage, programStatus, followUp, orgUnit, ouMode, trackedEntityInstance, startDate, endDate, status, lastUpdated, idSchemes, page, pageSize ); - + Events events = eventService.getEvents( params ); OutputStream outputStream = response.getOutputStream(); @@ -236,15 +232,15 @@ @RequestParam( required = false ) OrganisationUnitSelectionMode ouMode, @RequestParam( required = false ) ProgramStatus programStatus, @RequestParam( required = false ) EventStatus eventStatus, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date startDate, - @RequestParam( required = false ) @DateTimeFormat( pattern = DATE_PATTERN ) Date endDate, + @RequestParam( required = false ) Date startDate, + @RequestParam( required = false ) Date endDate, @RequestParam Map parameters, Model model, HttpServletRequest request ) { WebOptions options = new WebOptions( parameters ); - EventSearchParams params = eventService.getFromUrl( program, null, programStatus, null, + EventSearchParams params = eventService.getFromUrl( program, null, programStatus, null, orgUnit, ouMode, null, startDate, endDate, eventStatus, null, null, null, null ); - + EventRows eventRows = eventRowService.getEventRows( params ); model.addAttribute( "model", eventRows );