=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java 2009-11-16 10:32:46 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java 2009-11-23 11:40:23 +0000 @@ -36,6 +36,7 @@ import org.hisp.dhis.dimension.Dimension; import org.hisp.dhis.dimension.DimensionOptionElement; import org.hisp.dhis.dimension.DimensionSet; +import org.hisp.dhis.dimension.DimensionType; /** * @author Abyot Aselefew @@ -72,17 +73,12 @@ public String getDimensionSetId() { - return TYPE_CATEGORY_COMBO + SEPARATOR_TYPE + id; - } - - public String getDimensionSetType() - { - return TYPE_CATEGORY_COMBO; - } - - public boolean isDimensionSetType( String type ) - { - return TYPE_CATEGORY_COMBO.equals( type ); + return DimensionType.CATEGORY.name() + SEPARATOR_TYPE + id; + } + + public DimensionType getDimensionType() + { + return DimensionType.CATEGORY; } public List getDimensions() === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/BasicDimensionSet.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/BasicDimensionSet.java 2009-11-16 12:30:59 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/BasicDimensionSet.java 2009-11-23 11:40:23 +0000 @@ -54,7 +54,7 @@ public String getDimensionSetId() { - StringBuffer identifier = new StringBuffer( TYPE_GROUP_SET + SEPARATOR_TYPE ); + StringBuffer identifier = new StringBuffer( DimensionType.GROUPSET.name() + SEPARATOR_TYPE ); Iterator iterator = getDimensions().iterator(); @@ -71,14 +71,9 @@ return identifier.toString(); } - public String getDimensionSetType() - { - return getDimensionSetId().split( SEPARATOR_TYPE )[0]; - } - - public boolean isDimensionSetType( String type ) - { - return getDimensionSetType() != null ? getDimensionSetType().equals( type ) : false; + public DimensionType getDimensionType() + { + return DimensionType.valueOf( getDimensionSetId().split( SEPARATOR_TYPE )[0] ); } public List getDimensions() === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/DimensionSet.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/DimensionSet.java 2009-11-16 10:32:46 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/DimensionSet.java 2009-11-23 11:40:23 +0000 @@ -34,8 +34,6 @@ */ public interface DimensionSet { - final String TYPE_CATEGORY_COMBO = "categoryCombo"; - final String TYPE_GROUP_SET = "groupSet"; final String SEPARATOR_TYPE = "_"; final String SEPARATOR_ID = "-"; final String SEPARATOR_NAME = ", "; @@ -44,14 +42,12 @@ /** * The DimensionSet identifier is on the format - * [type]SEPARATOR_TYPE[id]SEPARATOR_ID[id]SEPARATOR[id], for instance + * [DimensionType]SEPARATOR_TYPE[id]SEPARATOR_ID[id]SEPARATOR[id], for instance * groupSet_1-2-3 and categoryCombo_1 . */ String getDimensionSetId(); - String getDimensionSetType(); - - boolean isDimensionSetType( String type ); + DimensionType getDimensionType(); List getDimensions(); === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/DimensionType.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/DimensionType.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dimension/DimensionType.java 2009-11-23 11:40:23 +0000 @@ -0,0 +1,37 @@ +package org.hisp.dhis.dimension; + +/* + * Copyright (c) 2004-2007, 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. + */ + +/** + * @author Lars Helge Overland + */ +public enum DimensionType +{ + CATEGORY, + GROUPSET +} === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java 2009-11-21 16:57:39 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java 2009-11-23 11:40:23 +0000 @@ -27,9 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.dimension.DimensionSet.TYPE_CATEGORY_COMBO; -import static org.hisp.dhis.dimension.DimensionSet.TYPE_GROUP_SET; - import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; @@ -45,6 +42,7 @@ import org.hisp.dhis.dimension.DimensionOption; import org.hisp.dhis.dimension.DimensionOptionElement; import org.hisp.dhis.dimension.DimensionSet; +import org.hisp.dhis.dimension.DimensionType; import org.hisp.dhis.i18n.I18nFormat; import org.hisp.dhis.indicator.Indicator; import org.hisp.dhis.organisationunit.OrganisationUnit; @@ -114,7 +112,7 @@ private List units = new ArrayList(); - private String dimensionSetType; + private DimensionType dimensionType; private DimensionSet categoryCombo; @@ -377,7 +375,7 @@ // Init dimensional lists // --------------------------------------------------------------------- - if ( isDimensional() && dimensionSetType.equals( TYPE_CATEGORY_COMBO ) ) + if ( isDimensional() && dimensionType.equals( DimensionType.CATEGORY ) ) { // ----------------------------------------------------------------- // CategoryCombo is set, populate CategoryOptionCombos @@ -385,7 +383,7 @@ categoryOptionCombos = categoryCombo.getDimensionOptionElements(); } - else if ( isDimensional() && dimensionSetType.equals( DimensionSet.TYPE_GROUP_SET ) ) + else if ( isDimensional() && dimensionType.equals( DimensionType.GROUPSET ) ) { // ----------------------------------------------------------------- // All DataElements have GroupSets, populate DataElements @@ -515,7 +513,7 @@ if ( doTotal() ) { - List dimensions = isDimensional( TYPE_CATEGORY_COMBO ) ? categoryCombo.getDimensions() : dataElementGroupSets; + List dimensions = isDimensional( DimensionType.CATEGORY ) ? categoryCombo.getDimensions() : dataElementGroupSets; for ( Dimension dimension : dimensions ) { @@ -540,9 +538,9 @@ { if ( dimensionSet != null ) { - this.dimensionSetType = dimensionSet.getDimensionSetType(); - this.categoryCombo = dimensionSet.isDimensionSetType( TYPE_CATEGORY_COMBO ) ? dimensionSet : null; - this.dataElementGroupSets = dimensionSet.isDimensionSetType( TYPE_GROUP_SET ) ? dimensionSet.getDimensions() : null; + this.dimensionType = dimensionSet.getDimensionType(); + this.categoryCombo = dimensionType.equals( DimensionType.CATEGORY ) ? dimensionSet : null; + this.dataElementGroupSets = dimensionType.equals( DimensionType.GROUPSET ) ? dimensionSet.getDimensions() : null; } } @@ -679,16 +677,16 @@ */ public boolean isDimensional() { - return dimensionSetType != null; + return dimensionType != null; } /** * Tests whether this ReportTable is multi-dimensional and of the argument * dimension set type. */ - public boolean isDimensional( String dimensionSetType ) + public boolean isDimensional( DimensionType dimensionType ) { - return isDimensional() && dimensionSetType.equals( dimensionSetType ); + return isDimensional() && this.dimensionType.equals( dimensionType ); } /** @@ -697,7 +695,7 @@ public boolean doTotal() { return !isDoIndicators() && !isDoPeriods() && !isDoUnits() && isDoCategoryOptionCombos() && - isDimensional( DimensionSet.TYPE_CATEGORY_COMBO ) && mode.equals( MODE_DATAELEMENTS ); + isDimensional( DimensionType.CATEGORY ) && mode.equals( MODE_DATAELEMENTS ); } // ------------------------------------------------------------------------- @@ -1086,14 +1084,14 @@ this.units = units; } - public String getDimensionSetType() + public DimensionType getDimensionType() { - return dimensionSetType; + return dimensionType; } - public void setDimensionSetType( String dimensionSetType ) + public void setDimensionType( DimensionType dimensionType ) { - this.dimensionSetType = dimensionSetType; + this.dimensionType = dimensionType; } public DimensionSet getCategoryCombo() === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dimension/DefaultDimensionService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dimension/DefaultDimensionService.java 2009-11-19 11:04:10 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dimension/DefaultDimensionService.java 2009-11-23 11:40:23 +0000 @@ -27,8 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.dimension.DimensionSet.TYPE_CATEGORY_COMBO; - import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -42,6 +40,8 @@ import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.system.util.ConversionUtils; +import static org.hisp.dhis.dimension.DimensionType.*; + /** * @author Lars Helge Overland * @version $Id: Indicator.java 5540 2008-08-19 10:47:07Z larshelg $ @@ -106,28 +106,26 @@ public Collection getDataElements( DimensionSet dimensionSet ) { - if ( dimensionSet == null ) - { - return null; - } + Collection dataElements = null; - if ( dimensionSet.getDimensionSetType().equals( TYPE_CATEGORY_COMBO ) ) + if ( dimensionSet != null && dimensionSet.getDimensionType().equals( CATEGORY ) ) { Integer id = getDimensionSetIdentifiers( dimensionSet.getDimensionSetId() )[0]; DataElementCategoryCombo categoryCombo = categoryService.getDataElementCategoryCombo( id ); - return dataElementService.getDataElementByCategoryCombo( categoryCombo ); - } - - // TYPE_GROUP_SET - - Integer[] ids = getDimensionSetIdentifiers( dimensionSet.getDimensionSetId() ); - - Set groupSets = getDataElementDimensionSet( ids ); - - return dataElementService.getDataElementsByGroupSets( groupSets ); - + dataElements = dataElementService.getDataElementByCategoryCombo( categoryCombo ); + } + else if ( dimensionSet != null && dimensionSet.getDimensionType().equals( GROUPSET ) ) + { + Integer[] ids = getDimensionSetIdentifiers( dimensionSet.getDimensionSetId() ); + + Set groupSets = getDataElementDimensionSet( ids ); + + dataElements = dataElementService.getDataElementsByGroupSets( groupSets ); + } + + return dataElements; } // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/reporttable/hibernate/ReportTable.hbm.xml' --- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/reporttable/hibernate/ReportTable.hbm.xml 2009-11-16 10:32:46 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/reporttable/hibernate/ReportTable.hbm.xml 2009-11-23 11:40:23 +0000 @@ -45,7 +45,7 @@ class="org.hisp.dhis.dataset.DataSet"/> - +