=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/AbstractPersonService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/AbstractPersonService.java 2013-09-06 10:59:17 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/AbstractPersonService.java 2013-09-10 10:46:59 +0000 @@ -39,6 +39,8 @@ import java.util.Collection; import java.util.List; +import static org.hisp.dhis.system.util.TextUtils.nullIfEmpty; + /** * @author Morten Olav Hansen */ @@ -71,10 +73,7 @@ for ( Patient patient : patients ) { - Person person = new Person(); - person.setPerson( patient.getUid() ); - - persons.getPersons().add( person ); + persons.getPersons().add( getPerson( patient ) ); } return persons; @@ -96,12 +95,7 @@ @Override public Person getPerson( String uid ) { - Person person = new Person(); - Patient patient = patientService.getPatient( uid ); - - person.setPerson( patient.getUid() ); - - return person; + return getPerson( patientService.getPatient( uid ) ); } @Override @@ -109,6 +103,32 @@ { Person person = new Person(); person.setPerson( patient.getUid() ); + person.setOrgUnit( patient.getOrganisationUnit().getUid() ); + + Name name = new Name( + nullIfEmpty( patient.getFirstName() ), + nullIfEmpty( patient.getMiddleName() ), + nullIfEmpty( patient.getLastName() ) ); + + person.setName( name ); + person.setGender( Gender.fromString( patient.getGender() ) ); + + person.setDeceased( patient.getIsDead() ); + person.setDateOfDeath( patient.getDeathDate() ); + + Contact contact = new Contact(); + contact.setPhoneNumber( nullIfEmpty( patient.getPhoneNumber() ) ); + + if ( contact.getPhoneNumber() != null ) + { + person.setContact( contact ); + } + + DateOfBirth dateOfBirth = new DateOfBirth( patient.getBirthDate(), + DateOfBirthType.fromString( String.valueOf( patient.getDobType() ) ) ); + + person.setDateOfBirth( dateOfBirth ); + person.setDateOfRegistration( patient.getRegistrationDate() ); return person; } === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Contact.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Contact.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Contact.java 2013-09-10 10:46:59 +0000 @@ -0,0 +1,59 @@ +package org.hisp.dhis.dxf2.event; + +/* + * Copyright (c) 2004-2013, 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.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import org.hisp.dhis.common.DxfNamespaces; + +/** + * @author Morten Olav Hansen + */ +@JacksonXmlRootElement( localName = "contact", namespace = DxfNamespaces.DXF_2_0 ) +public class Contact +{ + private String phoneNumber; + + public Contact() + { + } + + @JsonProperty( required = true ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public String getPhoneNumber() + { + return phoneNumber; + } + + public void setPhoneNumber( String phoneNumber ) + { + this.phoneNumber = phoneNumber; + } +} === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirth.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirth.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirth.java 2013-09-10 10:46:59 +0000 @@ -0,0 +1,77 @@ +package org.hisp.dhis.dxf2.event; + +/* + * Copyright (c) 2004-2013, 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.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import org.hisp.dhis.common.DxfNamespaces; + +import java.util.Date; + +/** + * @author Morten Olav Hansen + */ +@JacksonXmlRootElement( localName = "dateOfBirth", namespace = DxfNamespaces.DXF_2_0 ) +public class DateOfBirth +{ + private Date date; + + private DateOfBirthType type; + + public DateOfBirth() + { + } + + public DateOfBirth( Date date ) + { + this.date = date; + this.type = DateOfBirthType.VERIFIED; + } + + public DateOfBirth( Date date, DateOfBirthType type ) + { + this.date = date; + this.type = type; + } + + @JsonProperty( required = true ) + @JacksonXmlProperty( isAttribute = true ) + public Date getDate() + { + return date; + } + + @JsonProperty( required = true ) + @JacksonXmlProperty( isAttribute = true ) + public DateOfBirthType getType() + { + return type; + } +} === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirthType.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirthType.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirthType.java 2013-09-10 10:46:59 +0000 @@ -0,0 +1,64 @@ +package org.hisp.dhis.dxf2.event; + +/* + * Copyright (c) 2004-2013, 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. + */ + +/** + * @author Morten Olav Hansen + */ +public enum DateOfBirthType +{ + VERIFIED( "V" ), + DECLARED( "D" ), + APPROXIMATE( "A" ); + + private final String type; + + private DateOfBirthType( String type ) + { + this.type = type; + } + + public String getType() + { + return type; + } + + public static DateOfBirthType fromString( String text ) + { + for ( DateOfBirthType dateOfBirthType : DateOfBirthType.values() ) + { + if ( text.equals( dateOfBirthType.getType() ) ) + { + return dateOfBirthType; + } + } + + throw new IllegalArgumentException(); + } +} === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Gender.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Gender.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Gender.java 2013-09-10 10:46:59 +0000 @@ -0,0 +1,66 @@ +package org.hisp.dhis.dxf2.event; + +/* + * Copyright (c) 2004-2013, 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.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import org.hisp.dhis.common.DxfNamespaces; + +/** + * @author Morten Olav Hansen + */ +@JacksonXmlRootElement( localName = "gender", namespace = DxfNamespaces.DXF_2_0 ) +public enum Gender +{ + MALE( "M" ), FEMALE( "F" ), TRANSGENDER( "T" ); + + private String type; + + private Gender( String type ) + { + this.type = type; + } + + public String getType() + { + return type; + } + + public static Gender fromString( String text ) + { + for ( Gender gender : Gender.values() ) + { + if ( text.equals( gender.getType() ) ) + { + return gender; + } + } + + throw new IllegalArgumentException(); + } +} === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Name.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Name.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Name.java 2013-09-10 10:46:59 +0000 @@ -0,0 +1,109 @@ +package org.hisp.dhis.dxf2.event; + +/* + * Copyright (c) 2004-2013, 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.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import org.hisp.dhis.common.DxfNamespaces; + +/** + * @author Morten Olav Hansen + */ +@JacksonXmlRootElement( localName = "name", namespace = DxfNamespaces.DXF_2_0 ) +public class Name +{ + private String firstName; + + private String middleName; + + private String lastName; + + public Name() + { + } + + public Name( String firstName, String middleName, String lastName ) + { + this.firstName = firstName; + this.middleName = middleName; + this.lastName = lastName; + } + + @JsonProperty( required = true ) + @JacksonXmlProperty( isAttribute = true ) + public String getFirstName() + { + return firstName; + } + + @JsonProperty( required = true ) + @JacksonXmlProperty( isAttribute = true ) + public String getMiddleName() + { + return middleName; + } + + @JsonProperty( required = true ) + @JacksonXmlProperty( isAttribute = true ) + public String getLastName() + { + return lastName; + } + + @Override + public boolean equals( Object o ) + { + if ( this == o ) return true; + if ( o == null || getClass() != o.getClass() ) return false; + + Name name = (Name) o; + + if ( firstName != null ? !firstName.equals( name.firstName ) : name.firstName != null ) return false; + if ( lastName != null ? !lastName.equals( name.lastName ) : name.lastName != null ) return false; + if ( middleName != null ? !middleName.equals( name.middleName ) : name.middleName != null ) return false; + + return true; + } + + @Override + public int hashCode() + { + int result = firstName != null ? firstName.hashCode() : 0; + result = 31 * result + (middleName != null ? middleName.hashCode() : 0); + result = 31 * result + (lastName != null ? lastName.hashCode() : 0); + return result; + } + + @Override + public String toString() + { + return String.format( "{0} {1} {2}", firstName, middleName, lastName ); + } +} === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Person.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Person.java 2013-09-06 10:06:11 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Person.java 2013-09-10 10:46:59 +0000 @@ -33,14 +33,32 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import org.hisp.dhis.common.DxfNamespaces; +import java.util.Date; + /** * @author Morten Olav Hansen */ -@JacksonXmlRootElement( localName = "person", namespace = DxfNamespaces.DXF_2_0 ) +@JacksonXmlRootElement(localName = "person", namespace = DxfNamespaces.DXF_2_0) public class Person { private String person; + private String orgUnit; + + private Name name; + + private Gender gender; + + private DateOfBirth dateOfBirth; + + private boolean deceased; + + private Date dateOfDeath; + + private Date dateOfRegistration; + + private Contact contact; + public Person() { } @@ -57,6 +75,102 @@ this.person = person; } + @JsonProperty( required = true ) + @JacksonXmlProperty( isAttribute = true ) + public String getOrgUnit() + { + return orgUnit; + } + + public void setOrgUnit( String orgUnit ) + { + this.orgUnit = orgUnit; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public Name getName() + { + return name; + } + + public void setName( Name name ) + { + this.name = name; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public Gender getGender() + { + return gender; + } + + public void setGender( Gender gender ) + { + this.gender = gender; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public DateOfBirth getDateOfBirth() + { + return dateOfBirth; + } + + public void setDateOfBirth( DateOfBirth dateOfBirth ) + { + this.dateOfBirth = dateOfBirth; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public boolean isDeceased() + { + return deceased; + } + + public void setDeceased( boolean deceased ) + { + this.deceased = deceased; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public Date getDateOfDeath() + { + return dateOfDeath; + } + + public void setDateOfDeath( Date dateOfDeath ) + { + this.dateOfDeath = dateOfDeath; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public Date getDateOfRegistration() + { + return dateOfRegistration; + } + + public void setDateOfRegistration( Date dateOfRegistration ) + { + this.dateOfRegistration = dateOfRegistration; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public Contact getContact() + { + return contact; + } + + public void setContact( Contact contact ) + { + this.contact = contact; + } + @Override public boolean equals( Object o ) { === 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-06 09:34:21 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonController.java 2013-09-10 10:46:59 +0000 @@ -29,11 +29,13 @@ */ import org.hisp.dhis.api.controller.WebOptions; +import org.hisp.dhis.dxf2.event.Person; import org.hisp.dhis.dxf2.event.PersonService; import org.hisp.dhis.dxf2.event.Persons; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -45,7 +47,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"; @@ -53,15 +55,27 @@ @Autowired private PersonService personService; - @RequestMapping( value = "", method = RequestMethod.GET ) + @RequestMapping(value = "", method = RequestMethod.GET) public String getPersons( @RequestParam Map parameters, Model model, HttpServletRequest request ) throws Exception { WebOptions options = new WebOptions( parameters ); Persons persons = personService.getPersons(); model.addAttribute( "model", persons ); + model.addAttribute( "viewClass", options.getViewClass( "basic" ) ); + + return "persons"; + } + + @RequestMapping( value = "/{id}", method = RequestMethod.GET ) + public String getPerson( @PathVariable String id, @RequestParam Map parameters, Model model, HttpServletRequest request ) + { + WebOptions options = new WebOptions( parameters ); + Person person = personService.getPerson( id ); + + model.addAttribute( "model", person ); model.addAttribute( "viewClass", options.getViewClass( "detailed" ) ); - return "persons"; + return "person"; } }