=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/User.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/User.java 2016-02-11 09:27:02 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/User.java 2016-03-02 15:49:46 +0000 @@ -111,6 +111,12 @@ */ @Scanned private Set dataViewOrganisationUnits = new HashSet<>(); + + /** + * Organisation units for tracked entity instance search operations. + */ + @Scanned + private Set teiSearchOrganisationUnits = new HashSet<>(); /** * Ordered favorite apps. @@ -202,6 +208,10 @@ return !CollectionUtils.isEmpty( organisationUnits ); } + // ------------------------------------------------------------------------- + // Logic - data view organisation unit + // ------------------------------------------------------------------------- + public boolean hasDataViewOrganisationUnit() { return !CollectionUtils.isEmpty( dataViewOrganisationUnits ); @@ -234,6 +244,44 @@ { return hasDataViewOrganisationUnit() ? dataViewOrganisationUnits : organisationUnits; } + + // ------------------------------------------------------------------------- + // Logic - tei search organisation unit + // ------------------------------------------------------------------------- + + public boolean hasTeiSearchOrganisationUnit() + { + return !CollectionUtils.isEmpty( teiSearchOrganisationUnits ); + } + + public OrganisationUnit getTeiSearchOrganisationUnit() + { + return CollectionUtils.isEmpty( teiSearchOrganisationUnits ) ? null : teiSearchOrganisationUnits.iterator().next(); + } + + public boolean hasTeiSearchOrganisationUnitWithFallback() + { + return hasTeiSearchOrganisationUnit() || hasOrganisationUnit(); + } + + /** + * Returns the first of the tei search organisation units associated with the + * user. If none, returns the first of the data capture organisation units. + * If none, return nulls. + */ + public OrganisationUnit getTeiSearchOrganisationUnitWithFallback() + { + return hasTeiSearchOrganisationUnit() ? getTeiSearchOrganisationUnit() : getOrganisationUnit(); + } + + /** + * Returns the tei search organisation units or organisation units if not exist. + */ + public Set getTeiSearchOrganisationUnitsWithFallback() + { + return hasTeiSearchOrganisationUnit() ? teiSearchOrganisationUnits : organisationUnits; + } + public String getOrganisationUnitsName() { @@ -609,6 +657,21 @@ public void setDataViewOrganisationUnits( Set dataViewOrganisationUnits ) { this.dataViewOrganisationUnits = dataViewOrganisationUnits; + } + + @JsonProperty + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlElementWrapper( localName = "teiSearchOrganisationUnits", namespace = DxfNamespaces.DXF_2_0 ) + @JacksonXmlProperty( localName = "teiSearchOrganisationUnit", namespace = DxfNamespaces.DXF_2_0 ) + public Set getTeiSearchOrganisationUnits() + { + return teiSearchOrganisationUnits; + } + + public void setTeiSearchOrganisationUnits( Set teiSearchOrganisationUnits ) + { + this.teiSearchOrganisationUnits = teiSearchOrganisationUnits; } public List getApps() @@ -672,6 +735,9 @@ dataViewOrganisationUnits.clear(); dataViewOrganisationUnits.addAll( user.getDataViewOrganisationUnits() ); + + teiSearchOrganisationUnits.clear(); + teiSearchOrganisationUnits.addAll( user.getTeiSearchOrganisationUnits() ); } } @@ -702,6 +768,7 @@ "\"groups\":\"" + groups + "\", " + "\"organisationUnits\":\"" + organisationUnits + "\", " + "\"dataViewOrganisationUnits\":\"" + dataViewOrganisationUnits + "\" " + + "\"teiSearchOrganisationUnits\":\"" + teiSearchOrganisationUnits + "\" " + "}"; } } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/user/hibernate/User.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/user/hibernate/User.hbm.xml 2015-11-23 06:52:49 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/user/hibernate/User.hbm.xml 2016-03-02 15:49:46 +0000 @@ -69,7 +69,14 @@ - + + + + + + +