dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #40645
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 20644: expose ancestors as parents in xml/json
------------------------------------------------------------
revno: 20644
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2015-10-12 23:06:36 +0700
message:
expose ancestors as parents in xml/json
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.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/organisationunit/OrganisationUnit.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2015-10-05 17:45:17 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2015-10-12 16:06:36 +0000
@@ -28,21 +28,14 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import static org.hisp.dhis.common.NameableObjectUtils.getDisplayProperty;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
+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 com.google.common.base.Joiner;
+import com.google.common.collect.Sets;
import org.apache.commons.lang3.StringUtils;
import org.hisp.dhis.attribute.AttributeValue;
import org.hisp.dhis.common.BaseIdentifiableObject;
@@ -64,14 +57,20 @@
import org.hisp.dhis.schema.annotation.PropertyRange;
import org.hisp.dhis.user.User;
-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 com.google.common.base.Joiner;
-import com.google.common.collect.Sets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.hisp.dhis.common.NameableObjectUtils.getDisplayProperty;
/**
* @author Kristian Nordal
@@ -102,7 +101,7 @@
private String path;
private Integer hierarchyLevel;
-
+
private Date openingDate;
private Date closedDate;
@@ -586,6 +585,11 @@
* Returns the list of ancestor organisation units for this organisation unit.
* Does not include itself. The list is ordered by root first.
*/
+ @JsonProperty( "parents" )
+ @JsonSerialize( contentAs = BaseIdentifiableObject.class )
+ @JsonView( { DetailedView.class } )
+ @JacksonXmlElementWrapper( localName = "parents", namespace = DxfNamespaces.DXF_2_0 )
+ @JacksonXmlProperty( localName = "organisationUnit", namespace = DxfNamespaces.DXF_2_0 )
public List<OrganisationUnit> getAncestors()
{
List<OrganisationUnit> units = new ArrayList<>();
@@ -868,27 +872,27 @@
}
/**
- * Used by persistence layer. Purpose is to have a column for use in database
+ * Used by persistence layer. Purpose is to have a column for use in database
* queries. For application use see {@link getLevel()} which has better performance.
*/
public Integer getHierarchyLevel()
{
Set<String> uids = Sets.newHashSet( uid );
-
+
OrganisationUnit current = this;
-
- while ( ( current = current.getParent() ) != null )
+
+ while ( (current = current.getParent()) != null )
{
boolean add = uids.add( current.getUid() );
-
+
if ( !add )
{
break; // Protect against cyclic org unit graphs
}
}
-
+
hierarchyLevel = uids.size();
-
+
return hierarchyLevel;
}