=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseAnalyticalObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseAnalyticalObject.java 2015-05-27 13:54:41 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseAnalyticalObject.java 2015-06-18 14:35:18 +0000 @@ -393,7 +393,7 @@ { TrackedEntityAttributeDimension tead = attributes.get( dimension ); - return new BaseDimensionalObject( dimension, DimensionType.TRACKED_ENTITY_ATTRIBUTE, null, tead.getDisplayName(), tead.getLegendSet(), tead.getFilter() ); + return new BaseDimensionalObject( dimension, DimensionType.PROGRAM_ATTRIBUTE, null, tead.getDisplayName(), tead.getLegendSet(), tead.getFilter() ); } // Tracked entity data element @@ -409,7 +409,7 @@ { TrackedEntityDataElementDimension tedd = dataElements.get( dimension ); - return new BaseDimensionalObject( dimension, DimensionType.TRACKED_ENTITY_DATAELEMENT, null, tedd.getDisplayName(), tedd.getLegendSet(), tedd.getFilter() ); + return new BaseDimensionalObject( dimension, DimensionType.PROGRAM_DATAELEMENT, null, tedd.getDisplayName(), tedd.getLegendSet(), tedd.getFilter() ); } } @@ -606,7 +606,7 @@ { TrackedEntityAttributeDimension tead = attributes.get( dimension ); - objects.add( new BaseDimensionalObject( dimension, DimensionType.TRACKED_ENTITY_ATTRIBUTE, null, tead.getDisplayName(), tead.getLegendSet(), tead.getFilter() ) ); + objects.add( new BaseDimensionalObject( dimension, DimensionType.PROGRAM_ATTRIBUTE, null, tead.getDisplayName(), tead.getLegendSet(), tead.getFilter() ) ); } // Tracked entity data element @@ -622,7 +622,7 @@ { TrackedEntityDataElementDimension tedd = dataElements.get( dimension ); - objects.add( new BaseDimensionalObject( dimension, DimensionType.TRACKED_ENTITY_DATAELEMENT, null, tedd.getDisplayName(), tedd.getLegendSet(), tedd.getFilter() ) ); + objects.add( new BaseDimensionalObject( dimension, DimensionType.PROGRAM_DATAELEMENT, null, tedd.getDisplayName(), tedd.getLegendSet(), tedd.getFilter() ) ); } } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseDimensionalObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseDimensionalObject.java 2015-06-16 16:07:21 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseDimensionalObject.java 2015-06-18 14:35:18 +0000 @@ -162,8 +162,8 @@ public AnalyticsType getAnalyticsType() { return - DimensionType.TRACKED_ENTITY_ATTRIBUTE.equals( dimensionType ) || - DimensionType.TRACKED_ENTITY_DATAELEMENT.equals( dimensionType ) ? + DimensionType.PROGRAM_ATTRIBUTE.equals( dimensionType ) || + DimensionType.PROGRAM_DATAELEMENT.equals( dimensionType ) ? AnalyticsType.EVENT : AnalyticsType.AGGREGATE; } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionType.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionType.java 2015-06-17 14:52:34 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionType.java 2015-06-18 14:35:18 +0000 @@ -37,6 +37,7 @@ DATAELEMENT, DATASET, DATAELEMENT_OPERAND, + PROGRAM_INDICATOR, PROGRAM_DATAELEMENT, PROGRAM_ATTRIBUTE, DATA_X, @@ -48,8 +49,5 @@ DATAELEMENT_GROUPSET, ORGANISATIONUNIT_GROUPSET, CATEGORY, - TRACKED_ENTITY_ATTRIBUTE, - TRACKED_ENTITY_DATAELEMENT, - PROGRAM_INDICATOR, STATIC } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionalObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionalObject.java 2015-06-17 14:52:34 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionalObject.java 2015-06-18 14:35:18 +0000 @@ -53,13 +53,13 @@ final String DATAELEMENT_DIM_ID = "de"; final String DATASET_DIM_ID = "ds"; final String DATAELEMENT_OPERAND_ID = "dc"; + final String PROGRAM_INDICATOR_DIM_ID = "pi"; final String PROGRAM_DATAELEMENT_DIM_ID = "pd"; final String PROGRAM_ATTRIBUTE_DIM_ID = "pa"; final String CATEGORYOPTIONCOMBO_DIM_ID = "co"; final String PERIOD_DIM_ID = "pe"; final String ORGUNIT_DIM_ID = "ou"; final String ORGUNIT_GROUP_DIM_ID = "oug"; // Used for org unit target - final String PROGRAM_INDICATOR_DIM_ID = "pin"; final String ITEM_DIM_ID = "item"; final String OU_MODE_SELECTED = "selected"; //TODO replace with OrganisationUnitSelectionMode @@ -88,8 +88,8 @@ put( DimensionType.DATAELEMENT_GROUPSET, DataElementGroupSet.class ); put( DimensionType.ORGANISATIONUNIT_GROUPSET, OrganisationUnitGroupSet.class ); put( DimensionType.CATEGORYOPTION_GROUPSET, CategoryOptionGroupSet.class ); - put( DimensionType.TRACKED_ENTITY_ATTRIBUTE, TrackedEntityAttribute.class ); - put( DimensionType.TRACKED_ENTITY_DATAELEMENT, DataElement.class ); + put( DimensionType.PROGRAM_ATTRIBUTE, TrackedEntityAttribute.class ); + put( DimensionType.PROGRAM_DATAELEMENT, DataElement.class ); } }; /** === modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/BaseAnalyticalObjectTest.java' --- dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/BaseAnalyticalObjectTest.java 2015-02-25 20:40:28 +0000 +++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/BaseAnalyticalObjectTest.java 2015-06-18 14:35:18 +0000 @@ -125,7 +125,7 @@ assertNotNull( dim ); assertEquals( tea.getDimension(), dim.getDimension() ); - assertEquals( DimensionType.TRACKED_ENTITY_ATTRIBUTE, dim.getDimensionType() ); + assertEquals( DimensionType.PROGRAM_ATTRIBUTE, dim.getDimensionType() ); assertEquals( AnalyticsType.EVENT, dim.getAnalyticsType() ); assertEquals( tead.getFilter(), dim.getFilter() ); } === modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/DimensionalObjectTest.java' --- dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/DimensionalObjectTest.java 2015-02-25 20:40:28 +0000 +++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/common/DimensionalObjectTest.java 2015-06-18 14:35:18 +0000 @@ -44,11 +44,11 @@ @Test public void testGetFilterItemsAsList() { - BaseDimensionalObject objectA = new BaseDimensionalObject( "dimA", DimensionType.TRACKED_ENTITY_DATAELEMENT, null, null, null, "IN:uidA;uidB;uidC" ); + BaseDimensionalObject objectA = new BaseDimensionalObject( "dimA", DimensionType.PROGRAM_DATAELEMENT, null, null, null, "IN:uidA;uidB;uidC" ); List expectedA = new ArrayList<>( Arrays.asList( "uidA", "uidB", "uidC" ) ); assertEquals( expectedA, objectA.getFilterItemsAsList() ); - BaseDimensionalObject objectB = new BaseDimensionalObject( "dimA", DimensionType.TRACKED_ENTITY_DATAELEMENT, null, null, null, "EQ:uidA" ); + BaseDimensionalObject objectB = new BaseDimensionalObject( "dimA", DimensionType.PROGRAM_DATAELEMENT, null, null, null, "EQ:uidA" ); assertEquals( null, objectB.getFilterItemsAsList() ); } } === 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 2015-06-18 10:54:01 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/DataQueryParams.java 2015-06-18 14:35:18 +0000 @@ -44,6 +44,7 @@ import static org.hisp.dhis.common.DimensionalObject.INDICATOR_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.DimensionalObject.PROGRAM_INDICATOR_DIM_ID; import static org.hisp.dhis.common.DimensionalObject.PROGRAM_DATAELEMENT_DIM_ID; import static org.hisp.dhis.common.DimensionalObject.PROGRAM_ATTRIBUTE_DIM_ID; import static org.hisp.dhis.common.NameableObjectUtils.asList; @@ -103,7 +104,6 @@ public static final String DISPLAY_NAME_CATEGORYOPTIONCOMBO = "Category"; public static final String DISPLAY_NAME_PERIOD = "Period"; public static final String DISPLAY_NAME_ORGUNIT = "Organisation unit"; - public static final String DISPLAY_NAME_PROGRAM_INDICATOR = "Program indicator"; public static final String DISPLAY_NAME_LONGITUDE = "Longitude"; public static final String DISPLAY_NAME_LATITUDE = "Latitude"; @@ -111,11 +111,11 @@ public static final int CO_IN_INDEX = 1; public static final List DATA_DIMS = Arrays.asList( - INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, DATAELEMENT_OPERAND_ID, DATASET_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); + INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, DATAELEMENT_OPERAND_ID, DATASET_DIM_ID, PROGRAM_INDICATOR_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); public static final List FIXED_DIMS = Arrays.asList( - DATA_X_DIM_ID, INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, DATASET_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID, PERIOD_DIM_ID, ORGUNIT_DIM_ID ); + DATA_X_DIM_ID, INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, DATASET_DIM_ID, PROGRAM_INDICATOR_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID, PERIOD_DIM_ID, ORGUNIT_DIM_ID ); private static final List DIMENSION_PERMUTATION_IGNORE_DIMS = Arrays.asList( - INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, CATEGORYOPTIONCOMBO_DIM_ID, DATASET_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); + INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, CATEGORYOPTIONCOMBO_DIM_ID, DATASET_DIM_ID, PROGRAM_INDICATOR_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); public static final List COMPLETENESS_DIMENSION_TYPES = Arrays.asList( DATASET, PERIOD, ORGANISATIONUNIT, ORGANISATIONUNIT_GROUPSET, CATEGORYOPTION_GROUPSET ); private static final List COMPLETENESS_TARGET_DIMENSION_TYPES = Arrays.asList( @@ -286,6 +286,7 @@ if ( !dimensions.contains( new BaseDimensionalObject( DATAELEMENT_DIM_ID ) ) || dimensions.contains( new BaseDimensionalObject( INDICATOR_DIM_ID ) ) || dimensions.contains( new BaseDimensionalObject( DATASET_DIM_ID ) ) || + dimensions.contains( new BaseDimensionalObject( PROGRAM_INDICATOR_DIM_ID ) ) || dimensions.contains( new BaseDimensionalObject( PROGRAM_DATAELEMENT_DIM_ID ) ) || dimensions.contains( new BaseDimensionalObject( PROGRAM_ATTRIBUTE_DIM_ID ) ) ) { @@ -360,6 +361,7 @@ new BaseDimensionalObject( INDICATOR_DIM_ID ), new BaseDimensionalObject( DATAELEMENT_DIM_ID ), new BaseDimensionalObject( DATASET_DIM_ID ), + new BaseDimensionalObject( PROGRAM_INDICATOR_DIM_ID ), new BaseDimensionalObject( PROGRAM_DATAELEMENT_DIM_ID ), new BaseDimensionalObject( PROGRAM_ATTRIBUTE_DIM_ID ) ) ); @@ -464,7 +466,7 @@ /** * Removes the dimensions with the given identifiers. */ - public DataQueryParams removeDimensions( Set dimension ) + public DataQueryParams removeDimensions( Collection dimension ) { if ( dimension != null ) { @@ -1599,6 +1601,16 @@ setOrganisationUnits( getList( organisationUnit ) ); } + public List getProgramIndicators() + { + return getDimensionOptions( PROGRAM_INDICATOR_DIM_ID ); + } + + public void setProgramIndicators( List programIndicators ) + { + setDimensionOptions( PROGRAM_INDICATOR_DIM_ID, DimensionType.PROGRAM_INDICATOR, null, asList( programIndicators ) ); + } + public List getProgramDataElements() { return getDimensionOptions( PROGRAM_DATAELEMENT_DIM_ID ); === 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-06-18 10:54:01 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2015-06-18 14:35:18 +0000 @@ -32,16 +32,15 @@ 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.COMPLETENESS_DIMENSION_TYPES; 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.DISPLAY_NAME_PROGRAM_INDICATOR; +import static org.hisp.dhis.analytics.DataQueryParams.DX_INDEX; import static org.hisp.dhis.analytics.DataQueryParams.KEY_DE_GROUP; -import static org.hisp.dhis.analytics.DataQueryParams.COMPLETENESS_DIMENSION_TYPES; -import static org.hisp.dhis.analytics.DataQueryParams.DX_INDEX; 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; @@ -52,9 +51,9 @@ 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.DimensionalObject.PROGRAM_ATTRIBUTE_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.PROGRAM_DATAELEMENT_DIM_ID; import static org.hisp.dhis.common.DimensionalObject.PROGRAM_INDICATOR_DIM_ID; -import static org.hisp.dhis.common.DimensionalObject.PROGRAM_DATAELEMENT_DIM_ID; -import static org.hisp.dhis.common.DimensionalObject.PROGRAM_ATTRIBUTE_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; @@ -115,6 +114,9 @@ import org.hisp.dhis.common.MapMap; import org.hisp.dhis.common.NameableObject; import org.hisp.dhis.common.NameableObjectUtils; +import org.hisp.dhis.commons.collection.ListUtils; +import org.hisp.dhis.commons.collection.UniqueArrayList; +import org.hisp.dhis.commons.util.DebugUtils; import org.hisp.dhis.constant.ConstantService; import org.hisp.dhis.dataelement.CategoryOptionGroup; import org.hisp.dhis.dataelement.CategoryOptionGroupSet; @@ -148,14 +150,11 @@ import org.hisp.dhis.setting.SystemSettingManager; import org.hisp.dhis.system.grid.ListGrid; import org.hisp.dhis.system.util.MathUtils; +import org.hisp.dhis.system.util.SystemUtils; +import org.hisp.dhis.trackedentity.TrackedEntityAttribute; import org.hisp.dhis.user.CurrentUserService; import org.hisp.dhis.user.User; -import org.hisp.dhis.commons.util.DebugUtils; -import org.hisp.dhis.commons.collection.ListUtils; -import org.hisp.dhis.system.util.SystemUtils; -import org.hisp.dhis.trackedentity.TrackedEntityAttribute; import org.hisp.dhis.util.Timer; -import org.hisp.dhis.commons.collection.UniqueArrayList; import org.springframework.beans.factory.annotation.Autowired; import com.google.common.collect.Lists; @@ -298,7 +297,7 @@ if ( !params.getIndicators().isEmpty() ) { DataQueryParams dataSourceParams = params.instance(); - dataSourceParams.removeDimensions( DATAELEMENT_DIM_ID, DATASET_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); + dataSourceParams.removeDimensions( DATAELEMENT_DIM_ID, DATASET_DIM_ID, PROGRAM_INDICATOR_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); List indicators = asTypedList( dataSourceParams.getIndicators() ); @@ -368,7 +367,7 @@ if ( !params.getDataElements().isEmpty() ) { DataQueryParams dataSourceParams = params.instance(); - dataSourceParams.removeDimensions( INDICATOR_DIM_ID, DATASET_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); + dataSourceParams.removeDimensions( INDICATOR_DIM_ID, DATASET_DIM_ID, PROGRAM_INDICATOR_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); Map aggregatedDataMap = getAggregatedDataValueMapObjectTyped( dataSourceParams ); @@ -398,7 +397,7 @@ DataQueryParams dataSourceParams = params.instance(); dataSourceParams.ignoreDataApproval(); // No approval for reporting rates - dataSourceParams.removeDimensions( INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); + dataSourceParams.removeDimensions( INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, PROGRAM_INDICATOR_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); dataSourceParams.setAggregationType( AggregationType.COUNT ); if ( !COMPLETENESS_DIMENSION_TYPES.containsAll( dataSourceParams.getDimensionTypes() ) ) @@ -972,6 +971,7 @@ List dataElements = new ArrayList<>(); List dataSets = new ArrayList<>(); List operandDataElements = new ArrayList<>(); + List programIndicators = new ArrayList<>(); List programDataElements = new ArrayList<>(); List programAttributes = new ArrayList<>(); @@ -1007,7 +1007,8 @@ dataElements.add( de ); continue itemLoop; } - else if ( de != null && DataElementDomain.TRACKER.equals( de.getDomainType() ) ) + + if ( de != null && DataElementDomain.TRACKER.equals( de.getDomainType() ) ) { programDataElements.add( de ); continue itemLoop; @@ -1029,6 +1030,14 @@ continue itemLoop; } + ProgramIndicator pi = idObjectManager.get( ProgramIndicator.class, uid ); + + if ( pi != null ) + { + programIndicators.add( pi ); + continue itemLoop; + } + TrackedEntityAttribute pa = idObjectManager.get( TrackedEntityAttribute.class, uid ); if ( pa != null ) @@ -1069,6 +1078,11 @@ dataDimensions.add( new BaseDimensionalObject( CATEGORYOPTIONCOMBO_DIM_ID, DimensionType.CATEGORY_OPTION_COMBO, new ArrayList() ) ); } + if ( !programIndicators.isEmpty() ) + { + dataDimensions.add( new BaseDimensionalObject( PROGRAM_INDICATOR_DIM_ID, DimensionType.PROGRAM_INDICATOR, programIndicators ) ); + } + if ( !programDataElements.isEmpty() ) { dataDimensions.add( new BaseDimensionalObject( PROGRAM_DATAELEMENT_DIM_ID, DimensionType.PROGRAM_DATAELEMENT, programDataElements ) ); @@ -1079,7 +1093,8 @@ dataDimensions.add( new BaseDimensionalObject( PROGRAM_ATTRIBUTE_DIM_ID, DimensionType.PROGRAM_ATTRIBUTE, programAttributes ) ); } - if ( indicators.isEmpty() && dataElements.isEmpty() && dataSets.isEmpty() && operandDataElements.isEmpty() && programDataElements.isEmpty() && programAttributes.isEmpty() ) + if ( indicators.isEmpty() && dataElements.isEmpty() && dataSets.isEmpty() && operandDataElements.isEmpty() && + programDataElements.isEmpty() && programAttributes.isEmpty() && programIndicators.isEmpty() ) { throw new IllegalQueryException( "Dimension dx is present in query without any valid dimension options" ); } @@ -1227,15 +1242,6 @@ return Lists.newArrayList( object ); } - if ( PROGRAM_INDICATOR_DIM_ID.equals( dimension ) ) - { - List indicators = idObjectManager.getByUid( ProgramIndicator.class, items ); - - DimensionalObject object = new BaseDimensionalObject( PROGRAM_INDICATOR_DIM_ID, DimensionType.PROGRAM_INDICATOR, null, DISPLAY_NAME_PROGRAM_INDICATOR, indicators ); - - return Lists.newArrayList( object ); - } - if ( LONGITUDE_DIM_ID.contains( dimension ) ) { DimensionalObject object = new BaseDimensionalObject( dimension, DimensionType.STATIC, null, DISPLAY_NAME_LONGITUDE, new ArrayList() ); @@ -1340,8 +1346,7 @@ if ( !dataElements.isEmpty() ) { - DataQueryParams dataSourceParams = params.instance().removeDimensions( - INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, DATASET_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); + DataQueryParams dataSourceParams = params.instance().removeDimensions( DataQueryParams.DATA_DIMS ); dataSourceParams.getDimensions().add( DX_INDEX, new BaseDimensionalObject( DATAELEMENT_DIM_ID, DimensionType.DATAELEMENT, dataElements ) ); @@ -1367,8 +1372,7 @@ if ( !dataElements.isEmpty() ) { - DataQueryParams dataSourceParams = params.instance().removeDimensions( - INDICATOR_DIM_ID, DATAELEMENT_DIM_ID, DATASET_DIM_ID, PROGRAM_DATAELEMENT_DIM_ID, PROGRAM_ATTRIBUTE_DIM_ID ); + DataQueryParams dataSourceParams = params.instance().removeDimensions( DataQueryParams.DATA_DIMS ); dataSourceParams.getDimensions().add( DataQueryParams.DX_INDEX, new BaseDimensionalObject( DATAELEMENT_DIM_ID, DimensionType.DATAELEMENT, dataElements ) ); === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/dimension/DefaultDimensionService.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/dimension/DefaultDimensionService.java 2015-06-15 13:44:20 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/dimension/DefaultDimensionService.java 2015-06-18 14:35:18 +0000 @@ -47,6 +47,7 @@ import org.hisp.dhis.dataelement.DataElementCategoryDimension; import org.hisp.dhis.dataelement.DataElementCategoryOption; import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.dataelement.DataElementDomain; import org.hisp.dhis.dataelement.DataElementGroup; import org.hisp.dhis.dataelement.DataElementGroupSet; import org.hisp.dhis.dataelement.DataElementOperandService; @@ -155,16 +156,16 @@ if ( tea != null ) { - tea.setDimensionType( DimensionType.TRACKED_ENTITY_ATTRIBUTE ); + tea.setDimensionType( DimensionType.PROGRAM_ATTRIBUTE ); return tea; } - DataElement tde = identifiableObjectManager.get( DataElement.class, uid ); + DataElement pde = identifiableObjectManager.get( DataElement.class, uid ); - if ( tde != null ) + if ( pde != null && DataElementDomain.TRACKER.equals( pde.getDomainType() ) ) { - tde.setDimensionType( DimensionType.TRACKED_ENTITY_DATAELEMENT ); - return tde; + pde.setDimensionType( DimensionType.PROGRAM_DATAELEMENT ); + return pde; } return null; @@ -267,14 +268,14 @@ if ( tea != null ) { - return DimensionType.TRACKED_ENTITY_ATTRIBUTE; + return DimensionType.PROGRAM_ATTRIBUTE; } - DataElement de = identifiableObjectManager.get( DataElement.class, uid ); + DataElement pde = identifiableObjectManager.get( DataElement.class, uid ); - if ( de != null ) + if ( pde != null && DataElementDomain.TRACKER.equals( pde.getDomainType() ) ) { - return DimensionType.TRACKED_ENTITY_DATAELEMENT; + return DimensionType.PROGRAM_DATAELEMENT; } final Map dimObjectTypeMap = new HashMap<>(); @@ -533,7 +534,7 @@ { object.getCategoryOptionGroups().addAll( identifiableObjectManager.getByUidOrdered( CategoryOptionGroup.class, uids ) ); } - else if ( TRACKED_ENTITY_ATTRIBUTE.equals( type ) ) + else if ( PROGRAM_ATTRIBUTE.equals( type ) ) { TrackedEntityAttributeDimension attributeDimension = new TrackedEntityAttributeDimension(); attributeDimension.setAttribute( identifiableObjectManager.get( TrackedEntityAttribute.class, dimensionId ) ); @@ -542,7 +543,7 @@ object.getAttributeDimensions().add( attributeDimension ); } - else if ( TRACKED_ENTITY_DATAELEMENT.equals( type ) ) + else if ( PROGRAM_DATAELEMENT.equals( type ) ) { TrackedEntityDataElementDimension dataElementDimension = new TrackedEntityDataElementDimension(); dataElementDimension.setDataElement( identifiableObjectManager.get( DataElement.class, dimensionId ) ); === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2015-06-17 14:52:34 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2015-06-18 14:35:18 +0000 @@ -29,9 +29,8 @@ */ import static org.hisp.dhis.common.DimensionalObject.PERIOD_DIM_ID; -import static org.hisp.dhis.common.DimensionalObject.PROGRAM_INDICATOR_DIM_ID; +import static org.hisp.dhis.common.DimensionalObject.PROGRAM_ATTRIBUTE_DIM_ID; import static org.hisp.dhis.common.DimensionalObject.PROGRAM_DATAELEMENT_DIM_ID; -import static org.hisp.dhis.common.DimensionalObject.PROGRAM_ATTRIBUTE_DIM_ID; import java.util.ArrayList; import java.util.Date; @@ -47,13 +46,13 @@ import org.hisp.dhis.common.NameableObject; import org.hisp.dhis.common.NameableObjectUtils; import org.hisp.dhis.common.QueryItem; +import org.hisp.dhis.commons.collection.ListUtils; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.legend.Legend; import org.hisp.dhis.option.OptionSet; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; import org.hisp.dhis.trackedentity.TrackedEntityAttribute; -import org.hisp.dhis.commons.collection.ListUtils; /** * @author Lars Helge Overland @@ -296,17 +295,6 @@ return !items.isEmpty() || !itemFilters.isEmpty(); } - /** - * Indicates whether program indicators are present as dimension or filter. - */ - public boolean hasProgramIndicators() - { - List dimOpts = getDimensionOptions( PROGRAM_INDICATOR_DIM_ID ); - List filterOpts = getFilterOptions( PROGRAM_INDICATOR_DIM_ID ); - - return ( dimOpts != null && !dimOpts.isEmpty() ) || ( filterOpts != null && !filterOpts.isEmpty() ); - } - public boolean hasStartEndDate() { return startDate != null && endDate != null; === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventQueryPlanner.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventQueryPlanner.java 2015-06-14 17:51:03 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventQueryPlanner.java 2015-06-18 14:35:18 +0000 @@ -124,11 +124,6 @@ violation = "Start and end date or at least one period must be specified"; } - if ( params.hasProgramIndicators() && params.hasItemsOrItemFilters() ) - { - violation = "Data elements or attributs cannot be specified together with indicators"; - } - if ( params.getStartDate() != null && params.getEndDate() != null && params.getStartDate().after( params.getEndDate() ) ) { violation = "Start date is after end date: " + params.getStartDate() + " - " + params.getEndDate(); === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/event/data/EventAnalyticsServiceTest.java' --- dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/event/data/EventAnalyticsServiceTest.java 2015-06-13 21:26:59 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/event/data/EventAnalyticsServiceTest.java 2015-06-18 14:35:18 +0000 @@ -312,7 +312,7 @@ assertNotNull( dim ); assertEquals( tea.getDimension(), dim.getDimension() ); - assertEquals( DimensionType.TRACKED_ENTITY_ATTRIBUTE, dim.getDimensionType() ); + assertEquals( DimensionType.PROGRAM_ATTRIBUTE, dim.getDimensionType() ); assertEquals( AnalyticsType.EVENT, dim.getAnalyticsType() ); assertEquals( tead.getFilter(), dim.getFilter() ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/adx/DefaultADXDataService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/adx/DefaultADXDataService.java 2015-06-18 13:24:57 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/adx/DefaultADXDataService.java 2015-06-18 14:35:18 +0000 @@ -32,27 +32,37 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; + import org.apache.commons.io.IOUtils; + import java.util.logging.Level; import java.util.logging.Logger; + import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; + import org.w3c.dom.Document; + import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + import javax.xml.stream.XMLStreamException; + import org.amplecode.staxwax.factory.XMLFactory; import org.hisp.dhis.dxf2.common.ImportOptions; import org.hisp.dhis.dxf2.datavalueset.DataExportParams; import org.hisp.dhis.dxf2.datavalueset.DataValueSetService; import org.hisp.dhis.dxf2.importsummary.ImportSummaries; import org.amplecode.staxwax.reader.XMLReader; + import javax.xml.stream.XMLStreamReader; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; + import org.hisp.dhis.dxf2.importsummary.ImportStatus; import org.hisp.dhis.dxf2.importsummary.ImportSummary; import org.hisp.dhis.period.Period; @@ -106,7 +116,7 @@ StreamResult result = new StreamResult(writer); transformer.transform( source, result ); // create an inputstream for the String - InputStream dxfIn = IOUtils.toInputStream(result.toString(), "UTF-8" ); + InputStream dxfIn = IOUtils.toInputStream( result.toString(), StandardCharsets.UTF_8 ); // pass off to the dxf2 datavalueset service importSummaries.addImportSummary( dataValueSetService.saveDataValueSet( dxfIn, importOptions ) );