← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 19555: get OU UIDs by parents/ouMode

 

------------------------------------------------------------
revno: 19555
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2015-07-07 12:22:43 +0700
message:
  get OU UIDs by parents/ouMode
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.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/OrganisationUnitService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java	2015-06-16 05:11:29 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java	2015-07-07 05:22:43 +0000
@@ -28,6 +28,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import org.hisp.dhis.common.OrganisationUnitSelectionMode;
 import org.hisp.dhis.hierarchy.HierarchyViolationException;
 
 import java.util.Collection;
@@ -70,7 +71,7 @@
      * Updates the version of the organisation unit hierarchy.
      */
     void updateOrganisationUnitVersion();
-    
+
     /**
      * Updates an OrganisationUnit.
      *
@@ -126,7 +127,7 @@
      * Returns all OrganisationUnits.
      *
      * @return a list of all OrganisationUnits, or an empty list if
-     *         there are no OrganisationUnits.
+     * there are no OrganisationUnits.
      */
     List<OrganisationUnit> getAllOrganisationUnits();
 
@@ -135,7 +136,7 @@
      *
      * @param active Get active or inactive
      * @return a list of all OrganisationUnits, or an empty list if
-     *         there are no OrganisationUnits.
+     * there are no OrganisationUnits.
      */
     List<OrganisationUnit> getAllOrganisationUnitsByStatus( boolean status );
 
@@ -144,7 +145,7 @@
      *
      * @param lastUpdated OrganisationUnits from this date
      * @return a list of all OrganisationUnits, or an empty list if
-     *         there are no OrganisationUnits.
+     * there are no OrganisationUnits.
      */
     List<OrganisationUnit> getAllOrganisationUnitsByLastUpdated( Date lastUpdated );
 
@@ -154,7 +155,7 @@
      * @param active      Get active or inactive
      * @param lastUpdated OrganisationUnits from this date
      * @return a list of all OrganisationUnits, or an empty list if
-     *         there are no OrganisationUnits.
+     * there are no OrganisationUnits.
      */
     List<OrganisationUnit> getAllOrganisationUnitsByStatusLastUpdated( boolean status, Date lastUpdated );
 
@@ -220,7 +221,7 @@
      * OrganisationUnit with no parent/the parent set to null.
      *
      * @return a list containing all root OrganisationUnits, or an empty
-     *         list if there are no OrganisationUnits.
+     * list if there are no OrganisationUnits.
      */
     List<OrganisationUnit> getRootOrganisationUnits();
 
@@ -241,34 +242,36 @@
     /**
      * Returns the intersection of the members of the given OrganisationUnitGroups
      * and the OrganisationUnits which are children of the given collection of
-     * parents in the hierarchy. If the given parent collection is null or empty, 
+     * parents in the hierarchy. If the given parent collection is null or empty,
      * the members of the group are returned.
-     * 
-     * @param groups the collection of OrganisationUnitGroups.
+     *
+     * @param groups  the collection of OrganisationUnitGroups.
      * @param parents the collection of OrganisationUnit parents in the hierarchy.
      * @return A list of OrganisationUnits.
      */
     List<OrganisationUnit> getOrganisationUnits( Collection<OrganisationUnitGroup> groups, Collection<OrganisationUnit> parents );
-    
+
+    Set<String> getOrganisationUnits( Set<String> parents, OrganisationUnitSelectionMode ouMode );
+
     /**
      * Returns an OrganisationUnit and all its children.
      *
      * @param uid the uid of the parent OrganisationUnit in the subtree.
      * @return a list containing the OrganisationUnit with the given id
-     *         and all its children, or an empty list if no
-     *         OrganisationUnits match.
+     * and all its children, or an empty list if no
+     * OrganisationUnits match.
      */
     List<OrganisationUnit> getOrganisationUnitWithChildren( String uid );
 
     /**
      * Returns an OrganisationUnit and all its children.
      *
-     * @param uid the uid of the parent OrganisationUnit in the subtree.
-     * @param maxLevels the max number of levels to return relative to 
-     *        the given root, inclusive.
+     * @param uid       the uid of the parent OrganisationUnit in the subtree.
+     * @param maxLevels the max number of levels to return relative to
+     *                  the given root, inclusive.
      * @return a list containing the OrganisationUnit with the given id
-     *         and all its children, or an empty list if no
-     *         OrganisationUnits match.
+     * and all its children, or an empty list if no
+     * OrganisationUnits match.
      */
     List<OrganisationUnit> getOrganisationUnitWithChildren( String uid, Integer maxLevels );
 
@@ -277,20 +280,20 @@
      *
      * @param id the id of the parent OrganisationUnit in the subtree.
      * @return a list containing the OrganisationUnit with the given id
-     *         and all its children, or an empty list if no
-     *         OrganisationUnits match.
+     * and all its children, or an empty list if no
+     * OrganisationUnits match.
      */
     List<OrganisationUnit> getOrganisationUnitWithChildren( int id );
 
     /**
      * Returns an OrganisationUnit and all its children.
      *
-     * @param id the id of the parent OrganisationUnit in the subtree.
-     * @param maxLevels the max number of levels to return relative to 
-     *        the given root, inclusive.
+     * @param id        the id of the parent OrganisationUnit in the subtree.
+     * @param maxLevels the max number of levels to return relative to
+     *                  the given root, inclusive.
      * @return a list containing the OrganisationUnit with the given id
-     *         and all its children, or an empty list if no
-     *         OrganisationUnits match.
+     * and all its children, or an empty list if no
+     * OrganisationUnits match.
      */
     List<OrganisationUnit> getOrganisationUnitWithChildren( int id, Integer maxLevels );
 
@@ -299,23 +302,23 @@
      *
      * @param uids the uids of the parent OrganisationUnits.
      * @return a list containing the OrganisationUnit with the given id
-     *         and all its children, or an empty list if no
-     *         OrganisationUnits match.
+     * and all its children, or an empty list if no
+     * OrganisationUnits match.
      */
     List<OrganisationUnit> getOrganisationUnitsWithChildren( Collection<String> uids );
 
     /**
      * Returns the OrganisationUnits and all their children.
      *
-     * @param uids the uids of the parent OrganisationUnits.
-     * @param maxLevels the max number of levels to return relative to 
-     *        the given root, inclusive.
+     * @param uids      the uids of the parent OrganisationUnits.
+     * @param maxLevels the max number of levels to return relative to
+     *                  the given root, inclusive.
      * @return a list containing the OrganisationUnit with the given id
-     *         and all its children, or an empty list if no
-     *         OrganisationUnits match.
+     * and all its children, or an empty list if no
+     * OrganisationUnits match.
      */
     List<OrganisationUnit> getOrganisationUnitsWithChildren( Collection<String> uids, Integer maxLevels );
-    
+
     /**
      * Returns the branch of OrganisationUnits from a root to a given
      * OrganisationUnit. Both root and target OrganisationUnits are included in
@@ -323,8 +326,8 @@
      *
      * @param id the id of the OrganisationUnit to trace upwards from.
      * @return the list of OrganisationUnits from a root to the given
-     *         OrganisationUnit, or an empty list if the given OrganisationUnit
-     *         doesn't exist.
+     * OrganisationUnit, or an empty list if the given OrganisationUnit
+     * doesn't exist.
      */
     List<OrganisationUnit> getOrganisationUnitBranch( int id );
 
@@ -334,7 +337,7 @@
      *
      * @param level the hierarchical level.
      * @return a list of all OrganisationUnits at a given hierarchical
-     *         level, or an empty list if the level is empty.
+     * level, or an empty list if the level is empty.
      * @throws IllegalArgumentException if the level is zero or negative.
      */
     List<OrganisationUnit> getOrganisationUnitsAtLevel( int level );
@@ -344,10 +347,10 @@
      * at the given hierarchical level. The root OrganisationUnits are at level 1.
      * If parent is null, then all OrganisationUnits at the given level are returned.
      *
-     * @param level the hierarchical level.
+     * @param level  the hierarchical level.
      * @param parent the parent unit.
      * @return all OrganisationUnits which are children of the given unit and are
-     *         at the given hierarchical level.
+     * at the given hierarchical level.
      * @throws IllegalArgumentException if the level is illegal.
      */
     List<OrganisationUnit> getOrganisationUnitsAtLevel( int level, OrganisationUnit parent );
@@ -360,11 +363,11 @@
      * @param levels the hierarchical levels.
      * @param parent the parent unit.
      * @return all OrganisationUnits which are children of the given unit and are
-     *         at the given hierarchical level.
+     * at the given hierarchical level.
      * @throws IllegalArgumentException if the level is illegal.
      */
     List<OrganisationUnit> getOrganisationUnitsAtLevels( Collection<Integer> levels, Collection<OrganisationUnit> parents );
-    
+
     /**
      * Returns all OrganisationUnits which are children of the given units and are
      * at the given hierarchical level. The root OrganisationUnits are at level 1.
@@ -373,7 +376,7 @@
      * @param level  the hierarchical level.
      * @param parent the parent units.
      * @return all OrganisationUnits which are children of the given units and are
-     *         at the given hierarchical level.
+     * at the given hierarchical level.
      * @throws IllegalArgumentException if the level is illegal.
      */
     List<OrganisationUnit> getOrganisationUnitsAtLevel( int level, Collection<OrganisationUnit> parents );
@@ -429,27 +432,25 @@
     List<OrganisationUnit> getOrganisationUnitsBetweenByStatusLastUpdated( boolean status, Date lastUpdated, int first, int max );
 
     Map<String, OrganisationUnit> getUuidOrganisationUnitMap();
-    
+
     /**
      * Retrieves all the org units within the distance from center location.
      *
-     * @param longitude        The longitude of the center location.
-     * @param latitude         The latitude of the center location.
-     * @param distance         The distance from center location.
-     * 
+     * @param longitude The longitude of the center location.
+     * @param latitude  The latitude of the center location.
+     * @param distance  The distance from center location.
      * @return a list of objects.
      */
     List<OrganisationUnit> getOrganisationUnitWithinDistance( double longitude, double latitude, double distance );
 
     /**
      * Retrieves the orgunit(s) by coordinate.
-     * 
-     * @param longitude The longitude of the location.
-     * @param latitude The latitude of the location.
+     *
+     * @param longitude     The longitude of the location.
+     * @param latitude      The latitude of the location.
      * @param topOrgUnitUid Optional. Uid of the search top level org unit (ex.
-     *        Country level orgunit)
-     * @param targetLevel Optional. The level being searched.
-     * 
+     *                      Country level orgunit)
+     * @param targetLevel   Optional. The level being searched.
      * @return list of objects.
      */
     List<OrganisationUnit> getOrganisationUnitByCoordinate( double longitude, double latitude, String topOrgUnitUid,
@@ -458,7 +459,7 @@
     /**
      * Indicates whether the given organisation unit is part of the hierarchy
      * of the organisation units of the current user.
-     * 
+     *
      * @param organisationUnit the organisation unit.
      * @return true if the given organisation unit is part of the hierarchy.
      */
@@ -467,14 +468,14 @@
     /**
      * Indicates whether the given organisation unit is part of the hierarchy
      * of the given user organisation units.
-     * 
-     * @param uid the uid of the organisation unit.
-     * @param organisationUnits the set of organisation units associated with a 
-     *        user.
+     *
+     * @param uid               the uid of the organisation unit.
+     * @param organisationUnits the set of organisation units associated with a
+     *                          user.
      * @return true if the organisation unit with the given uid is part of the hierarchy.
      */
     boolean isInUserHierarchy( String uid, Set<OrganisationUnit> organisationUnits );
-    
+
     // -------------------------------------------------------------------------
     // OrganisationUnitHierarchy
     // -------------------------------------------------------------------------
@@ -529,11 +530,11 @@
     int getNumberOfOrganisationUnits();
 
     int getMaxOfOrganisationUnitLevels();
-    
+
     /**
      * Return the number of organisation unit levels to cache offline, e.g. for
      * organisation unit tree. Looks for level to return in the following order:
-     * 
+     * <p/>
      * <ul>
      * <li>Get level of organisation unit of the current user.</li>
      * <li>Get level from system configuration.</li>

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java	2015-06-16 05:11:29 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java	2015-07-07 05:22:43 +0000
@@ -28,23 +28,12 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static org.hisp.dhis.common.IdentifiableObjectUtils.getUids;
-import static org.hisp.dhis.i18n.I18nUtils.i18n;
-
-import java.awt.geom.Point2D;
-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.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import org.hisp.dhis.common.IdentifiableObjectUtils;
+import org.hisp.dhis.common.OrganisationUnitSelectionMode;
 import org.hisp.dhis.commons.filter.Filter;
+import org.hisp.dhis.commons.filter.FilterUtils;
 import org.hisp.dhis.configuration.ConfigurationService;
 import org.hisp.dhis.hierarchy.HierarchyViolationException;
 import org.hisp.dhis.i18n.I18nService;
@@ -54,12 +43,23 @@
 import org.hisp.dhis.system.util.ValidationUtils;
 import org.hisp.dhis.user.CurrentUserService;
 import org.hisp.dhis.user.User;
-import org.hisp.dhis.commons.filter.FilterUtils;
 import org.hisp.dhis.version.VersionService;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
+import java.awt.geom.Point2D;
+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.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.hisp.dhis.common.IdentifiableObjectUtils.getUids;
+import static org.hisp.dhis.i18n.I18nUtils.i18n;
 
 /**
  * @author Torgeir Lorange Ostby
@@ -131,16 +131,16 @@
 
             currentUserService.getCurrentUser().getOrganisationUnits().add( organisationUnit );
         }
-        
+
         return id;
     }
 
     @Override
     public void updateOrganisationUnit( OrganisationUnit organisationUnit )
     {
-        organisationUnitStore.update( organisationUnit );        
+        organisationUnitStore.update( organisationUnit );
     }
-    
+
     @Override
     public void updateOrganisationUnitVersion()
     {
@@ -197,7 +197,7 @@
     @Override
     public List<OrganisationUnit> getAllOrganisationUnitsByLastUpdated( Date lastUpdated )
     {
-        return i18n( i18nService,  organisationUnitStore.getAllOrganisationUnitsByLastUpdated( lastUpdated ) );
+        return i18n( i18nService, organisationUnitStore.getAllOrganisationUnitsByLastUpdated( lastUpdated ) );
     }
 
     @Override
@@ -286,7 +286,7 @@
     @Override
     public List<OrganisationUnit> getRootOrganisationUnits()
     {
-        return i18n( i18nService, organisationUnitStore.getRootOrganisationUnits());
+        return i18n( i18nService, organisationUnitStore.getRootOrganisationUnits() );
     }
 
     @Override
@@ -322,6 +322,40 @@
     }
 
     @Override
+    public Set<String> getOrganisationUnits( Set<String> parents, OrganisationUnitSelectionMode ouMode )
+    {
+        List<OrganisationUnit> ouParents = new ArrayList<>( organisationUnitStore.getByUid( parents ) );
+        Set<String> ou = new HashSet<>();
+        User user = currentUserService.getCurrentUser();
+
+        if ( user != null && OrganisationUnitSelectionMode.ACCESSIBLE == ouMode )
+        {
+            ouParents = new ArrayList<>( user.getDataViewOrganisationUnitsWithFallback() );
+            ouMode = OrganisationUnitSelectionMode.DESCENDANTS;
+        }
+
+        for ( OrganisationUnit organisationUnit : ouParents )
+        {
+            if ( OrganisationUnitSelectionMode.DESCENDANTS == ouMode )
+            {
+                ou.add( organisationUnit.getUid() );
+                ou.addAll( getUids( getOrganisationUnitWithChildren( organisationUnit.getUid() ) ) );
+            }
+            else if ( OrganisationUnitSelectionMode.CHILDREN == ouMode )
+            {
+                ou.add( organisationUnit.getUid() );
+                ou.addAll( getUids( organisationUnit.getChildren() ) );
+            }
+            else // SELECTED
+            {
+                ou.add( organisationUnit.getUid() );
+            }
+        }
+
+        return ou;
+    }
+
+    @Override
     public List<OrganisationUnit> getOrganisationUnitsWithChildren( Collection<String> parentUids )
     {
         return getOrganisationUnitsWithChildren( parentUids, null );
@@ -350,9 +384,9 @@
     public List<OrganisationUnit> getOrganisationUnitWithChildren( String uid, Integer maxLevels )
     {
         OrganisationUnit unit = getOrganisationUnit( uid );
-        
+
         int id = unit != null ? unit.getId() : -1;
-        
+
         return getOrganisationUnitWithChildren( id, maxLevels );
     }
 
@@ -361,7 +395,7 @@
     {
         return getOrganisationUnitWithChildren( id, null );
     }
-    
+
     @Override
     public List<OrganisationUnit> getOrganisationUnitWithChildren( int id, Integer maxLevels )
     {
@@ -371,7 +405,7 @@
         {
             return new ArrayList<>();
         }
-        
+
         if ( maxLevels != null && maxLevels <= 0 )
         {
             return new ArrayList<>();
@@ -384,8 +418,8 @@
         organisationUnit.setLevel( rootLevel );
         result.add( organisationUnit );
 
-        final Integer maxLevel = maxLevels != null ? ( rootLevel + maxLevels - 1 ) : null;
-        
+        final Integer maxLevel = maxLevels != null ? (rootLevel + maxLevels - 1) : null;
+
         addOrganisationUnitChildren( organisationUnit, result, rootLevel, maxLevel );
 
         return result;
@@ -401,7 +435,7 @@
         {
             level++;
         }
-        
+
         if ( maxLevel != null && level > maxLevel )
         {
             return;
@@ -611,7 +645,7 @@
 
         if ( parent == null )
         {
-            return new ArrayList<OrganisationUnit>(result);
+            return new ArrayList<OrganisationUnit>( result );
         }
 
         final Set<OrganisationUnit> subTree = new HashSet<>( getOrganisationUnitWithChildren( parent.getId() ) );
@@ -652,7 +686,7 @@
 
     /**
      * Retains only the data sets from the map which the current user has access to.
-     * 
+     *
      * @param associationMap the associations between organisation unit and data sets.
      */
     private void filterUserDataSets( Map<String, Set<String>> associationMap )
@@ -672,10 +706,10 @@
 
     /**
      * Retains only the organisation units in the sub-tree of the current user.
-     * 
+     *
      * @param associationMap the associations between organisation unit and data sets.
-     * @param maxLevels the maximum number of levels to include relative to 
-     *        current user, inclusive.
+     * @param maxLevels      the maximum number of levels to include relative to
+     *                       current user, inclusive.
      */
     private void filterChildOrganisationUnits( Map<String, Set<String>> associationMap, Integer maxLevels )
     {
@@ -686,7 +720,7 @@
             Collection<String> parentIds = getUids( currentUser.getOrganisationUnits() );
 
             Collection<OrganisationUnit> organisationUnitsWithChildren = getOrganisationUnitsWithChildren( parentIds, maxLevels );
-            
+
             Collection<String> children = getUids( organisationUnitsWithChildren );
 
             associationMap.keySet().retainAll( children );
@@ -711,7 +745,7 @@
     @Override
     public List<OrganisationUnit> getOrganisationUnitsBetween( int first, int max )
     {
-        return i18n( i18nService,  organisationUnitStore.getAllOrderedName( first, max ) );
+        return i18n( i18nService, organisationUnitStore.getAllOrderedName( first, max ) );
     }
 
     @Override
@@ -736,21 +770,21 @@
     public List<OrganisationUnit> getOrganisationUnitsBetweenByStatusLastUpdated( boolean status,
         Date lastUpdated, int first, int max )
     {
-        return i18n( i18nService, organisationUnitStore.getBetweenByStatusLastUpdated( status, lastUpdated, first, max ));
+        return i18n( i18nService, organisationUnitStore.getBetweenByStatusLastUpdated( status, lastUpdated, first, max ) );
     }
 
     @Override
     public Map<String, OrganisationUnit> getUuidOrganisationUnitMap()
     {
         Map<String, OrganisationUnit> map = new HashMap<>();
-        
+
         Collection<OrganisationUnit> organisationUnits = getAllOrganisationUnits();
-        
+
         for ( OrganisationUnit organisationUnit : organisationUnits )
         {
             map.put( organisationUnit.getUuid(), organisationUnit );
         }
-        
+
         return map;
     }
 
@@ -758,7 +792,7 @@
     public boolean isInUserHierarchy( OrganisationUnit organisationUnit )
     {
         User user = currentUserService.getCurrentUser();
-        
+
         return user != null ? user.isInUserHierarchy( organisationUnit ) : false;
     }
 
@@ -766,10 +800,10 @@
     public boolean isInUserHierarchy( String uid, Set<OrganisationUnit> organisationUnits )
     {
         OrganisationUnit organisationUnit = organisationUnitStore.getByUid( uid );
-        
+
         return User.isInUserHierarchy( organisationUnit, organisationUnits );
     }
-    
+
     // -------------------------------------------------------------------------
     // OrganisationUnitHierarchy
     // -------------------------------------------------------------------------
@@ -926,7 +960,7 @@
 
         return levelMap;
     }
-    
+
     @Override
     public int getNumberOfOrganisationUnits()
     {
@@ -947,15 +981,15 @@
         // ---------------------------------------------------------------------
 
         User user = currentUserService.getCurrentUser();
-        
+
         if ( user != null && user.hasOrganisationUnit() )
         {
             OrganisationUnit organisationUnit = user.getOrganisationUnit();
-            
+
             int level = getLevelOfOrganisationUnit( organisationUnit.getId() );
-            
+
             OrganisationUnitLevel orgUnitLevel = getOrganisationUnitLevelByLevel( level );
-            
+
             if ( orgUnitLevel != null && orgUnitLevel.getOfflineLevels() != null )
             {
                 return orgUnitLevel.getOfflineLevels();
@@ -967,7 +1001,7 @@
         // ---------------------------------------------------------------------
 
         OrganisationUnitLevel level = configurationService.getConfiguration().getOfflineOrganisationUnitLevel();
-        
+
         if ( level != null )
         {
             return level.getLevel();
@@ -980,7 +1014,7 @@
         int max = getOrganisationUnitLevels().size();
 
         OrganisationUnitLevel maxLevel = getOrganisationUnitLevelByLevel( max );
-        
+
         if ( maxLevel != null )
         {
             return maxLevel.getLevel();
@@ -1004,7 +1038,7 @@
             longitude, latitude, distance ) );
 
         // Go through the list and remove the ones located outside radius
-        
+
         if ( objects != null && objects.size() > 0 )
         {
             Iterator<OrganisationUnit> iter = objects.iterator();
@@ -1048,7 +1082,7 @@
             else
             {
                 // Get top search point through top level org unit which contains coordinate
-                
+
                 Collection<OrganisationUnit> orgUnitsTopLevel = getTopLevelOrgUnitWithPoint( longitude, latitude, 1,
                     getNumberOfOrganisationalLevels() - 1 );
 
@@ -1059,7 +1093,7 @@
             }
 
             // Search children org units to get the lowest level org unit that contains coordinate
-            
+
             if ( topOrgUnit != null )
             {
                 Collection<OrganisationUnit> orgUnitChildren = new ArrayList<>();
@@ -1074,9 +1108,9 @@
                 }
 
                 FilterUtils.filter( orgUnitChildren, new OrganisationUnitPolygonCoveringCoordinateFilter( longitude, latitude ) );
-                
+
                 // Get org units with lowest level
-                
+
                 int bottomLevel = topOrgUnit.getLevel();
 
                 for ( OrganisationUnit ou : orgUnitChildren )
@@ -1117,14 +1151,14 @@
     /**
      * Searches organisation units until finding one with polygon containing point.
      */
-    private List<OrganisationUnit> getTopLevelOrgUnitWithPoint( double longitude, double latitude, 
+    private List<OrganisationUnit> getTopLevelOrgUnitWithPoint( double longitude, double latitude,
         int searchLevel, int stopLevel )
     {
         for ( int i = searchLevel; i <= stopLevel; i++ )
         {
             List<OrganisationUnit> unitsAtLevel = new ArrayList<>( getOrganisationUnitsAtLevel( i ) );
             FilterUtils.filter( unitsAtLevel, new OrganisationUnitPolygonCoveringCoordinateFilter( longitude, latitude ) );
-            
+
             if ( unitsAtLevel.size() > 0 )
             {
                 return unitsAtLevel;