=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueService.java 2011-04-22 21:04:14 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueService.java 2011-06-04 13:52:42 +0000 @@ -28,6 +28,7 @@ */ import java.util.Collection; +import java.util.Set; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; @@ -260,7 +261,5 @@ * @param operands the data element operands to filter. * @return the data element operands with registered data values. */ - Collection getOperandsWithDataValues( Collection operands ); + Set getOperandsWithDataValues( Set operands ); } - - === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueStore.java 2011-04-22 21:04:14 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueStore.java 2011-06-04 13:52:42 +0000 @@ -28,6 +28,7 @@ */ import java.util.Collection; +import java.util.Set; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; @@ -252,5 +253,5 @@ * @param operands the data element operands to filter. * @return the data element operands with registered data values. */ - Collection getOperandsWithDataValues( Collection operands ); + Set getOperandsWithDataValues( Set operands ); } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/DefaultDataValueService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/DefaultDataValueService.java 2011-04-22 21:04:14 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/DefaultDataValueService.java 2011-06-04 13:52:42 +0000 @@ -30,6 +30,7 @@ import static org.hisp.dhis.dataelement.DataElement.AGGREGATION_OPERATOR_AVERAGE; import java.util.Collection; +import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -198,7 +199,7 @@ return true; } - public Collection getOperandsWithDataValues( Collection operands ) + public Set getOperandsWithDataValues( Set operands ) { return dataValueStore.getOperandsWithDataValues( operands ); } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java 2011-04-22 21:04:14 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java 2011-06-04 13:52:42 +0000 @@ -31,6 +31,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.Set; import org.amplecode.quick.StatementHolder; import org.amplecode.quick.StatementManager; @@ -377,9 +378,9 @@ return (DataValue) query.uniqueResult(); } - public Collection getOperandsWithDataValues( Collection operands ) + public Set getOperandsWithDataValues( Set operands ) { - final Collection operandsWithData = new ArrayList(); + final Set operandsWithData = new HashSet(); final StatementHolder holder = statementManager.getHolder(); === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/CrossTabService.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/CrossTabService.java 2011-04-15 15:02:55 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/CrossTabService.java 2011-06-04 13:52:42 +0000 @@ -28,6 +28,8 @@ */ import java.util.Collection; +import java.util.List; +import java.util.Set; import org.hisp.dhis.dataelement.DataElementOperand; import org.hisp.dhis.datamart.CrossTabDataValue; @@ -46,18 +48,18 @@ * @param operands the DataElementOperands. * @return the DataElementOperands with data. */ - Collection getOperandsWithData( Collection operands ); + Set getOperandsWithData( Set operands ); /** * Creates and populates the crosstab table. Operands without data will be * removed from the operands argument collection. * - * @param operands the collection of DataElementOperands. + * @param operands the list of DataElementOperands. * @param periodIds the collection of Period identifiers. * @param organisationUnitIds the collection of OrganisationUnit identifiers. * @return a List of random keys for each generated crosstab table. */ - String populateCrossTabTable( Collection operands, + String populateCrossTabTable( List operands, Collection periodIds, Collection organisationUnitIds ); /** === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/DefaultCrossTabService.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/DefaultCrossTabService.java 2011-04-15 15:02:55 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/DefaultCrossTabService.java 2011-06-04 13:52:42 +0000 @@ -31,6 +31,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; import org.amplecode.quick.BatchHandler; import org.amplecode.quick.BatchHandlerFactory; @@ -90,13 +91,13 @@ // CrossTabService implementation // ------------------------------------------------------------------------- - public Collection getOperandsWithData( Collection operands ) + public Set getOperandsWithData( Set operands ) { return dataValueService.getOperandsWithDataValues( operands ); } - public String populateCrossTabTable( final Collection operands, - final Collection periodIds, final Collection organisationUnitIds ) + public String populateCrossTabTable( List operands, + Collection periodIds, Collection organisationUnitIds ) { final String key = RandomStringUtils.randomAlphanumeric( 8 ); === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/CrossTabStore.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/CrossTabStore.java 2011-04-15 15:02:55 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/CrossTabStore.java 2011-06-04 13:52:42 +0000 @@ -28,6 +28,7 @@ */ import java.util.Collection; +import java.util.List; import org.hisp.dhis.dataelement.DataElementOperand; import org.hisp.dhis.datamart.CrossTabDataValue; @@ -49,7 +50,7 @@ * * @param operands the DataElementOperands. */ - void createCrossTabTable( Collection operands, String key ); + void createCrossTabTable( List operands, String key ); /** * Drops the crosstab table. === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/JDBCCrossTabStore.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/JDBCCrossTabStore.java 2011-06-02 12:50:56 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/JDBCCrossTabStore.java 2011-06-04 13:52:42 +0000 @@ -62,7 +62,7 @@ // CrossTabStore implementation // ------------------------------------------------------------------------- - public void createCrossTabTable( final Collection operands, String key ) + public void createCrossTabTable( List operands, String key ) { final StringBuffer sql = new StringBuffer( "CREATE TABLE " + TABLE_PREFIX + key + " ( " ); === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java 2011-06-03 21:33:10 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java 2011-06-04 13:52:42 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Set; @@ -192,7 +193,7 @@ // Remove operands without data // --------------------------------------------------------------------- - allOperands = new HashSet( crossTabService.getOperandsWithData( allOperands ) ); + allOperands = crossTabService.getOperandsWithData( allOperands ); dataElementOperands.retainAll( allOperands ); indicatorOperands.retainAll( allOperands ); @@ -208,7 +209,7 @@ Collection childrenIds = organisationUnitService.getOrganisationUnitHierarchy().getChildren( organisationUnitIds ); Collection intersectingPeriodIds = ConversionUtils.getIdentifiers( Period.class, periodService.getIntersectionPeriods( periods ) ); - String key = crossTabService.populateCrossTabTable( allOperands, intersectingPeriodIds, childrenIds ); + String key = crossTabService.populateCrossTabTable( new ArrayList( allOperands ), intersectingPeriodIds, childrenIds ); if ( CollectionUtils.isEmpty( allOperands ) ) { @@ -249,7 +250,7 @@ { count += dataElementDataMart.exportDataValues( dataElementOperands, periods, organisationUnits, key ); - log.info( "Exported values for data element operands: " + TimeUtils.getHMS() ); + log.info( "Exported values for data element operands (" + dataElementOperands.size() + "): " + TimeUtils.getHMS() ); } // --------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/test/java/org/hisp/dhis/datamart/crosstab/CrossTabServiceTest.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/test/java/org/hisp/dhis/datamart/crosstab/CrossTabServiceTest.java 2011-04-15 15:02:55 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/test/java/org/hisp/dhis/datamart/crosstab/CrossTabServiceTest.java 2011-06-04 13:52:42 +0000 @@ -31,10 +31,12 @@ import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import org.hisp.dhis.DhisTest; import org.hisp.dhis.dataelement.DataElement; @@ -65,7 +67,7 @@ private Iterator generatedPeriods; - private Collection operands; + private List operands; private Collection periodIds; private Collection organisationUnitIds; @@ -154,7 +156,7 @@ organisationUnitIds.add( organisationUnitService.addOrganisationUnit( organisationUnit ) ); } - operands = categoryService.getOperands( dataElements ); + operands = new ArrayList( categoryService.getOperands( dataElements ) ); for ( DataElement dataElement : dataElements ) {