=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java' --- dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java 2015-09-23 16:56:18 +0000 +++ dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java 2015-09-23 17:15:50 +0000 @@ -55,7 +55,7 @@ private String sqlA = "SELECT * FROM _categorystructure;; ; ;;; ;; ; "; - private String sqlB = "SELECT COUNT(_ous.*) AS so_dem FROM _orgunitstructure AS _ous"; + private String sqlB = "SELECT COUNT(*) from organisationunit;"; private String sqlC = "SELECT COUNT(_cocn.*) AS so_dem, _icgss.indicatorid AS in_id" + "FROM _indicatorgroupsetstructure AS _icgss, categoryoptioncombo AS _cocn " === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataExportParams.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataExportParams.java 2015-07-07 13:16:25 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataExportParams.java 2015-09-23 17:15:50 +0000 @@ -63,15 +63,6 @@ private IdSchemes idSchemes; // ------------------------------------------------------------------------- - // Transient properties - // ------------------------------------------------------------------------- - - /** - * Organisation units originally part of the request, excluding children. - */ - private transient Set requestOrganisationUnits = new HashSet<>(); - - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -114,15 +105,6 @@ } /** - * Sets the request organisation units to the currently selected - * organisation units. - */ - public void setRequestOrganisationUnits() - { - this.requestOrganisationUnits.addAll( organisationUnits ); - } - - /** * Indicates whether this parameters represents a single data value set, implying * that it contains exactly one of data sets, periods and organisation units. */ @@ -235,14 +217,4 @@ { this.idSchemes = idSchemes; } - - public Set getRequestOrganisationUnits() - { - return requestOrganisationUnits; - } - - public void setRequestOrganisationUnits( Set requestOrganisationUnits ) - { - this.requestOrganisationUnits = requestOrganisationUnits; - } } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2015-09-03 03:11:47 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2015-09-23 17:15:50 +0000 @@ -29,13 +29,17 @@ */ import static org.apache.commons.lang3.StringUtils.trimToNull; -import static org.hisp.dhis.common.IdentifiableObjectUtils.getUids; import static org.hisp.dhis.common.IdentifiableProperty.UUID; +import static org.hisp.dhis.setting.SystemSettingManager.KEY_DATA_IMPORT_REQUIRE_ATTRIBUTE_OPTION_COMBO; +import static org.hisp.dhis.setting.SystemSettingManager.KEY_DATA_IMPORT_REQUIRE_CATEGORY_OPTION_COMBO; +import static org.hisp.dhis.setting.SystemSettingManager.KEY_DATA_IMPORT_STRICT_ATTRIBUTE_OPTION_COMBOS; +import static org.hisp.dhis.setting.SystemSettingManager.KEY_DATA_IMPORT_STRICT_CATEGORY_OPTION_COMBOS; +import static org.hisp.dhis.setting.SystemSettingManager.KEY_DATA_IMPORT_STRICT_ORGANISATION_UNITS; +import static org.hisp.dhis.setting.SystemSettingManager.KEY_DATA_IMPORT_STRICT_PERIODS; import static org.hisp.dhis.system.notification.NotificationLevel.ERROR; import static org.hisp.dhis.system.notification.NotificationLevel.INFO; import static org.hisp.dhis.system.util.DateUtils.getDefaultDate; import static org.hisp.dhis.system.util.DateUtils.parseDate; -import static org.hisp.dhis.setting.SystemSettingManager.*; import java.io.InputStream; import java.io.OutputStream; @@ -43,7 +47,6 @@ import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -189,13 +192,6 @@ if ( organisationUnits != null ) { params.getOrganisationUnits().addAll( identifiableObjectManager.getByUid( OrganisationUnit.class, organisationUnits ) ); - params.setRequestOrganisationUnits(); - - if ( includeChildren ) - { - params.getOrganisationUnits().addAll( new HashSet<>( - organisationUnitService.getOrganisationUnitsWithChildren( getUids( params.getOrganisationUnits() ) ) ) ); - } } params.setIncludeChildren( includeChildren ); @@ -231,7 +227,7 @@ violation = "Start date must be before end date"; } - if ( params.getRequestOrganisationUnits().isEmpty() ) + if ( params.getOrganisationUnits().isEmpty() ) { violation = "At least one valid organisation unit must be specified"; } @@ -252,7 +248,7 @@ @Override public void decideAccess( DataExportParams params ) { - for ( OrganisationUnit unit : params.getRequestOrganisationUnits() ) + for ( OrganisationUnit unit : params.getOrganisationUnits() ) { if ( !organisationUnitService.isInUserHierarchy( unit ) ) { === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/SpringDataValueSetStore.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/SpringDataValueSetStore.java 2015-06-16 18:30:37 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/SpringDataValueSetStore.java 2015-09-23 17:15:50 +0000 @@ -46,10 +46,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.calendar.Calendar; +import org.hisp.dhis.commons.util.TextUtils; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dxf2.common.IdSchemes; import org.hisp.dhis.dxf2.datavalue.DataValue; +import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.PeriodType; import org.hisp.dhis.system.util.DateUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -191,8 +193,23 @@ "join organisationunit ou on (dv.sourceid=ou.organisationunitid) " + "join categoryoptioncombo coc on (dv.categoryoptioncomboid=coc.categoryoptioncomboid) " + "join categoryoptioncombo aoc on (dv.attributeoptioncomboid=aoc.categoryoptioncomboid) " + - "where de.dataelementid in (" + getCommaDelimitedString( getIdentifiers( getDataElements( params.getDataSets() ) ) ) + ") " + - "and dv.sourceid in (" + getCommaDelimitedString( getIdentifiers( params.getOrganisationUnits() ) ) + ") "; + "where de.dataelementid in (" + getCommaDelimitedString( getIdentifiers( getDataElements( params.getDataSets() ) ) ) + ") "; + + if ( params.isIncludeChildren() ) + { + sql += "and ("; + + for ( OrganisationUnit parent : params.getOrganisationUnits() ) + { + sql += "ou.path like '%" + parent.getUid() + "%' or "; + } + + sql = TextUtils.removeLastOr( sql ) + ")"; + } + else + { + sql += "and dv.sourceid in (" + getCommaDelimitedString( getIdentifiers( params.getOrganisationUnits() ) ) + ") "; + } if ( params.hasStartEndDate() ) {