=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/RelativePeriods.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/RelativePeriods.java 2012-07-31 17:51:33 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/RelativePeriods.java 2012-07-31 18:18:33 +0000 @@ -342,14 +342,6 @@ } /** - * Gets a list of Periods rewinded from current date. - */ - public List getRewindedRelativePeriods() - { - return getRewindedRelativePeriods( null ); - } - - /** * Gets the PeriodType with the highest frequency from a list of Periods. */ public PeriodType getHighestFrequencyPeriodType( List periods ) @@ -377,26 +369,26 @@ /** * Gets a list of Periods rewinded from current date. */ - public List getRewindedRelativePeriods( Integer rewindedPeriods ) + public List getRewindedRelativePeriods() + { + return getRewindedRelativePeriods( null, null, null, false ); + } + + /** + * Gets a list of Periods rewinded from current date. + */ + public List getRewindedRelativePeriods( Integer rewindedPeriods, Date date, I18nFormat format, boolean dynamicNames ) { List periods = getRelativePeriods(); PeriodType periodType = getHighestFrequencyPeriodType( periods ); - Date rewindedDate = periodType.getRewindedDate( null, rewindedPeriods ); + Date rewindedDate = periodType.getRewindedDate( date, rewindedPeriods ); rewindedDate = subtractMonth( 1, rewindedDate ); - return getRelativePeriods( rewindedDate, null, false ); + return getRelativePeriods( rewindedDate, format, dynamicNames ); } /** - * Gets a list of Periods based on the given input and the state of this - * RelativePeriods. The current date is set to todays date minus one month. - * - * @param format the i18n format. - * @return a list of relative Periods. - */ - - /** * Gets a list of Periods relative to current date. */ public List getRelativePeriods() === modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/RelativePeriodTest.java' --- dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/RelativePeriodTest.java 2012-07-30 13:09:47 +0000 +++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/RelativePeriodTest.java 2012-07-31 18:18:33 +0000 @@ -63,7 +63,8 @@ RelativePeriods periods = new RelativePeriods( true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true ); List relatives = periods.getRelativePeriods( getDate( 2001, 1, 1 ), i18nFormat, false ); - + + assertEquals( 126, relatives.size() ); assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 1, 1 ), getDate( 2001, 1, 31 ) ) ) ); assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 2, 1 ), getDate( 2001, 2, 28 ) ) ) ); assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 3, 1 ), getDate( 2001, 3, 31 ) ) ) ); @@ -105,7 +106,7 @@ assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 9, 1 ), getDate( 2000, 9, 30 ) ) ) ); assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 10, 1 ), getDate( 2000, 10, 31 ) ) ) ); assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 11, 1 ), getDate( 2000, 11, 30 ) ) ) ); - assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 12, 1 ), getDate( 2000, 12, 31 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 12, 1 ), getDate( 2000, 12, 31 ) ) ) ); assertTrue( relatives.contains( new Period( new QuarterlyPeriodType(), getDate( 2000, 1, 1 ), getDate( 2000, 3, 31 ) ) ) ); assertTrue( relatives.contains( new Period( new QuarterlyPeriodType(), getDate( 2000, 4, 1 ), getDate( 2000, 6, 30 ) ) ) ); @@ -130,8 +131,28 @@ assertTrue( relatives.contains( new Period( new WeeklyPeriodType(), getDate( 2000, 1, 17 ), getDate( 2000, 1, 23 ) ) ) ); assertTrue( relatives.contains( new Period( new WeeklyPeriodType(), getDate( 2000, 1, 24 ), getDate( 2000, 1, 30 ) ) ) ); assertTrue( relatives.contains( new Period( new WeeklyPeriodType(), getDate( 2001, 1, 1 ), getDate( 2001, 1, 7 ) ) ) ); - - assertEquals( 126, relatives.size() ); + } + + @Test + public void testGetRewindedRelativePeriods() + { + RelativePeriods periods = new RelativePeriods().setLast12Months( true ); + + List relatives = periods.getRewindedRelativePeriods( 1, getDate( 2001, 7, 15 ), i18nFormat, false ); + + assertEquals( 12, relatives.size() ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 6, 1 ), getDate( 2000, 6, 30 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 7, 1 ), getDate( 2000, 7, 31 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 8, 1 ), getDate( 2000, 8, 31 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 9, 1 ), getDate( 2000, 9, 30 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 10, 1 ), getDate( 2000, 10, 31 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 11, 1 ), getDate( 2000, 11, 30 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2000, 12, 1 ), getDate( 2000, 12, 31 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 1, 1 ), getDate( 2001, 1, 31 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 2, 1 ), getDate( 2001, 2, 28 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 3, 1 ), getDate( 2001, 3, 31 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 4, 1 ), getDate( 2001, 4, 30 ) ) ) ); + assertTrue( relatives.contains( new Period( new MonthlyPeriodType(), getDate( 2001, 5, 1 ), getDate( 2001, 5, 31 ) ) ) ); } @Test === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2012-07-12 09:22:36 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2012-07-31 18:18:33 +0000 @@ -190,8 +190,11 @@ { if ( chart.getRelatives() != null ) { - chart.setRelativePeriods( periodService.reloadPeriods( chart.getRelatives().getRelativePeriods( - date, format, true ) ) ); + List periods = chart.isRewindRelativePeriods() ? + chart.getRelatives().getRewindedRelativePeriods( 1, date, format, true ) : + chart.getRelatives().getRelativePeriods( date, format, true ); + + chart.setRelativePeriods( periodService.reloadPeriods( periods ) ); } User user = currentUserService.getCurrentUser();