=== 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 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 relevantSources, Collection periods, Date deadline ); - public abstract int getSources( DataSet dataSet, Collection relevantSources, Collection periods ); + public abstract int getSources( DataSet dataSet, Collection 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 relevantSources, Collection periods ) + public int getSources( DataSet dataSet, Collection 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 relevantSources, Collection periods ) + public int getSources( DataSet dataSet, Collection relevantSources, Period period ) { Collection 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 relevantSources, Collection periods ) + public int getSources( DataSet dataSet, Collection relevantSources, Period period ) { - return relevantSources.size() * periods.size(); + return relevantSources.size() * period.getPeriodSpan( dataSet.getPeriodType() ); } }