=== modified file 'dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java' --- dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java 2010-08-26 16:20:21 +0000 +++ dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java 2010-08-28 10:27:45 +0000 @@ -162,17 +162,20 @@ for ( OrganisationUnit organisationUnit : parent.getChildren() ) { - Double value = aggregationService.getAggregatedDataValue( dataElement, null, period.getStartDate(), period.getEndDate(), organisationUnit ); - - value = value != null ? value : 0; // TODO improve - - AggregatedMapValue mapValue = new AggregatedMapValue(); - mapValue.setOrganisationUnitId( organisationUnit.getId() ); - mapValue.setOrganisationUnitName( organisationUnit.getName() ); - mapValue.setPeriodId( period.getId() ); - mapValue.setValue( MathUtils.getRounded( value, 2 ) ); - - values.add( mapValue ); + if ( organisationUnit.hasCoordinates() ) + { + Double value = aggregationService.getAggregatedDataValue( dataElement, null, period.getStartDate(), period.getEndDate(), organisationUnit ); + + value = value != null ? value : 0; // TODO improve + + AggregatedMapValue mapValue = new AggregatedMapValue(); + mapValue.setOrganisationUnitId( organisationUnit.getId() ); + mapValue.setOrganisationUnitName( organisationUnit.getName() ); + mapValue.setPeriodId( period.getId() ); + mapValue.setValue( MathUtils.getRounded( value, 2 ) ); + + values.add( mapValue ); + } } return values; @@ -226,20 +229,23 @@ OrganisationUnit parent = organisationUnitService.getOrganisationUnit( parentOrganisationUnitId ); Indicator indicator = indicatorService.getIndicator( indicatorId ); Period period = periodService.getPeriod( periodId ); - + for ( OrganisationUnit organisationUnit : parent.getChildren() ) { - Double value = aggregationService.getAggregatedIndicatorValue( indicator, period.getStartDate(), period.getEndDate(), organisationUnit ); - - value = value != null ? value : 0; // TODO improve - - AggregatedMapValue mapValue = new AggregatedMapValue(); - mapValue.setOrganisationUnitId( organisationUnit.getId() ); - mapValue.setOrganisationUnitName( organisationUnit.getName() ); - mapValue.setPeriodId( period.getId() ); - mapValue.setValue( MathUtils.getRounded( value, 2 ) ); - - values.add( mapValue ); + if ( organisationUnit.hasCoordinates() ) + { + Double value = aggregationService.getAggregatedIndicatorValue( indicator, period.getStartDate(), period.getEndDate(), organisationUnit ); + + value = value != null ? value : 0; // TODO improve + + AggregatedMapValue mapValue = new AggregatedMapValue(); + mapValue.setOrganisationUnitId( organisationUnit.getId() ); + mapValue.setOrganisationUnitName( organisationUnit.getName() ); + mapValue.setPeriodId( period.getId() ); + mapValue.setValue( MathUtils.getRounded( value, 2 ) ); + + values.add( mapValue ); + } } return values; === added file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/filter/OrganisationUnitWithCoordinatesFilter.java' --- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/filter/OrganisationUnitWithCoordinatesFilter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/filter/OrganisationUnitWithCoordinatesFilter.java 2010-08-28 10:27:45 +0000 @@ -0,0 +1,44 @@ +package org.hisp.dhis.system.filter; + +/* + * Copyright (c) 2004-2010, 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.organisationunit.OrganisationUnit; +import org.hisp.dhis.system.util.Filter; + +/** + * @author Lars Helge Overland + */ +public class OrganisationUnitWithCoordinatesFilter + implements Filter +{ + @Override + public boolean retain( OrganisationUnit object ) + { + return object != null && object.hasCoordinates(); + } +} === modified file 'dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetOrganisationUnitsWithCoordinatesAction.java' --- dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetOrganisationUnitsWithCoordinatesAction.java 2010-08-05 12:26:30 +0000 +++ dhis-2/dhis-web/dhis-web-mapping/src/main/java/org/hisp/dhis/mapping/action/GetOrganisationUnitsWithCoordinatesAction.java 2010-08-28 10:27:45 +0000 @@ -28,9 +28,12 @@ */ import java.util.Collection; +import java.util.HashSet; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.hisp.dhis.system.filter.OrganisationUnitWithCoordinatesFilter; +import org.hisp.dhis.system.util.FilterUtils; import com.opensymphony.xwork2.Action; @@ -83,7 +86,9 @@ { OrganisationUnit parent = organisationUnitService.getOrganisationUnit( parentId ); - object = parent.getChildren(); + object = new HashSet( parent.getChildren() ); + + FilterUtils.filter( object, new OrganisationUnitWithCoordinatesFilter() ); return parent.getChildrenFeatureType(); }