=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/AbstractPersonService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/AbstractPersonService.java 2013-09-12 11:20:41 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/AbstractPersonService.java 2013-09-12 12:03:58 +0000 @@ -196,21 +196,29 @@ } // ------------------------------------------------------------------------- + // CREATE + // ------------------------------------------------------------------------- + + @Override + public Person savePerson( Person person ) + { + System.err.println( "SAVE: " + person ); + Patient patient = getPatient( person ); + + return person; + } + + // ------------------------------------------------------------------------- // UPDATE // ------------------------------------------------------------------------- @Override - public void savePerson( Person person ) - { - System.err.println( "SAVE: " + person ); - Patient patient = getPatient( person ); - } - - @Override - public void updatePerson( Person person ) + public Person updatePerson( Person person ) { System.err.println( "UPDATE: " + person ); Patient patient = getPatient( person ); + + return person; } // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/JacksonPersonService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/JacksonPersonService.java 2013-09-12 11:20:41 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/JacksonPersonService.java 2013-09-12 12:03:58 +0000 @@ -93,9 +93,10 @@ // ------------------------------------------------------------------------- @Override - public void savePersonXml( InputStream inputStream ) throws IOException + public Persons savePersonXml( InputStream inputStream ) throws IOException { String input = StreamUtils.copyToString( inputStream, Charset.forName( "UTF-8" ) ); + Persons savedPersons = new Persons(); try { @@ -103,20 +104,23 @@ for ( Person person : persons.getPersons() ) { - savePerson( person ); + savedPersons.getPersons().add( savePerson( person ) ); } } catch ( Exception ex ) { Person person = fromXml( input, Person.class ); - savePerson( person ); + savedPersons.getPersons().add( savePerson( person ) ); } + + return savedPersons; } @Override - public void savePersonJson( InputStream inputStream ) throws IOException + public Persons savePersonJson( InputStream inputStream ) throws IOException { String input = StreamUtils.copyToString( inputStream, Charset.forName( "UTF-8" ) ); + Persons savedPersons = new Persons(); try { @@ -124,14 +128,16 @@ for ( Person person : persons.getPersons() ) { - savePerson( person ); + savedPersons.getPersons().add( savePerson( person ) ); } } catch ( Exception ex ) { Person person = fromJson( input, Person.class ); - savePerson( person ); + savedPersons.getPersons().add( savePerson( person ) ); } + + return savedPersons; } // ------------------------------------------------------------------------- @@ -139,20 +145,24 @@ // ------------------------------------------------------------------------- @Override - public void updatePersonXml( String id, InputStream inputStream ) throws IOException + public Person updatePersonXml( String id, InputStream inputStream ) throws IOException { Person person = fromXml( inputStream, Person.class ); person.setPerson( id ); updatePerson( person ); + + return person; } @Override - public void updatePersonJson( String id, InputStream inputStream ) throws IOException + public Person updatePersonJson( String id, InputStream inputStream ) throws IOException { Person person = fromJson( inputStream, Person.class ); person.setPerson( id ); updatePerson( person ); + + return person; } } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/PersonService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/PersonService.java 2013-09-12 11:20:41 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/person/PersonService.java 2013-09-12 12:03:58 +0000 @@ -71,21 +71,21 @@ // CREATE // ------------------------------------------------------------------------- - void savePersonXml( InputStream inputStream ) throws IOException; - - void savePersonJson( InputStream inputStream ) throws IOException; - - void savePerson( Person person ); + Persons savePersonXml( InputStream inputStream ) throws IOException; + + Persons savePersonJson( InputStream inputStream ) throws IOException; + + Person savePerson( Person person ); // ------------------------------------------------------------------------- // UPDATE // ------------------------------------------------------------------------- - void updatePersonXml( String id, InputStream inputStream ) throws IOException; - - void updatePersonJson( String id, InputStream inputStream ) throws IOException; - - void updatePerson( Person person ); + Person updatePersonXml( String id, InputStream inputStream ) throws IOException; + + Person updatePersonJson( String id, InputStream inputStream ) throws IOException; + + Person updatePerson( Person person ); // ------------------------------------------------------------------------- // DELETE === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java 2013-08-28 11:29:37 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java 2013-09-12 12:03:58 +0000 @@ -47,6 +47,8 @@ import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.Section; import org.hisp.dhis.document.Document; +import org.hisp.dhis.dxf2.event.Event; +import org.hisp.dhis.dxf2.event.person.Person; import org.hisp.dhis.indicator.Indicator; import org.hisp.dhis.indicator.IndicatorGroup; import org.hisp.dhis.indicator.IndicatorGroupSet; @@ -156,7 +158,6 @@ allExportClasses.put( MessageConversation.class, "messageConversations" ); allExportClasses.put( Interpretation.class, "interpretations" ); - allExportClasses.put( Program.class, "programs" ); allExportClasses.put( ProgramStage.class, "programStages" ); allExportClasses.put( BaseDimensionalObject.class, "dimensions" ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonController.java 2013-09-12 11:20:41 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonController.java 2013-09-12 12:03:58 +0000 @@ -29,11 +29,13 @@ */ import org.hisp.dhis.api.controller.WebOptions; +import org.hisp.dhis.api.utils.ContextUtils; import org.hisp.dhis.common.IdentifiableObjectManager; import org.hisp.dhis.dxf2.event.person.Gender; import org.hisp.dhis.dxf2.event.person.Person; import org.hisp.dhis.dxf2.event.person.PersonService; import org.hisp.dhis.dxf2.event.person.Persons; +import org.hisp.dhis.dxf2.utils.JacksonUtils; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.program.Program; import org.springframework.beans.factory.annotation.Autowired; @@ -57,7 +59,7 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping(value = PersonController.RESOURCE_PATH) +@RequestMapping( value = PersonController.RESOURCE_PATH ) public class PersonController { public static final String RESOURCE_PATH = "/persons"; @@ -72,11 +74,11 @@ // READ // ------------------------------------------------------------------------- - @RequestMapping(value = "", method = RequestMethod.GET) + @RequestMapping( value = "", method = RequestMethod.GET ) public String getPersons( - @RequestParam(value = "orgUnit", required = false) String orgUnitUid, - @RequestParam(required = false) Gender gender, - @RequestParam(value = "program", required = false) String programUid, + @RequestParam( value = "orgUnit", required = false ) String orgUnitUid, + @RequestParam( required = false ) Gender gender, + @RequestParam( value = "program", required = false ) String programUid, @RequestParam Map parameters, Model model, HttpServletRequest request ) throws Exception { WebOptions options = new WebOptions( parameters ); @@ -155,7 +157,7 @@ return organisationUnit; } - @RequestMapping(value = "/{id}", method = RequestMethod.GET) + @RequestMapping( value = "/{id}", method = RequestMethod.GET ) public String getPerson( @PathVariable String id, @RequestParam Map parameters, Model model ) { WebOptions options = new WebOptions( parameters ); @@ -172,17 +174,44 @@ // ------------------------------------------------------------------------- @RequestMapping( value = "", method = RequestMethod.POST, consumes = MediaType.APPLICATION_XML_VALUE ) - @ResponseStatus( value = HttpStatus.CREATED ) public void postPersonXml( HttpServletRequest request, HttpServletResponse response ) throws IOException { - personService.savePersonXml( request.getInputStream() ); + Persons persons = personService.savePersonXml( request.getInputStream() ); + + if ( persons.getPersons().size() > 1 ) + { + response.setStatus( HttpServletResponse.SC_CREATED ); + JacksonUtils.toXml( response.getOutputStream(), persons ); + } + else + { + response.setStatus( HttpServletResponse.SC_CREATED ); + response.setHeader( "Location", getResourcePath( request, persons.getPersons().get( 0 ) ) ); + JacksonUtils.toXml( response.getOutputStream(), persons.getPersons().get( 0 ) ); + } } @RequestMapping( value = "", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE ) - @ResponseStatus( value = HttpStatus.CREATED ) public void postPersonJson( HttpServletRequest request, HttpServletResponse response ) throws IOException { - personService.savePersonJson( request.getInputStream() ); + Persons persons = personService.savePersonJson( request.getInputStream() ); + + if ( persons.getPersons().size() > 1 ) + { + response.setStatus( HttpServletResponse.SC_CREATED ); + JacksonUtils.toJson( response.getOutputStream(), persons ); + } + else + { + response.setStatus( HttpServletResponse.SC_CREATED ); + response.setHeader( "Location", getResourcePath( request, persons.getPersons().get( 0 ) ) ); + JacksonUtils.toJson( response.getOutputStream(), persons.getPersons().get( 0 ) ); + } + } + + public String getResourcePath( HttpServletRequest request, Person person ) + { + return ContextUtils.getContextPath( request ) + "/api/" + "persons" + "/" + person.getPerson(); } // ------------------------------------------------------------------------- @@ -191,16 +220,18 @@ @RequestMapping( value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_XML_VALUE ) @ResponseStatus( value = HttpStatus.NO_CONTENT ) - public void updatePersonXml( @PathVariable String id, HttpServletRequest request ) throws IOException + public void updatePersonXml( @PathVariable String id, HttpServletRequest request, HttpServletResponse response ) throws IOException { - personService.updatePersonXml( id, request.getInputStream() ); + Person person = personService.updatePersonXml( id, request.getInputStream() ); + JacksonUtils.toXml( response.getOutputStream(), person ); } @RequestMapping( value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE ) @ResponseStatus( value = HttpStatus.NO_CONTENT ) - public void updatePersonJson( @PathVariable String id, HttpServletRequest request ) throws IOException + public void updatePersonJson( @PathVariable String id, HttpServletRequest request, HttpServletResponse response ) throws IOException { - personService.updatePersonJson( id, request.getInputStream() ); + Person person = personService.updatePersonJson( id, request.getInputStream() ); + JacksonUtils.toJson( response.getOutputStream(), person ); } // -------------------------------------------------------------------------