dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #06350
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 2003: Code simplification
------------------------------------------------------------
revno: 2003
committer: Lars <larshelg@larshelg-laptop>
branch nick: trunk
timestamp: Fri 2010-06-18 00:42:56 +0200
message:
Code simplification
modified:
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/AggregationCache.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/MemoryAggregationCache.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageBoolAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/DataElementAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumBoolAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/AggregationCache.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/AggregationCache.java 2010-06-08 19:47:40 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/AggregationCache.java 2010-06-17 22:42:56 +0000
@@ -30,7 +30,6 @@
import java.util.Collection;
import java.util.Date;
-import org.hisp.dhis.organisationunit.OrganisationUnitHierarchy;
import org.hisp.dhis.period.Period;
/**
@@ -39,7 +38,7 @@
*/
public interface AggregationCache
{
- Collection<Period> getIntersectingPeriods( Date startDate, Date endDate );
+ Collection<Integer> getIntersectingPeriods( Date startDate, Date endDate );
Period getPeriod( int id );
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/MemoryAggregationCache.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/MemoryAggregationCache.java 2010-06-08 19:47:40 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/cache/MemoryAggregationCache.java 2010-06-17 22:42:56 +0000
@@ -36,6 +36,7 @@
import org.hisp.dhis.organisationunit.OrganisationUnitService;
import org.hisp.dhis.period.Period;
import org.hisp.dhis.period.PeriodService;
+import org.hisp.dhis.system.util.ConversionUtils;
/**
* @author Lars Helge Overland
@@ -56,7 +57,7 @@
private final ThreadLocal<Map<String, Collection<Integer>>> childrenCache = new ThreadLocal<Map<String,Collection<Integer>>>();
- private final ThreadLocal<Map<String, Collection<Period>>> intersectingPeriodCache = new ThreadLocal<Map<String,Collection<Period>>>();
+ private final ThreadLocal<Map<String, Collection<Integer>>> intersectingPeriodCache = new ThreadLocal<Map<String,Collection<Integer>>>();
private final ThreadLocal<Map<String, Period>> periodCache = new ThreadLocal<Map<String,Period>>();
@@ -84,22 +85,22 @@
// AggregationCache implementation
// -------------------------------------------------------------------------
- public Collection<Period> getIntersectingPeriods( final Date startDate, final Date endDate )
+ public Collection<Integer> getIntersectingPeriods( final Date startDate, final Date endDate )
{
final String key = startDate.toString() + SEPARATOR + endDate.toString();
- Map<String, Collection<Period>> cache = intersectingPeriodCache.get();
+ Map<String, Collection<Integer>> cache = intersectingPeriodCache.get();
- Collection<Period> periods = null;
+ Collection<Integer> periods = null;
if ( cache != null && ( periods = cache.get( key ) ) != null )
{
return periods;
}
- periods = periodService.getIntersectingPeriods( startDate, endDate );
+ periods = ConversionUtils.getIdentifiers( Period.class, periodService.getIntersectingPeriods( startDate, endDate ) );
- cache = ( cache == null ) ? new HashMap<String, Collection<Period>>() : cache;
+ cache = ( cache == null ) ? new HashMap<String, Collection<Integer>>() : cache;
cache.put( key, periods );
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageBoolAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageBoolAggregator.java 2010-06-17 21:08:46 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageBoolAggregator.java 2010-06-17 22:42:56 +0000
@@ -31,7 +31,6 @@
import static org.hisp.dhis.dataelement.DataElement.VALUE_TYPE_BOOL;
import static org.hisp.dhis.system.util.DateUtils.getDaysInclusive;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -84,8 +83,8 @@
return new HashMap<DataElementOperand, Double>();
}
- final Collection<CrossTabDataValue> crossTabValues =
- getCrossTabDataValues( operandIndexMap, period.getStartDate(), period.getEndDate(), unit.getId(), hierarchy );
+ final Collection<CrossTabDataValue> crossTabValues = dataMartStore.getCrossTabDataValues( operandIndexMap,
+ aggregationCache.getIntersectingPeriods( period.getStartDate(), period.getEndDate() ), hierarchy.getChildren( unit.getId() ) );
final Map<DataElementOperand, double[]> entries = getAggregate( crossTabValues, period.getStartDate(),
period.getEndDate(), period.getStartDate(), period.getEndDate(), unitLevel ); // <Operand, [total value, total relevant days]>
@@ -104,23 +103,7 @@
}
}
- return values;
-
- }
-
- public Collection<CrossTabDataValue> getCrossTabDataValues( final Map<DataElementOperand, Integer> operandIndexMap,
- final Date startDate, final Date endDate, final int parentId, final OrganisationUnitHierarchy hierarchy )
- {
- final Collection<Period> periods = aggregationCache.getIntersectingPeriods( startDate, endDate );
-
- final Collection<Integer> periodIds = new ArrayList<Integer>( periods.size() );
-
- for ( final Period period : periods )
- {
- periodIds.add( period.getId() );
- }
-
- return dataMartStore.getCrossTabDataValues( operandIndexMap, periodIds, hierarchy.getChildren( parentId ) );
+ return values;
}
public Map<DataElementOperand, double[]> getAggregate( final Collection<CrossTabDataValue> crossTabValues,
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java 2010-06-15 10:15:01 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java 2010-06-17 22:42:56 +0000
@@ -31,7 +31,6 @@
import static org.hisp.dhis.dataelement.DataElement.VALUE_TYPE_INT;
import static org.hisp.dhis.system.util.DateUtils.getDaysInclusive;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -98,7 +97,7 @@
for ( final Integer unitId : unitIds )
{
final Collection<CrossTabDataValue> crossTabValues =
- getCrossTabDataValues( operandIndexMap, period.getStartDate(), period.getEndDate(), unitId, null );
+ dataMartStore.getCrossTabDataValues( operandIndexMap, aggregationCache.getIntersectingPeriods( period.getStartDate(), period.getEndDate() ), unitId );
final Map<DataElementOperand, double[]> entries = getAggregate( crossTabValues, period.getStartDate(),
period.getEndDate(), period.getStartDate(), period.getEndDate(), unitLevel ); // <Operand, [total value, total relevant days]>
@@ -119,21 +118,6 @@
return values;
}
- public Collection<CrossTabDataValue> getCrossTabDataValues( final Map<DataElementOperand, Integer> operandIndexMap,
- final Date startDate, final Date endDate, final int parentId, final OrganisationUnitHierarchy hierarchy )
- {
- final Collection<Period> periods = aggregationCache.getIntersectingPeriods( startDate, endDate );
-
- final Collection<Integer> periodIds = new ArrayList<Integer>( periods.size() );
-
- for ( final Period period : periods )
- {
- periodIds.add( period.getId() );
- }
-
- return dataMartStore.getCrossTabDataValues( operandIndexMap, periodIds, parentId );
- }
-
public Map<DataElementOperand, double[]> getAggregate( final Collection<CrossTabDataValue> crossTabValues,
final Date startDate, final Date endDate, final Date aggregationStartDate, final Date aggregationEndDate, int unitLevel )
{
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java 2010-06-17 21:08:46 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java 2010-06-17 22:42:56 +0000
@@ -31,7 +31,6 @@
import static org.hisp.dhis.dataelement.DataElement.VALUE_TYPE_INT;
import static org.hisp.dhis.system.util.DateUtils.getDaysInclusive;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -88,11 +87,8 @@
return new HashMap<DataElementOperand, Double>();
}
- double average = 0.0;
- double existingAverage = 0.0;
-
- final Collection<CrossTabDataValue> crossTabValues =
- getCrossTabDataValues( operandIndexMap, period.getStartDate(), period.getEndDate(), unit.getId(), hierarchy );
+ final Collection<CrossTabDataValue> crossTabValues = dataMartStore.getCrossTabDataValues( operandIndexMap,
+ aggregationCache.getIntersectingPeriods( period.getStartDate(), period.getEndDate() ), hierarchy.getChildren( unit.getId() ) );
final Map<DataElementOperand, double[]> entries = getAggregate( crossTabValues, period.getStartDate(),
period.getEndDate(), period.getStartDate(), period.getEndDate(), unitLevel ); // <Operand, [total value, total relevant days]>
@@ -104,34 +100,12 @@
if ( entry.getValue() != null && entry.getValue()[ 1 ] > 0 )
{
values.put( entry.getKey(), entry.getValue()[ 0 ] );
- /*
- average = entry.getValue()[ 0 ] / entry.getValue()[ 1 ];
-
- existingAverage = values.containsKey( entry.getKey() ) ? values.get( entry.getKey() ) : 0;
-
- values.put( entry.getKey(), average + existingAverage ); //TODO simplify
- */
}
}
return values;
}
- public Collection<CrossTabDataValue> getCrossTabDataValues( final Map<DataElementOperand, Integer> operandIndexMap,
- final Date startDate, final Date endDate, final int parentId, final OrganisationUnitHierarchy hierarchy )
- {
- final Collection<Period> periods = aggregationCache.getIntersectingPeriods( startDate, endDate );
-
- final Collection<Integer> periodIds = new ArrayList<Integer>( periods.size() );
-
- for ( final Period period : periods )
- {
- periodIds.add( period.getId() );
- }
-
- return dataMartStore.getCrossTabDataValues( operandIndexMap, periodIds, hierarchy.getChildren( parentId ) );
- }
-
public Map<DataElementOperand, double[]> getAggregate( final Collection<CrossTabDataValue> crossTabValues,
final Date startDate, final Date endDate, final Date aggregationStartDate, final Date aggregationEndDate, int unitLevel )
{
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/DataElementAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/DataElementAggregator.java 2010-06-15 10:15:01 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/DataElementAggregator.java 2010-06-17 22:42:56 +0000
@@ -49,9 +49,6 @@
Map<DataElementOperand, Double> getAggregatedValues( final Map<DataElementOperand, Integer> operandIndexMap,
final Period period, final OrganisationUnit unit, int unitLevel, final OrganisationUnitHierarchy hierarchy );
- Collection<CrossTabDataValue> getCrossTabDataValues( final Map<DataElementOperand, Integer> operandIndexMap,
- final Date startDate, final Date endDate, final int parentId, final OrganisationUnitHierarchy hierarchy );
-
Map<DataElementOperand, double[]> getAggregate( final Collection<CrossTabDataValue> crossTabValues,
final Date startDate, final Date endDate, final Date aggregationStartDate, final Date aggregationEndDate, int unitLevel );
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumBoolAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumBoolAggregator.java 2010-06-17 21:08:46 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumBoolAggregator.java 2010-06-17 22:42:56 +0000
@@ -32,7 +32,6 @@
import static org.hisp.dhis.system.util.DateUtils.getDaysInclusive;
import static org.hisp.dhis.system.util.MathUtils.getFloor;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -85,8 +84,8 @@
return new HashMap<DataElementOperand, Double>();
}
- final Collection<CrossTabDataValue> crossTabValues =
- getCrossTabDataValues( operandIndexMap, period.getStartDate(), period.getEndDate(), unit.getId(), hierarchy );
+ final Collection<CrossTabDataValue> crossTabValues = dataMartStore.getCrossTabDataValues( operandIndexMap,
+ aggregationCache.getIntersectingPeriods( period.getStartDate(), period.getEndDate() ), hierarchy.getChildren( unit.getId() ) );
final Map<DataElementOperand, double[]> entries = getAggregate( crossTabValues, period.getStartDate(),
period.getEndDate(), period.getStartDate(), period.getEndDate(), unitLevel ); // <data element id, [total value, total relevant days]>
@@ -103,21 +102,6 @@
return values;
}
-
- public Collection<CrossTabDataValue> getCrossTabDataValues( final Map<DataElementOperand, Integer> operandIndexMap,
- final Date startDate, final Date endDate, final int parentId, final OrganisationUnitHierarchy hierarchy )
- {
- final Collection<Period> periods = aggregationCache.getIntersectingPeriods( startDate, endDate );
-
- final Collection<Integer> periodIds = new ArrayList<Integer>( periods.size() );
-
- for ( final Period period : periods )
- {
- periodIds.add( period.getId() );
- }
-
- return dataMartStore.getCrossTabDataValues( operandIndexMap, periodIds, hierarchy.getChildren( parentId ) );
- }
public Map<DataElementOperand, double[]> getAggregate( final Collection<CrossTabDataValue> crossTabValues,
final Date startDate, final Date endDate, final Date aggregationStartDate, final Date aggregationEndDate, int unitLevel )
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java 2010-06-17 21:08:46 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java 2010-06-17 22:42:56 +0000
@@ -31,7 +31,6 @@
import static org.hisp.dhis.dataelement.DataElement.VALUE_TYPE_INT;
import static org.hisp.dhis.system.util.DateUtils.getDaysInclusive;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -88,8 +87,8 @@
return new HashMap<DataElementOperand, Double>();
}
- final Collection<CrossTabDataValue> crossTabValues =
- getCrossTabDataValues( operandIndexMap, period.getStartDate(), period.getEndDate(), unit.getId(), hierarchy );
+ final Collection<CrossTabDataValue> crossTabValues = dataMartStore.getCrossTabDataValues( operandIndexMap,
+ aggregationCache.getIntersectingPeriods( period.getStartDate(), period.getEndDate() ), hierarchy.getChildren( unit.getId() ) );
final Map<DataElementOperand, double[]> entries = getAggregate( crossTabValues, period.getStartDate(),
period.getEndDate(), period.getStartDate(), period.getEndDate(), unitLevel ); // <Operand, [total value, total relevant days]>
@@ -106,21 +105,6 @@
return values;
}
-
- public Collection<CrossTabDataValue> getCrossTabDataValues( final Map<DataElementOperand, Integer> operandIndexMap,
- final Date startDate, final Date endDate, final int parentId, final OrganisationUnitHierarchy hierarchy ) //TODO replace inline
- {
- final Collection<Period> periods = aggregationCache.getIntersectingPeriods( startDate, endDate );
-
- final Collection<Integer> periodIds = new ArrayList<Integer>( periods.size() );
-
- for ( final Period period : periods )
- {
- periodIds.add( period.getId() );
- }
-
- return dataMartStore.getCrossTabDataValues( operandIndexMap, periodIds, hierarchy.getChildren( parentId ) );
- }
public Map<DataElementOperand, double[]> getAggregate( final Collection<CrossTabDataValue> crossTabValues,
final Date startDate, final Date endDate, final Date aggregationStartDate, final Date aggregationEndDate, int unitLevel )