=== 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 2013-02-13 03:57:52 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2013-02-19 13:19:21 +0000 @@ -594,11 +594,16 @@ return name.equals( other.getName() ); } + @Override + public String toString() + { + return "[" + name + "]"; + } + // ------------------------------------------------------------------------- // Getters and setters // ------------------------------------------------------------------------- - @Override public boolean haveUniqueNames() { === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/Program.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/Program.java 2013-02-19 06:54:22 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/Program.java 2013-02-19 13:19:21 +0000 @@ -27,12 +27,10 @@ package org.hisp.dhis.program; -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 java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.apache.commons.lang.StringUtils; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.DxfNamespaces; @@ -43,13 +41,14 @@ import org.hisp.dhis.patient.PatientAttribute; import org.hisp.dhis.patient.PatientIdentifierType; import org.hisp.dhis.user.UserAuthorityGroup; -import org.hisp.dhis.user.comparator.UserRoleComparator; import org.hisp.dhis.validation.ValidationCriteria; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +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; /** * @author Abyot Asalefew === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsIndex.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsIndex.java 2013-02-19 10:56:48 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsIndex.java 2013-02-19 13:19:21 +0000 @@ -1,5 +1,32 @@ package org.hisp.dhis.analytics; +/* + * Copyright (c) 2004-2012, 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. + */ + public class AnalyticsIndex { private String table; === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2013-02-14 13:25:21 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2013-02-19 13:19:21 +0000 @@ -130,23 +130,6 @@ removeDimension( CATEGORYOPTIONCOMBO_DIM_ID ); } } - - /** - * Returns the index of the category option combo dimension as it will appear - * in the data element query. Returns null if this query does not contain - * the category option combo dimension. Currently unused. - */ - public Integer getDeQueryCocIndex() - { - List list = new ArrayList( dimensions ); - - list.remove( new Dimension( INDICATOR_DIM_ID ) ); - list.remove( new Dimension( DATASET_DIM_ID ) ); - - int index = list.indexOf( new Dimension( CATEGORYOPTIONCOMBO_DIM_ID ) ); - - return index == -1 ? null : index; - } /** * Creates a list of dimensions for use as headers. Will replace any of @@ -175,7 +158,7 @@ return list; } - + /** * Creates a list of dimensions used to query. */ === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-02-19 09:29:27 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-02-19 13:19:21 +0000 @@ -97,7 +97,7 @@ private static final Log log = LogFactory.getLog( DefaultAnalyticsService.class ); private static final String VALUE_HEADER_NAME = "Value"; - private static final int MAX_QUERIES = 6; + private static final int MAX_QUERIES = 6; //TODO increase? //TODO completeness //TODO make sure data x dims are successive === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultQueryPlanner.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultQueryPlanner.java 2013-02-19 09:59:26 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultQueryPlanner.java 2013-02-19 13:19:21 +0000 @@ -167,20 +167,18 @@ // Group by data element // --------------------------------------------------------------------- - //TODO change order + queries = splitByDimensionOrFilter( queries, DataQueryParams.DATAELEMENT_DIM_ID, optimalQueries ); + + if ( queries.size() >= optimalQueries ) + { + return queries; + } + + // --------------------------------------------------------------------- + // Group by organisation unit + // --------------------------------------------------------------------- queries = splitByDimensionOrFilter( queries, DataQueryParams.ORGUNIT_DIM_ID, optimalQueries ); - - if ( queries.size() >= optimalQueries ) - { - return queries; - } - - // --------------------------------------------------------------------- - // Group by organiastion unit - // --------------------------------------------------------------------- - - queries = splitByDimensionOrFilter( queries, DataQueryParams.DATAELEMENT_DIM_ID, optimalQueries ); return queries; } === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/QueryPlannerTest.java' --- dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/QueryPlannerTest.java 2013-02-19 09:59:26 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/QueryPlannerTest.java 2013-02-19 13:19:21 +0000 @@ -323,7 +323,7 @@ /** * Query spans 2 partitions. Splits in 2 queries for each partition, then - * splits in 2 queries on organisation units to satisfy optimal for a total + * splits in 2 queries on data elements to satisfy optimal for a total * of 4 queries. */ @Test @@ -355,7 +355,7 @@ public void planQueryB() { DataQueryParams params = new DataQueryParams(); - params.setDataElements( getList( deA, deB, deC, deD ) ); + params.setDataElements( getList( deA ) ); params.setOrganisationUnits( getList( ouA, ouB, ouC, ouD, ouE ) ); params.setPeriods( getList( createPeriod( "2000Q1" ), createPeriod( "2000Q2" ), createPeriod( "2000" ), createPeriod( "200002" ), createPeriod( "200003" ), createPeriod( "200004" ) ) ); @@ -394,7 +394,7 @@ organisationUnitService.updateOrganisationUnit( ouE ); DataQueryParams params = new DataQueryParams(); - params.setDataElements( getList( deA, deB, deC, deD ) ); + params.setDataElements( getList( deA ) ); params.setOrganisationUnits( getList( ouA, ouB, ouC, ouD, ouE ) ); params.setPeriods( getList( createPeriod( "2000Q1" ), createPeriod( "2000Q2" ), createPeriod( "2000Q3" ) ) ); @@ -495,7 +495,7 @@ /** * Query filters span 2 partitions. Splits in 2 queries for each partition, - * then splits in 2 queries on organisation units to satisfy optimal for a + * then splits in 2 queries on data elements to satisfy optimal for a * total of 4 queries. */ @Test