=== modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java' --- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java 2013-03-05 09:09:02 +0000 +++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java 2013-03-06 09:21:16 +0000 @@ -90,9 +90,9 @@ /** * @author Morten Olav Hansen */ -@Controller( value = "facility-controller-" + FredController.PREFIX ) -@RequestMapping( FacilityController.RESOURCE_PATH ) -@PreAuthorize( "hasRole('M_dhis-web-api-fred') or hasRole('ALL')" ) +@Controller(value = "facility-controller-" + FredController.PREFIX) +@RequestMapping(FacilityController.RESOURCE_PATH) +@PreAuthorize("hasRole('M_dhis-web-api-fred') or hasRole('ALL')") public class FacilityController { public static final String RESOURCE_PATH = "/" + FredController.PREFIX + "/facilities"; @@ -238,13 +238,13 @@ return facility; } - @RequestMapping( value = "", method = RequestMethod.GET ) - public String readFacilities( Model model, @RequestParam( required = false ) Boolean active, - @RequestParam( value = "updatedSince", required = false ) Date lastUpdated, - @RequestParam( value = "allProperties", required = false, defaultValue = "true" ) Boolean allProperties, - @RequestParam( value = "fields", required = false ) String fields, - @RequestParam( value = "limit", required = false, defaultValue = "25" ) String limit, - @RequestParam( value = "offset", required = false, defaultValue = "0" ) Integer offset, + @RequestMapping(value = "", method = RequestMethod.GET) + public String readFacilities( Model model, @RequestParam(required = false) Boolean active, + @RequestParam(value = "updatedSince", required = false) Date lastUpdated, + @RequestParam(value = "allProperties", required = false, defaultValue = "true") Boolean allProperties, + @RequestParam(value = "fields", required = false) String fields, + @RequestParam(value = "limit", required = false, defaultValue = "25") String limit, + @RequestParam(value = "offset", required = false, defaultValue = "0") Integer offset, HttpServletRequest request ) { Facilities facilities = new Facilities(); @@ -338,10 +338,10 @@ return FredController.PREFIX + "/layout"; } - @RequestMapping( value = "/{id}", method = RequestMethod.GET ) + @RequestMapping(value = "/{id}", method = RequestMethod.GET) public String readFacility( Model model, @PathVariable String id, - @RequestParam( value = "allProperties", required = false, defaultValue = "true" ) Boolean allProperties, - @RequestParam( value = "fields", required = false ) String fields, + @RequestParam(value = "allProperties", required = false, defaultValue = "true") Boolean allProperties, + @RequestParam(value = "fields", required = false) String fields, HttpServletRequest request ) { OrganisationUnit organisationUnit; @@ -426,8 +426,8 @@ // POST JSON //-------------------------------------------------------------------------- - @RequestMapping( value = "", method = RequestMethod.POST ) - @PreAuthorize( "hasRole('F_FRED_CREATE') or hasRole('ALL')" ) + @RequestMapping(value = "", method = RequestMethod.POST) + @PreAuthorize("hasRole('F_FRED_CREATE') or hasRole('ALL')") public ResponseEntity createFacility( @RequestBody Facility facility ) throws Exception { if ( facility.getId() == null ) @@ -448,15 +448,18 @@ if ( organisationUnitService.getOrganisationUnit( organisationUnit.getUuid() ) != null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "An object with that UUID already exists." ), headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "An object with that UUID already exists." ), headers, HttpStatus.CONFLICT ); } if ( organisationUnitService.getOrganisationUnit( organisationUnit.getUid() ) != null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "An object with that UID already exists." ), headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "An object with that UID already exists." ), headers, HttpStatus.CONFLICT ); } else if ( organisationUnit.getCode() != null && organisationUnitService.getOrganisationUnitByCode( organisationUnit.getCode() ) != null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "An object with that code already exists." ), headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "An object with that code already exists." ), headers, HttpStatus.CONFLICT ); } organisationUnitService.addOrganisationUnit( organisationUnit ); @@ -526,8 +529,8 @@ } } - @RequestMapping( value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE ) - @PreAuthorize( "hasRole('F_FRED_UPDATE') or hasRole('ALL')" ) + @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('F_FRED_UPDATE') or hasRole('ALL')") public ResponseEntity updateFacility( @PathVariable String id, @RequestBody Facility facility, HttpServletRequest request ) throws Exception { HttpHeaders headers = new HttpHeaders(); @@ -544,8 +547,8 @@ } catch ( IllegalArgumentException ignored ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "Bad id: (does not match expected UUID string format)" ), - headers, HttpStatus.PRECONDITION_FAILED ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.PRECONDITION_FAILED.toString(), + "Bad id: (does not match expected UUID string format)" ), headers, HttpStatus.PRECONDITION_FAILED ); } } @@ -570,15 +573,15 @@ if ( !ETag.equals( request.getHeader( "If-Match" ) ) ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "ETag provided does not match current ETag of facility" ), - headers, HttpStatus.PRECONDITION_FAILED ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.PRECONDITION_FAILED.toString(), + "ETag provided does not match current ETag of facility" ), headers, HttpStatus.PRECONDITION_FAILED ); } } if ( organisationUnit == null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "No object with that identifier exists." ), - headers, HttpStatus.NOT_FOUND ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.NOT_FOUND.toString(), + "No object with that identifier exists." ), headers, HttpStatus.NOT_FOUND ); } else if ( organisationUnitUpdate.getCode() != null ) { @@ -586,8 +589,8 @@ if ( ouByCode != null && !organisationUnit.getUid().equals( ouByCode.getUid() ) ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "Another object with the same code already exists." ), - headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "Another object with the same code already exists." ), headers, HttpStatus.CONFLICT ); } } @@ -625,8 +628,8 @@ // DELETE JSON //-------------------------------------------------------------------------- - @RequestMapping( value = "/{id}", method = RequestMethod.DELETE ) - @PreAuthorize( "hasRole('F_FRED_DELETE') or hasRole('ALL')" ) + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @PreAuthorize("hasRole('F_FRED_DELETE') or hasRole('ALL')") public ResponseEntity deleteFacility( @PathVariable String id ) throws HierarchyViolationException { OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit( id ); @@ -645,7 +648,7 @@ // EXCEPTION HANDLERS //-------------------------------------------------------------------------- - @ExceptionHandler( { DeleteNotAllowedException.class, HierarchyViolationException.class } ) + @ExceptionHandler({ DeleteNotAllowedException.class, HierarchyViolationException.class }) public ResponseEntity exceptionHandler( Exception ex ) { return new ResponseEntity( ex.getMessage(), HttpStatus.FORBIDDEN ); === modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityServiceController.java' --- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityServiceController.java 2013-02-04 14:57:16 +0000 +++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityServiceController.java 2013-03-06 09:21:16 +0000 @@ -140,15 +140,18 @@ if ( organisationUnitService.getOrganisationUnit( organisationUnit.getUid() ) != null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "An object with that ID already exists." ), headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "An object with that ID already exists." ), headers, HttpStatus.CONFLICT ); } else if ( organisationUnitService.getOrganisationUnitByName( organisationUnit.getName() ) != null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "An object with that name already exists." ), headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "An object with that name already exists." ), headers, HttpStatus.CONFLICT ); } else if ( organisationUnit.getCode() != null && organisationUnitService.getOrganisationUnitByCode( organisationUnit.getCode() ) != null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "An object with that code already exists." ), headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "An object with that code already exists." ), headers, HttpStatus.CONFLICT ); } return new ResponseEntity( json, headers, HttpStatus.OK ); @@ -176,8 +179,8 @@ if ( ou == null ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "No object with that identifier exists." ), - headers, HttpStatus.NOT_FOUND ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.NOT_FOUND.toString(), + "No object with that identifier exists." ), headers, HttpStatus.NOT_FOUND ); } else if ( organisationUnit.getCode() != null ) { @@ -185,8 +188,8 @@ if ( ouByCode != null && !ou.getUid().equals( ouByCode.getUid() ) ) { - return new ResponseEntity( MessageResponseUtils.jsonMessage( "Another object with the same code already exists." ), - headers, HttpStatus.CONFLICT ); + return new ResponseEntity( MessageResponseUtils.jsonMessage( HttpStatus.CONFLICT.toString(), + "Another object with the same code already exists." ), headers, HttpStatus.CONFLICT ); } } === modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/domain/MessageResponse.java' --- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/domain/MessageResponse.java 2012-12-11 10:59:00 +0000 +++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/domain/MessageResponse.java 2013-03-06 09:21:16 +0000 @@ -32,21 +32,31 @@ /** * @author Morten Olav Hansen */ -@JsonPropertyOrder( value = { "message", "moreInfo" } ) +@JsonPropertyOrder( value = { "code", "message" } ) public class MessageResponse { + private String code; + private String message; - private String moreInfo; - public MessageResponse() { } - public MessageResponse( String message, String moreInfo ) + public MessageResponse( String code, String message ) { + this.code = code; this.message = message; - this.moreInfo = moreInfo; + } + + public String getCode() + { + return code; + } + + public void setCode( String code ) + { + this.code = code; } public String getMessage() @@ -58,14 +68,4 @@ { this.message = message; } - - public String getMoreInfo() - { - return moreInfo; - } - - public void setMoreInfo( String moreInfo ) - { - this.moreInfo = moreInfo; - } } === modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/utils/MessageResponseUtils.java' --- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/utils/MessageResponseUtils.java 2013-03-05 05:20:25 +0000 +++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/utils/MessageResponseUtils.java 2013-03-06 09:21:16 +0000 @@ -50,12 +50,12 @@ public static String jsonMessage( String message ) throws IOException { - return messageToJson( new MessageResponse( message, null ) ); + return messageToJson( new MessageResponse( null, message ) ); } - public static String jsonMessage( String message, String moreInfo ) throws IOException + public static String jsonMessage( String code, String message ) throws IOException { - return messageToJson( new MessageResponse( message, moreInfo ) ); + return messageToJson( new MessageResponse( code, message ) ); } public static String messageToJson( MessageResponse messageResponse ) throws IOException === added file 'dhis-2/dhis-web/dhis-web-api-fred/src/test/java/org/hisp/dhis/web/webapi/v1/utils/OrganisationUnitToFacilityConverterTest.java' --- dhis-2/dhis-web/dhis-web-api-fred/src/test/java/org/hisp/dhis/web/webapi/v1/utils/OrganisationUnitToFacilityConverterTest.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-api-fred/src/test/java/org/hisp/dhis/web/webapi/v1/utils/OrganisationUnitToFacilityConverterTest.java 2013-03-06 09:21:16 +0000 @@ -0,0 +1,147 @@ +package org.hisp.dhis.web.webapi.v1.utils; + +/* + * Copyright (c) 2004-2012, 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 org.hisp.dhis.dataset.DataSet; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.web.webapi.v1.domain.Facility; +import org.hisp.dhis.web.webapi.v1.domain.Identifier; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +/** + * @author Morten Olav Hansen + */ +public class OrganisationUnitToFacilityConverterTest +{ + private OrganisationUnitToFacilityConverter converter; + + @Before + public void setup() + { + converter = new OrganisationUnitToFacilityConverter(); + } + + @Test + public void testName() + { + OrganisationUnit organisationUnit = new OrganisationUnit( "OrgUnit1" ); + Facility facility = converter.convert( organisationUnit ); + + Assert.assertEquals( facility.getName(), organisationUnit.getName() ); + } + + @Test + public void testParent() + { + OrganisationUnit organisationUnit = new OrganisationUnit( "OrgUnit1" ); + OrganisationUnit parent = new OrganisationUnit( "parent" ); + organisationUnit.setParent( parent ); + + organisationUnit.setAutoFields(); + parent.setAutoFields(); + + Facility facility = converter.convert( organisationUnit ); + + String parent1 = (String) facility.getProperties().get( "parent" ); + Assert.assertEquals( parent.getUid(), parent1 ); + } + + @Test + public void testIdentifiers() + { + OrganisationUnit organisationUnit = new OrganisationUnit( "OrgUnit1" ); + organisationUnit.setAutoFields(); + organisationUnit.setCode( "code" ); + + Facility facility = converter.convert( organisationUnit ); + + boolean foundUid = false; + boolean foundCode = false; + + for ( Identifier identifier : facility.getIdentifiers() ) + { + if ( identifier.getAgency().equalsIgnoreCase( Identifier.DHIS2_AGENCY ) ) + { + if ( identifier.getContext().equalsIgnoreCase( Identifier.DHIS2_UID_CONTEXT ) ) + { + Assert.assertEquals( identifier.getId(), organisationUnit.getUid() ); + foundUid = true; + } + else if ( identifier.getContext().equalsIgnoreCase( Identifier.DHIS2_CODE_CONTEXT ) ) + { + Assert.assertEquals( identifier.getId(), organisationUnit.getCode() ); + foundCode = true; + } + } + } + + Assert.assertTrue( foundUid ); + Assert.assertTrue( foundCode ); + } + + @Test + public void testLevel() + { + OrganisationUnit organisationUnit = new OrganisationUnit( "OrgUnit1" ); + + Facility facility = converter.convert( organisationUnit ); + + Integer level = (Integer) facility.getProperties().get( "level" ); + + Assert.assertTrue( level.equals( organisationUnit.getOrganisationUnitLevel() ) ); + } + + @Test + public void testDataSets() + { + OrganisationUnit organisationUnit = new OrganisationUnit( "OrgUnit1" ); + DataSet dataSet1 = new DataSet( "dataSet1" ); + DataSet dataSet2 = new DataSet( "dataSet1" ); + DataSet dataSet3 = new DataSet( "dataSet1" ); + + dataSet1.setAutoFields(); + dataSet2.setAutoFields(); + dataSet3.setAutoFields(); + + organisationUnit.getDataSets().add( dataSet1 ); + organisationUnit.getDataSets().add( dataSet2 ); + organisationUnit.getDataSets().add( dataSet3 ); + + Facility facility = converter.convert( organisationUnit ); + + List dataSets = (List) facility.getProperties().get( "dataSets" ); + + Assert.assertTrue( dataSets.contains( dataSet1.getUid() ) ); + Assert.assertTrue( dataSets.contains( dataSet2.getUid() ) ); + Assert.assertTrue( dataSets.contains( dataSet3.getUid() ) ); + } +}