@Override public DateTimeUnit getDateWithOffset( DateTimeUnit dateTimeUnit, int offset, Calendar calendar ) { return calendar.plusMonths( dateTimeUnit, offset * 6 ); }
@Override public DateTimeUnit getDateWithOffset( DateTimeUnit dateTimeUnit, int offset, Calendar calendar ) { return calendar.plusMonths( dateTimeUnit, 2 * offset ); }
@Override public DateTimeUnit getDateWithOffset( DateTimeUnit dateTimeUnit, int offset, Calendar calendar ) { return calendar.plusMonths( dateTimeUnit, offset * 3 ); }
@Override public DateTimeUnit getDateWithOffset( DateTimeUnit dateTimeUnit, int offset, Calendar calendar ) { return calendar.plusMonths( dateTimeUnit, offset ); }
@Override public List<Period> generateRollingPeriods( DateTimeUnit dateTimeUnit, Calendar calendar ) { dateTimeUnit.setDay( 1 ); DateTimeUnit iterationDateTimeUnit = calendar.minusMonths( dateTimeUnit, 9 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 4; i++ ) { periods.add( createPeriod( iterationDateTimeUnit, calendar ) ); iterationDateTimeUnit = calendar.plusMonths( iterationDateTimeUnit, 3 ); } return periods; }
/** * Generates the last 12 months where the last one is the month which the * given date is inside. */ @Override public List<Period> generateRollingPeriods( DateTimeUnit dateTimeUnit, Calendar calendar ) { dateTimeUnit.setDay( 1 ); DateTimeUnit iterationDateTimeUnit = calendar.minusMonths( dateTimeUnit, 11 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 12; i++ ) { periods.add( createPeriod( iterationDateTimeUnit, calendar ) ); iterationDateTimeUnit = calendar.plusMonths( iterationDateTimeUnit, 1 ); } return periods; }
/** * Generates the last 6 bi-months where the last one is the bi-month * which the given date is inside. */ @Override public List<Period> generateRollingPeriods( DateTimeUnit dateTimeUnit, Calendar calendar ) { dateTimeUnit.setDay( 1 ); DateTimeUnit iterationDateTimeUnit = calendar.minusMonths( dateTimeUnit, (dateTimeUnit.getMonth() % 2) + 10 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 6; i++ ) { periods.add( createPeriod( iterationDateTimeUnit, calendar ) ); iterationDateTimeUnit = calendar.plusMonths( iterationDateTimeUnit, 2 ); } return periods; }
/** * Generates quarterly Periods for the whole year in which the given * Period's startDate exists. */ @Override public List<Period> generatePeriods( DateTimeUnit dateTimeUnit ) { org.hisp.dhis.calendar.Calendar cal = getCalendar(); dateTimeUnit.setMonth( 1 ); dateTimeUnit.setDay( 1 ); int year = dateTimeUnit.getYear(); List<Period> periods = Lists.newArrayList(); while ( year == dateTimeUnit.getYear() ) { periods.add( createPeriod( dateTimeUnit, cal ) ); dateTimeUnit = cal.plusMonths( dateTimeUnit, 3 ); } return periods; }
/** * Generates bimonthly Periods for the whole year in which the start date of * the given Period exists. */ @Override public List<Period> generatePeriods( DateTimeUnit dateTimeUnit ) { Calendar cal = getCalendar(); dateTimeUnit.setMonth( 1 ); dateTimeUnit.setDay( 1 ); List<Period> periods = Lists.newArrayList(); int year = dateTimeUnit.getYear(); while ( dateTimeUnit.getYear() == year ) { periods.add( createPeriod( dateTimeUnit, cal ) ); dateTimeUnit = cal.plusMonths( dateTimeUnit, 2 ); } return periods; }
/** * Generates monthly Periods for the whole year in which the given Period's * startDate exists. */ @Override public List<Period> generatePeriods( DateTimeUnit dateTimeUnit ) { Calendar cal = getCalendar(); dateTimeUnit.setMonth( 1 ); dateTimeUnit.setDay( 1 ); List<Period> periods = Lists.newArrayList(); int year = dateTimeUnit.getYear(); while ( dateTimeUnit.getYear() == year ) { periods.add( createPeriod( dateTimeUnit, cal ) ); dateTimeUnit = cal.plusMonths( dateTimeUnit, 1 ); } return periods; }
/** * Adds the given amount of time to the given calendar field. * * @param field the calendar field. * @param amount the amount of time. */ public Cal add( int field, int amount ) { switch ( field ) { case Calendar.YEAR: dateTimeUnit = getCalendar().plusYears( dateTimeUnit, amount ); case Calendar.MONTH: dateTimeUnit = getCalendar().plusMonths( dateTimeUnit, amount ); case Calendar.DAY_OF_MONTH: case Calendar.DAY_OF_YEAR: dateTimeUnit = getCalendar().plusDays( dateTimeUnit, amount ); break; default: throw new UnsupportedOperationException(); } return this; }
@Override public Period createPeriod( DateTimeUnit dateTimeUnit, Calendar calendar ) { DateTimeUnit start = new DateTimeUnit( dateTimeUnit ); start.setMonth( ((start.getMonth() - 1) - ((start.getMonth() - 1) % 2)) + 1 ); start.setDay( 1 ); DateTimeUnit end = new DateTimeUnit( start ); end = calendar.plusMonths( end, 1 ); end.setDay( calendar.daysInMonth( end.getYear(), end.getMonth() ) ); return toIsoPeriod( start, end, calendar ); }
end = calendar.plusMonths( end, 2 ); end = calendar.minusDays( end, 1 ); end = calendar.plusMonths( end, 3 ); end = calendar.minusDays( end, 1 ); end = calendar.plusMonths( end, 6 ); end = calendar.minusDays( end, 1 ); end = calendar.plusMonths( end, 6 ); end = calendar.minusDays( end, 1 ); end = calendar.plusMonths( end, 6 ); end = calendar.minusDays( end, 1 );
@Override public Period createPeriod( DateTimeUnit dateTimeUnit, org.hisp.dhis.calendar.Calendar calendar ) { DateTimeUnit start = new DateTimeUnit( dateTimeUnit ); int baseMonth = getBaseMonth(); int year = start.getMonth() < baseMonth ? (start.getYear() - 1) : start.getYear(); int month = start.getMonth() >= baseMonth && start.getMonth() < (baseMonth + 6) ? baseMonth : (baseMonth + 6); start.setYear( year ); start.setMonth( month ); start.setDay( 1 ); DateTimeUnit end = new DateTimeUnit( start ); end = calendar.plusMonths( end, 5 ); end.setDay( calendar.daysInMonth( end.getYear(), end.getMonth() ) ); return toIsoPeriod( start, end, calendar ); }
@Override public Period createPeriod( DateTimeUnit dateTimeUnit, Calendar calendar ) { DateTimeUnit start = new DateTimeUnit( dateTimeUnit ); start.setMonth( ((dateTimeUnit.getMonth() - 1) - ((dateTimeUnit.getMonth() - 1) % 3)) + 1 ); start.setDay( 1 ); if ( start.getMonth() > 12 ) { start.setYear( start.getYear() + 1 ); start.setMonth( 1 ); } DateTimeUnit end = new DateTimeUnit( start ); end = calendar.plusMonths( end, 2 ); end.setDay( calendar.daysInMonth( end.getYear(), end.getMonth() ) ); return toIsoPeriod( start, end, calendar ); }
@Override public Period createPeriod( DateTimeUnit dateTimeUnit, Calendar calendar ) { DateTimeUnit start = new DateTimeUnit( dateTimeUnit ); int baseMonth = getBaseMonth(); int year = start.getYear(); int month = baseMonth; if ( start.getMonth() < 5 ) { month = baseMonth; year = year - 1; } if ( start.getMonth() >= 5 && start.getMonth() <= 10 ) { month = baseMonth - 6; } start.setYear( year ); start.setMonth( month ); start.setDay( 1 ); DateTimeUnit end = new DateTimeUnit( start ); end = calendar.plusMonths( end, 5 ); end.setDay( calendar.daysInMonth( end.getYear(), end.getMonth() ) ); return toIsoPeriod( start, end, calendar ); }