=== 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 2015-03-04 16:26:17 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2015-03-04 17:49:02 +0000 @@ -28,6 +28,55 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import static org.hisp.dhis.analytics.AnalyticsTableManager.ANALYTICS_TABLE_NAME; +import static org.hisp.dhis.analytics.AnalyticsTableManager.COMPLETENESS_TABLE_NAME; +import static org.hisp.dhis.analytics.AnalyticsTableManager.COMPLETENESS_TARGET_TABLE_NAME; +import static org.hisp.dhis.analytics.AnalyticsTableManager.ORGUNIT_TARGET_TABLE_NAME; +import static org.hisp.dhis.analytics.DataQueryParams.DISPLAY_NAME_CATEGORYOPTIONCOMBO; +import static org.hisp.dhis.analytics.DataQueryParams.DISPLAY_NAME_DATA_X; +import static org.hisp.dhis.analytics.DataQueryParams.DISPLAY_NAME_LATITUDE; +import static org.hisp.dhis.analytics.DataQueryParams.DISPLAY_NAME_LONGITUDE; +import static org.hisp.dhis.analytics.DataQueryParams.DISPLAY_NAME_ORGUNIT; +import static org.hisp.dhis.analytics.DataQueryParams.DISPLAY_NAME_PERIOD; +import static org.hisp.dhis.analytics.DataQueryParams.KEY_DE_GROUP; +import static org.hisp.dhis.common.DimensionalObject.CATEGORYOPTIONCOMBO_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.DATAELEMENT_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.DATASET_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.DATA_X_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.DIMENSION_SEP; +import static org.hisp.dhis.common.DimensionalObject.INDICATOR_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.LATITUDE_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.LONGITUDE_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.ORGUNIT_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.PERIOD_DIM_ID; +import static org.hisp.dhis.common.DimensionalObjectUtils.toDimension; +import static org.hisp.dhis.common.IdentifiableObjectUtils.getLocalPeriodIdentifier; +import static org.hisp.dhis.common.IdentifiableObjectUtils.getLocalPeriodIdentifiers; +import static org.hisp.dhis.common.IdentifiableObjectUtils.getUids; +import static org.hisp.dhis.common.NameableObjectUtils.asList; +import static org.hisp.dhis.common.NameableObjectUtils.asTypedList; +import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_LEVEL; +import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_ORGUNIT_GROUP; +import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_USER_ORGUNIT; +import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_USER_ORGUNIT_CHILDREN; +import static org.hisp.dhis.organisationunit.OrganisationUnit.KEY_USER_ORGUNIT_GRANDCHILDREN; +import static org.hisp.dhis.organisationunit.OrganisationUnit.getParentGraphMap; +import static org.hisp.dhis.organisationunit.OrganisationUnit.getParentNameGraphMap; +import static org.hisp.dhis.period.PeriodType.getPeriodTypeFromIsoString; +import static org.hisp.dhis.reporttable.ReportTable.IRT2D; +import static org.hisp.dhis.reporttable.ReportTable.addIfEmpty; + +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.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.Future; + import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -45,7 +94,6 @@ import org.hisp.dhis.common.BaseDimensionalObject; import org.hisp.dhis.common.CodeGenerator; import org.hisp.dhis.common.CombinationGenerator; -import org.hisp.dhis.common.DimensionService; import org.hisp.dhis.common.DimensionType; import org.hisp.dhis.common.DimensionalObject; import org.hisp.dhis.common.DimensionalObjectUtils; @@ -98,31 +146,6 @@ import org.hisp.dhis.util.Timer; import org.springframework.beans.factory.annotation.Autowired; -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.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.Future; - -import static org.hisp.dhis.analytics.AnalyticsTableManager.*; -import static org.hisp.dhis.analytics.DataQueryParams.*; -import static org.hisp.dhis.common.DimensionalObject.*; -import static org.hisp.dhis.common.DimensionalObjectUtils.toDimension; -import static org.hisp.dhis.common.IdentifiableObjectUtils.getLocalPeriodIdentifier; -import static org.hisp.dhis.common.IdentifiableObjectUtils.getLocalPeriodIdentifiers; -import static org.hisp.dhis.common.IdentifiableObjectUtils.getUids; -import static org.hisp.dhis.common.NameableObjectUtils.asList; -import static org.hisp.dhis.common.NameableObjectUtils.asTypedList; -import static org.hisp.dhis.organisationunit.OrganisationUnit.*; -import static org.hisp.dhis.period.PeriodType.getPeriodTypeFromIsoString; -import static org.hisp.dhis.reporttable.ReportTable.IRT2D; -import static org.hisp.dhis.reporttable.ReportTable.addIfEmpty; - /** * @author Lars Helge Overland */ @@ -178,9 +201,6 @@ private DataElementOperandService operandService; @Autowired - private DimensionService dimensionService; - - @Autowired private SystemSettingManager systemSettingManager; @Autowired @@ -857,6 +877,8 @@ @Override public List getDimension( String dimension, List items, Date relativePeriodDate, I18nFormat format, boolean allowNull ) { + final boolean allItems = items.isEmpty(); + if ( DATA_X_DIM_ID.equals( dimension ) ) { List dataDimensions = new ArrayList<>(); @@ -1114,7 +1136,7 @@ if ( ougs != null && ougs.isDataDimension() ) { - List ous = asList( organisationUnitGroupService.getOrganisationUnitGroupsByUid( items ) ); + List ous = !allItems ? asList( organisationUnitGroupService.getOrganisationUnitGroupsByUid( items ) ) : ougs.getItems(); DimensionalObject object = new BaseDimensionalObject( dimension, DimensionType.ORGANISATIONUNIT_GROUPSET, null, ougs.getDisplayName(), ous ); @@ -1125,7 +1147,7 @@ if ( degs != null && degs.isDataDimension() ) { - List des = asList( dataElementService.getDataElementGroupsByUid( items ) ); + List des = !allItems ? asList( dataElementService.getDataElementGroupsByUid( items ) ) : degs.getItems(); DimensionalObject object = new BaseDimensionalObject( dimension, DimensionType.DATAELEMENT_GROUPSET, null, degs.getDisplayName(), des ); @@ -1136,7 +1158,7 @@ if ( cogs != null && cogs.isDataDimension() ) { - List cogz = asList( categoryService.getCategoryOptionGroupsByUid( items ) ); + List cogz = !allItems ? asList( categoryService.getCategoryOptionGroupsByUid( items ) ) : cogs.getItems(); DimensionalObject object = new BaseDimensionalObject( dimension, DimensionType.CATEGORYOPTION_GROUPSET, null, cogs.getDisplayName(), cogz ); @@ -1147,7 +1169,7 @@ if ( dec != null && dec.isDataDimension() ) { - List decos = asList( categoryService.getDataElementCategoryOptionsByUid( items ) ); + List decos = !allItems ? asList( categoryService.getDataElementCategoryOptionsByUid( items ) ) : dec.getItems(); DimensionalObject object = new BaseDimensionalObject( dimension, DimensionType.CATEGORY, null, dec.getDisplayName(), decos ); @@ -1219,17 +1241,6 @@ boolean orgUnitHierarchy = hierarchyMeta && DimensionType.ORGANISATIONUNIT.equals( dimension.getDimensionType() ); // ----------------------------------------------------------------- - // If dimension is not fixed and has no options, insert all items - // ----------------------------------------------------------------- - - if ( !FIXED_DIMS.contains( dimension.getDimension() ) && items.isEmpty() ) - { - DimensionalObject dynamicDim = dimensionService.getDimension( dimension.getDimension(), dimension.getDimensionType() ); - - items = dynamicDim != null ? dynamicDim.getItems() : items; - } - - // ----------------------------------------------------------------- // Insert UID and name into map // ----------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/AnalyticsServiceTest.java' --- dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/AnalyticsServiceTest.java 2015-02-03 13:19:38 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/data/AnalyticsServiceTest.java 2015-03-04 17:49:02 +0000 @@ -190,7 +190,26 @@ assertEquals( 4, params.getDataElements().size() ); assertEquals( 1, params.getFilterOrganisationUnits().size() ); } - + + @Test + public void testGetFromUrlOrgUnitGroupSetAllItems() + { + Set dimensionParams = new HashSet<>(); + dimensionParams.add( "dx:" + deA.getUid() + ";" + deB.getUid() + ";" + deC.getUid() ); + dimensionParams.add( "pe:2012;2012S1" ); + dimensionParams.add( ouGroupSetA.getUid() ); + + Set filterParams = new HashSet<>(); + filterParams.add( "ou:" + ouA.getUid() + ";" + ouB.getUid() + ";" + ouC.getUid() ); + + DataQueryParams params = analyticsService.getFromUrl( dimensionParams, filterParams, null, null, false, false, false, false, false, false, null, null ); + + assertEquals( 3, params.getDataElements().size() ); + assertEquals( 2, params.getPeriods().size() ); + assertEquals( 3, params.getFilterOrganisationUnits().size() ); + assertEquals( 3, params.getDimensionOptions( ouGroupSetA.getUid() ).size() ); + } + @Test public void testGetFromUrlRelativePeriods() {