← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 6281: Improved reporting rate summary

 

------------------------------------------------------------
revno: 6281
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2012-03-16 13:05:01 +0100
message:
  Improved reporting rate summary
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/MonthlyPeriodType.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java
  dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java
  dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/QuarterlyPeriodTypeTest.java
  dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/WeeklyPeriodTypeTest.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/CompulsoryDataSetCompletenessService.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RatioDataSetCompletenessService.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.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-api/src/main/java/org/hisp/dhis/period/MonthlyPeriodType.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/MonthlyPeriodType.java	2012-02-13 14:30:59 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/MonthlyPeriodType.java	2012-03-16 12:05:01 +0000
@@ -62,6 +62,7 @@
     // -------------------------------------------------------------------------
     // PeriodType functionality
     // -------------------------------------------------------------------------
+    
     @Override
     public String getName()
     {

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java	2011-12-26 10:07:59 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java	2012-03-16 12:05:01 +0000
@@ -200,11 +200,27 @@
             format.applyPattern( DEFAULT_DATE_FORMAT );
 
             return dateString != null ? format.parse( dateString ) : null;
-        } catch ( ParseException ex )
+        } 
+        catch ( ParseException ex )
         {
             throw new RuntimeException( "Failed to parse medium date", ex );
         }
     }
+    
+    /**
+     * Return the potential number of periods of the given period type which is
+     * spanned by this period.
+     * 
+     * @param type the period type.
+     * @return the potential number of periods of the given period type spanned 
+     *         by this period.
+     */
+    public int getPeriodSpan( PeriodType type )
+    {
+        double no = (double) this.periodType.getFrequencyOrder() / type.getFrequencyOrder();
+        
+        return (int) Math.round( no );
+    }
 
     // -------------------------------------------------------------------------
     // hashCode, equals and toString

=== modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java'
--- dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java	2012-02-12 17:57:41 +0000
+++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java	2012-03-16 12:05:01 +0000
@@ -1,4 +1,5 @@
 package org.hisp.dhis.period;
+
 /*
  * Copyright (c) 2004-2012, University of Oslo
  * All rights reserved.
@@ -26,7 +27,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertEquals;
 
 import java.util.List;
 
@@ -192,4 +193,14 @@
         assertEquals( periodType.createPeriod( new Cal( 2010, 1, 1 ).time() ), periods.get( 5 ) );
         assertEquals( periodType.createPeriod( new Cal( 2010, 2, 1 ).time() ), periods.get( 6 ) );
     }
+    
+    @Test
+    public void testGetPeriodsBetween()
+    {
+        assertEquals( 1, periodType.createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 2, new BiMonthlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 3, new QuarterlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 6, new SixMonthlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 12, new YearlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+    }
 }

=== modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/QuarterlyPeriodTypeTest.java'
--- dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/QuarterlyPeriodTypeTest.java	2012-02-12 17:57:41 +0000
+++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/QuarterlyPeriodTypeTest.java	2012-03-16 12:05:01 +0000
@@ -27,7 +27,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertEquals;
 
 import java.util.List;
 
@@ -165,4 +165,12 @@
         assertEquals( periodType.createPeriod( new Cal( 2009, 10, 1 ).time() ), periods.get( 1 ) );
         assertEquals( periodType.createPeriod( new Cal( 2010, 1, 1 ).time() ), periods.get( 2 ) );
     }
+
+    @Test
+    public void testGetPeriodsBetween()
+    {
+        assertEquals( 1, periodType.createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 2, new SixMonthlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 4, new YearlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+    }
 }

=== modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/WeeklyPeriodTypeTest.java'
--- dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/WeeklyPeriodTypeTest.java	2011-04-11 11:59:53 +0000
+++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/WeeklyPeriodTypeTest.java	2012-03-16 12:05:01 +0000
@@ -27,7 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -44,37 +43,26 @@
  */
 public class WeeklyPeriodTypeTest
 {
-    /**
-     * Test method for
-     * {@link org.hisp.dhis.period.WeeklyPeriodType#generatePeriods(org.hisp.dhis.period.Period)}
-     * .
-     */
     @Test
     @Ignore
     public void testGeneratePeriods()
     {
-        // get calendar of default locale
         Calendar testCal = Calendar.getInstance();
         WeeklyPeriodType wpt = new WeeklyPeriodType();
+        
         for ( int year = 1990; year < 2020; year++ )
         {
             for ( int day = -7; day < 7; day++ )
             {
                 testCal.set( year, 0, 1 ); // 1st day of year
                 testCal.add( Calendar.DATE, day );
-                // System.err.println("testing "+testCal.getTime());
                 Period p1 = wpt.createPeriod( testCal.getTime() );
                 List<Period> generatedPeriods = wpt.generatePeriods( p1 );
                 assertTrue( "Period " + p1 + " in generated set", generatedPeriods.contains( p1 ) );
             }
         }
-
     }
 
-    /**
-     * Test method for
-     * {@link org.hisp.dhis.period.WeeklyPeriodType#createPeriod(Calendar)}.
-     */
     @Test
     public void testCreatePeriod()
     {
@@ -110,20 +98,19 @@
 
         Period period = weekly.createPeriod( "2009W1" );
 
-        assertEquals(cal.getTime(), period.getStartDate());
+        assertEquals( cal.getTime(), period.getStartDate() );
 
         cal.set( 2011, 0, 3 );
 
         period = weekly.createPeriod( "2011W1" );
 
-        assertEquals(cal.getTime(), period.getStartDate());
+        assertEquals( cal.getTime(), period.getStartDate() );
 
         period = weekly.createPeriod( "2011W11" );
 
         cal.set( 2011, 2, 14 );
 
-        assertEquals(cal.getTime(), period.getStartDate());
-
+        assertEquals( cal.getTime(), period.getStartDate() );
     }
 
     @Test
@@ -135,4 +122,17 @@
         Period p = wpt.createPeriod( cal.getTime() );
         assertEquals( p.getIsoDate(), "2011W1");
     }
+    
+    @Test
+    public void testGetPeriodsBetween()
+    {
+        PeriodType periodType = new WeeklyPeriodType();
+
+        assertEquals( 1, periodType.createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 4, new MonthlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 9, new BiMonthlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 13, new QuarterlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 26, new SixMonthlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+        assertEquals( 52, new YearlyPeriodType().createPeriod().getPeriodSpan( periodType ) );
+    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java	2012-03-15 16:04:20 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java	2012-03-16 12:05:01 +0000
@@ -142,7 +142,7 @@
     public abstract int getRegistrationsOnTime( DataSet dataSet, Collection<Integer> relevantSources, Collection<Integer> periods,
         Date deadline );
 
-    public abstract int getSources( DataSet dataSet, Collection<Integer> relevantSources, Collection<Integer> periods );
+    public abstract int getSources( DataSet dataSet, Collection<Integer> relevantSources, Period period );
 
     // -------------------------------------------------------------------------
     // DataSetCompleteness
@@ -258,7 +258,7 @@
 
             final DataSetCompletenessResult result = new DataSetCompletenessResult();
 
-            result.setSources( getSources( dataSet, relevantSources, periodsBetweenDates ) );
+            result.setSources( getSources( dataSet, relevantSources, period ) );
 
             if ( result.getSources() > 0 )
             {
@@ -342,7 +342,7 @@
         final DataSetCompletenessResult result = new DataSetCompletenessResult();
 
         result.setName( unit.getName() );
-        result.setSources( getSources( dataSet, relevantSources, periodsBetweenDates ) );
+        result.setSources( getSources( dataSet, relevantSources, period ) );
 
         if ( result.getSources() > 0 )
         {

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/CompulsoryDataSetCompletenessService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/CompulsoryDataSetCompletenessService.java	2012-03-15 16:04:20 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/CompulsoryDataSetCompletenessService.java	2012-03-16 12:05:01 +0000
@@ -31,6 +31,7 @@
 import java.util.Date;
 
 import org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.period.Period;
 
 /**
  * @author Lars Helge Overland
@@ -51,8 +52,8 @@
     }
 
     @Override
-    public int getSources( DataSet dataSet, Collection<Integer> relevantSources, Collection<Integer> periods )
+    public int getSources( DataSet dataSet, Collection<Integer> relevantSources, Period period )
     {
-        return relevantSources.size() * periods.size();
+        return relevantSources.size() * period.getPeriodSpan( dataSet.getPeriodType() );
     }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RatioDataSetCompletenessService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RatioDataSetCompletenessService.java	2012-03-15 16:04:20 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RatioDataSetCompletenessService.java	2012-03-16 12:05:01 +0000
@@ -32,6 +32,7 @@
 
 import org.hisp.dhis.dataelement.DataElementOperand;
 import org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.period.Period;
 
 /**
  * @author Lars Helge Overland
@@ -53,12 +54,12 @@
     }
 
     @Override
-    public int getSources( DataSet dataSet, Collection<Integer> relevantSources, Collection<Integer> periods )
+    public int getSources( DataSet dataSet, Collection<Integer> relevantSources, Period period )
     {
         Collection<DataElementOperand> operands = dataElementService.getAllGeneratedOperands( dataSet.getDataElements() );
         
         // Number of operands in data set times number of organisation units times number of periods
         
-        return operands != null && relevantSources != null ? ( operands.size() * relevantSources.size() * periods.size() ) : 0; 
+        return operands != null && relevantSources != null ? ( operands.size() * relevantSources.size() * period.getPeriodSpan( dataSet.getPeriodType() ) ) : 0; 
     }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.java	2012-03-15 16:04:20 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.java	2012-03-16 12:05:01 +0000
@@ -31,6 +31,7 @@
 import java.util.Date;
 
 import org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.period.Period;
 
 /**
  * @author Lars Helge Overland
@@ -51,8 +52,8 @@
     }
 
     @Override
-    public int getSources( DataSet dataSet, Collection<Integer> relevantSources, Collection<Integer> periods )
+    public int getSources( DataSet dataSet, Collection<Integer> relevantSources, Period period )
     {
-        return relevantSources.size() * periods.size();
+        return relevantSources.size() * period.getPeriodSpan( dataSet.getPeriodType() );
     }
 }