← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 12250: fixes for tracker meta-data xml/json output, also added controller for personAttributeGroup

 

------------------------------------------------------------
revno: 12250
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2013-09-26 13:11:57 +0200
message:
  fixes for tracker meta-data xml/json output, also added controller for personAttributeGroup
added:
  dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonAttributeGroupController.java
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttribute.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeGroup.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeOption.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientIdentifier.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/relationship/RelationshipType.java
  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/MetaData.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttribute.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttribute.java	2013-09-13 08:55:14 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttribute.java	2013-09-26 11:11:57 +0000
@@ -30,12 +30,13 @@
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonView;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import org.hisp.dhis.common.BaseIdentifiableObject;
 import org.hisp.dhis.common.DxfNamespaces;
 import org.hisp.dhis.common.view.DetailedView;
-import org.hisp.dhis.common.view.ExportView;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -43,7 +44,7 @@
 /**
  * @author Abyot Asalefew
  */
-@JacksonXmlRootElement( localName = "patientAttribute", namespace = DxfNamespaces.DXF_2_0 )
+@JacksonXmlRootElement(localName = "personAttribute", namespace = DxfNamespaces.DXF_2_0)
 public class PatientAttribute
     extends BaseIdentifiableObject
 {
@@ -74,9 +75,9 @@
     private Set<PatientAttributeOption> attributeOptions;
 
     private String expression;
-    
+
     private Boolean displayOnVisitSchedule;
-    
+
     private Integer sortOrderInVisitSchedule;
 
     // -------------------------------------------------------------------------
@@ -92,6 +93,10 @@
     // Getters and setters
     // -------------------------------------------------------------------------
 
+    @JsonProperty( "personAttributeOptions" )
+    @JsonView( { DetailedView.class } )
+    @JacksonXmlElementWrapper( localName = "personAttributeOptions", namespace = DxfNamespaces.DXF_2_0 )
+    @JacksonXmlProperty( localName = "personAttributeOption", namespace = DxfNamespaces.DXF_2_0 )
     public Set<PatientAttributeOption> getAttributeOptions()
     {
         return attributeOptions == null ? new HashSet<PatientAttributeOption>() : attributeOptions;
@@ -105,12 +110,15 @@
     public void addAttributeOptions( PatientAttributeOption option )
     {
         if ( attributeOptions == null )
+        {
             attributeOptions = new HashSet<PatientAttributeOption>();
+        }
+
         attributeOptions.add( option );
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
+    @JsonView( { DetailedView.class } )
     @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
     public Boolean getInherit()
     {
@@ -123,8 +131,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public Boolean getGroupBy()
     {
         return groupBy;
@@ -136,8 +144,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public boolean isMandatory()
     {
         return mandatory;
@@ -149,8 +157,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public String getDescription()
     {
         return description;
@@ -162,8 +170,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public String getValueType()
     {
         return valueType;
@@ -174,6 +182,10 @@
         this.valueType = valueType;
     }
 
+    @JsonProperty( "personAttributeGroup" )
+    @JsonView( { DetailedView.class } )
+    @JsonSerialize( as = BaseIdentifiableObject.class )
+    @JacksonXmlProperty( localName = "personAttributeGroup", namespace = DxfNamespaces.DXF_2_0 )
     public PatientAttributeGroup getPatientAttributeGroup()
     {
         return patientAttributeGroup;
@@ -185,8 +197,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public String getExpression()
     {
         return expression;
@@ -198,8 +210,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public Boolean getDisplayOnVisitSchedule()
     {
         return displayOnVisitSchedule;
@@ -211,8 +223,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public Integer getSortOrderInVisitSchedule()
     {
         return sortOrderInVisitSchedule;
@@ -222,5 +234,4 @@
     {
         this.sortOrderInVisitSchedule = sortOrderInVisitSchedule;
     }
-
-}
+}
\ No newline at end of file

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeGroup.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeGroup.java	2013-09-11 15:26:20 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeGroup.java	2013-09-26 11:11:57 +0000
@@ -33,20 +33,19 @@
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import org.hisp.dhis.common.BaseIdentifiableObject;
 import org.hisp.dhis.common.DxfNamespaces;
 import org.hisp.dhis.common.view.DetailedView;
 import org.hisp.dhis.common.view.ExportView;
 
-import javax.xml.bind.annotation.XmlRootElement;
 import java.util.ArrayList;
 import java.util.List;
 
 /**
  * @author Chau Thu Tran
- * @version $Id$
  */
-@XmlRootElement(name = "patientAttributeGroup", namespace = DxfNamespaces.DXF_2_0)
+@JacksonXmlRootElement(localName = "personAttributeGroup", namespace = DxfNamespaces.DXF_2_0)
 public class PatientAttributeGroup
     extends BaseIdentifiableObject
 {
@@ -73,6 +72,9 @@
     // Getters and setters
     // -------------------------------------------------------------------------
 
+    @JsonProperty
+    @JsonView( { DetailedView.class, ExportView.class } )
+    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
     public String getDescription()
     {
         return description;
@@ -83,11 +85,11 @@
         this.description = description;
     }
 
-    @JsonProperty
-    @JsonSerialize( contentAs = BaseIdentifiableObject.class )
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlElementWrapper( localName = "patientAttributes", namespace = DxfNamespaces.DXF_2_0 )
-    @JacksonXmlProperty( localName = "patientAttribute", namespace = DxfNamespaces.DXF_2_0 )
+    @JsonProperty("personAttributes")
+    @JsonSerialize(contentAs = BaseIdentifiableObject.class)
+    @JsonView({ DetailedView.class, ExportView.class })
+    @JacksonXmlElementWrapper(localName = "personAttributes", namespace = DxfNamespaces.DXF_2_0)
+    @JacksonXmlProperty(localName = "personAttribute", namespace = DxfNamespaces.DXF_2_0)
     public List<PatientAttribute> getAttributes()
     {
         return attributes;

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeOption.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeOption.java	2013-09-13 08:55:14 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeOption.java	2013-09-26 11:11:57 +0000
@@ -28,11 +28,19 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import org.hisp.dhis.common.BaseIdentifiableObject;
+import org.hisp.dhis.common.DxfNamespaces;
+
 import java.io.Serializable;
 
 /**
  * @author Viet
  */
+@JacksonXmlRootElement( localName = "personAttributeOption", namespace = DxfNamespaces.DXF_2_0 )
 public class PatientAttributeOption implements Serializable
 {
     /**
@@ -108,6 +116,8 @@
         this.id = id;
     }
 
+    @JsonProperty
+    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
     public String getName()
     {
         return name;
@@ -118,6 +128,9 @@
         this.name = name;
     }
 
+    @JsonProperty
+    @JsonDeserialize( as = BaseIdentifiableObject.class )
+    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
     public PatientAttribute getPatientAttribute()
     {
         return patientAttribute;
@@ -127,4 +140,4 @@
     {
         this.patientAttribute = patientAttribute;
     }
-}
+}
\ No newline at end of file

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientIdentifier.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientIdentifier.java	2013-09-13 08:27:37 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientIdentifier.java	2013-09-26 11:11:57 +0000
@@ -28,12 +28,19 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import org.hisp.dhis.common.BaseIdentifiableObject;
+import org.hisp.dhis.common.DxfNamespaces;
+import org.hisp.dhis.common.view.DetailedView;
 
 /**
  * @author Abyot Asalefew Gizaw
- * @version $Id$
  */
+@JacksonXmlRootElement( localName = "personIdentifier", namespace = DxfNamespaces.DXF_2_0 )
 public class PatientIdentifier
     extends BaseIdentifiableObject
 {
@@ -59,6 +66,10 @@
     // Getters and setters
     // -------------------------------------------------------------------------
 
+    @JsonProperty
+    @JsonSerialize( as = BaseIdentifiableObject.class )
+    @JsonView( { DetailedView.class } )
+    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
     public Patient getPatient()
     {
         return patient;
@@ -69,6 +80,9 @@
         this.patient = patient;
     }
 
+    @JsonProperty
+    @JsonView( { DetailedView.class } )
+    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
     public String getIdentifier()
     {
         return identifier;
@@ -79,14 +93,17 @@
         this.identifier = identifier;
     }
 
+    @JsonProperty( "personIdentifier" )
+    @JsonSerialize( as = BaseIdentifiableObject.class )
+    @JsonView( { DetailedView.class } )
+    @JacksonXmlProperty( localName ="personIdentifier", namespace = DxfNamespaces.DXF_2_0 )
+    public PatientIdentifierType getIdentifierType()
+    {
+        return identifierType;
+    }
+
     public void setIdentifierType( PatientIdentifierType identifierType )
     {
         this.identifierType = identifierType;
     }
-
-    public PatientIdentifierType getIdentifierType()
-    {
-        return identifierType;
-    }
-
-}
+}
\ No newline at end of file

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/relationship/RelationshipType.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/relationship/RelationshipType.java	2013-09-19 08:38:29 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/relationship/RelationshipType.java	2013-09-26 11:11:57 +0000
@@ -31,21 +31,17 @@
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonView;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import org.hisp.dhis.common.BaseIdentifiableObject;
 import org.hisp.dhis.common.DxfNamespaces;
 import org.hisp.dhis.common.view.DetailedView;
 import org.hisp.dhis.common.view.ExportView;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-
 /**
  * @author Abyot Asalefew
  * @version $Id$
  */
-@XmlRootElement(name = "relationshipType", namespace = DxfNamespaces.DXF_2_0)
-@XmlAccessorType(value = XmlAccessType.NONE)
+@JacksonXmlRootElement( localName = "relationshipType", namespace = DxfNamespaces.DXF_2_0 )
 public class RelationshipType
     extends BaseIdentifiableObject
 {
@@ -79,8 +75,8 @@
     // -------------------------------------------------------------------------
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class, ExportView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public String getaIsToB()
     {
         return aIsToB;
@@ -92,8 +88,8 @@
     }
 
     @JsonProperty
-    @JsonView( { DetailedView.class, ExportView.class } )
-    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
+    @JsonView({ DetailedView.class, ExportView.class })
+    @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0)
     public String getbIsToA()
     {
         return bIsToA;
@@ -112,4 +108,4 @@
             ", bIsToA='" + bIsToA + '\'' +
             '}';
     }
-}
+}
\ No newline at end of file

=== 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-09-19 08:33:39 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java	2013-09-26 11:11:57 +0000
@@ -62,6 +62,9 @@
 import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
 import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet;
 import org.hisp.dhis.organisationunit.OrganisationUnitLevel;
+import org.hisp.dhis.patient.PatientAttribute;
+import org.hisp.dhis.patient.PatientAttributeGroup;
+import org.hisp.dhis.patient.PatientIdentifier;
 import org.hisp.dhis.program.Program;
 import org.hisp.dhis.program.ProgramStage;
 import org.hisp.dhis.relationship.RelationshipType;
@@ -160,6 +163,9 @@
         allExportClasses.put( Program.class, "programs" );
         allExportClasses.put( ProgramStage.class, "programStages" );
         allExportClasses.put( RelationshipType.class, "relationshipTypes" );
+        allExportClasses.put( PatientIdentifier.class, "personIdentifiers" );
+        allExportClasses.put( PatientAttribute.class, "personAttributes" );
+        allExportClasses.put( PatientAttributeGroup.class, "personAttributeGroups" );
 
         allExportClasses.put( BaseDimensionalObject.class, "dimensions" );
 
@@ -184,9 +190,15 @@
         exportClasses.remove( Program.class );
         exportClasses.remove( ProgramStage.class );
         exportClasses.remove( RelationshipType.class );
+        exportClasses.remove( PatientIdentifier.class );
+        exportClasses.remove( PatientAttribute.class );
+        exportClasses.remove( PatientAttributeGroup.class );
         importClasses.remove( Program.class );
         importClasses.remove( ProgramStage.class );
         importClasses.remove( RelationshipType.class );
+        importClasses.remove( PatientIdentifier.class );
+        importClasses.remove( PatientAttribute.class );
+        importClasses.remove( PatientAttributeGroup.class );
 
         // special class which is created on demand in association with other objects
         exportClasses.remove( DataElementOperand.class );

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/MetaData.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/MetaData.java	2013-09-19 08:33:39 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/MetaData.java	2013-09-26 11:11:57 +0000
@@ -66,6 +66,9 @@
 import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
 import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet;
 import org.hisp.dhis.organisationunit.OrganisationUnitLevel;
+import org.hisp.dhis.patient.PatientAttribute;
+import org.hisp.dhis.patient.PatientAttributeGroup;
+import org.hisp.dhis.patient.PatientIdentifier;
 import org.hisp.dhis.program.Program;
 import org.hisp.dhis.program.ProgramStage;
 import org.hisp.dhis.relationship.RelationshipType;
@@ -178,6 +181,12 @@
 
     private List<RelationshipType> relationshipTypes = new ArrayList<RelationshipType>();
 
+    private List<PatientIdentifier> personIdentifiers = new ArrayList<PatientIdentifier>();
+
+    private List<PatientAttribute> personAttributes = new ArrayList<PatientAttribute>();
+
+    private List<PatientAttributeGroup> personAttributeGroups = new ArrayList<PatientAttributeGroup>();
+
     public MetaData()
     {
     }
@@ -754,6 +763,45 @@
     }
 
     @JsonProperty
+    @JacksonXmlElementWrapper( localName = "personIdentifiers", namespace = DxfNamespaces.DXF_2_0 )
+    @JacksonXmlProperty( localName = "personIdentifier", namespace = DxfNamespaces.DXF_2_0 )
+    public List<PatientIdentifier> getPersonIdentifiers()
+    {
+        return personIdentifiers;
+    }
+
+    public void setPersonIdentifiers( List<PatientIdentifier> personIdentifiers )
+    {
+        this.personIdentifiers = personIdentifiers;
+    }
+
+    @JsonProperty
+    @JacksonXmlElementWrapper( localName = "personAttributes", namespace = DxfNamespaces.DXF_2_0 )
+    @JacksonXmlProperty( localName = "personAttribute", namespace = DxfNamespaces.DXF_2_0 )
+    public List<PatientAttribute> getPersonAttributes()
+    {
+        return personAttributes;
+    }
+
+    public void setPersonAttributes( List<PatientAttribute> personAttributes )
+    {
+        this.personAttributes = personAttributes;
+    }
+
+    @JsonProperty
+    @JacksonXmlElementWrapper( localName = "personAttributeGroups", namespace = DxfNamespaces.DXF_2_0 )
+    @JacksonXmlProperty( localName = "personAttributeGroup", namespace = DxfNamespaces.DXF_2_0 )
+    public List<PatientAttributeGroup> getPersonAttributeGroups()
+    {
+        return personAttributeGroups;
+    }
+
+    public void setPersonAttributeGroups( List<PatientAttributeGroup> personAttributeGroups )
+    {
+        this.personAttributeGroups = personAttributeGroups;
+    }
+
+    @JsonProperty
     @JacksonXmlElementWrapper( localName = "dimensions", namespace = DxfNamespaces.DXF_2_0 )
     @JacksonXmlProperty( localName = "dimension", namespace = DxfNamespaces.DXF_2_0 )
     public List<DimensionalObject> getDimensions()
@@ -770,9 +818,9 @@
     public String toString()
     {
         return "MetaData{" +
-            "attributeTypes=" + attributeTypes +
+            "created=" + created +
+            ", attributeTypes=" + attributeTypes +
             ", documents=" + documents +
-            ", dashboards=" + dashboards +
             ", constants=" + constants +
             ", concepts=" + concepts +
             ", users=" + users +
@@ -785,9 +833,11 @@
             ", categoryOptions=" + categoryOptions +
             ", categoryCombos=" + categoryCombos +
             ", categoryOptionCombos=" + categoryOptionCombos +
+            ", dashboards=" + dashboards +
             ", dataElements=" + dataElements +
             ", dataElementGroups=" + dataElementGroups +
             ", dataElementGroupSets=" + dataElementGroupSets +
+            ", dimensions=" + dimensions +
             ", indicators=" + indicators +
             ", indicatorGroups=" + indicatorGroups +
             ", indicatorGroupSets=" + indicatorGroupSets +
@@ -811,7 +861,11 @@
             ", sections=" + sections +
             ", dataSets=" + dataSets +
             ", programs=" + programs +
-            ", dimensions=" + dimensions +
+            ", programStages=" + programStages +
+            ", relationshipTypes=" + relationshipTypes +
+            ", personIdentifiers=" + personIdentifiers +
+            ", personAttributes=" + personAttributes +
+            ", personAttributeGroups=" + personAttributeGroups +
             '}';
     }
 }

=== added file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonAttributeGroupController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonAttributeGroupController.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonAttributeGroupController.java	2013-09-26 11:11:57 +0000
@@ -0,0 +1,44 @@
+package org.hisp.dhis.api.controller.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 org.hisp.dhis.api.controller.AbstractCrudController;
+import org.hisp.dhis.patient.PatientAttributeGroup;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
+ */
+@Controller
+@RequestMapping( value = PersonAttributeGroupController.RESOURCE_PATH )
+public class PersonAttributeGroupController extends AbstractCrudController<PatientAttributeGroup>
+{
+    public static final String RESOURCE_PATH = "/personAttributeGroups";
+}