/** * Sets the current month and day. * * @param month the month starting at 1. * @param day the day of the month starting at 1. */ public Cal set( int month, int day ) { dateTimeUnit.setMonth( month ); dateTimeUnit.setDay( day ); return this; }
private void updateDateUnit( DateTimeUnit result ) { int dm = CONVERSION_MAP.get( result.getYear() )[result.getMonth()]; if ( result.getDay() > dm ) { result.setDay( dm ); } result.setDayOfWeek( weekday( result ) ); }
@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; }
private void updateDateUnit( DateTimeUnit result ) { int dm = getDaysFromMap( result.getYear(), result.getMonth() ); if ( result.getDay() > dm ) { result.setDay( dm ); } result.setDayOfWeek( weekday( result ) ); }
/** * 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; }
@Override public Period createPeriod( DateTimeUnit dateTimeUnit, Calendar calendar ) { DateTimeUnit start = new DateTimeUnit( dateTimeUnit ); start.setDay( 1 ); DateTimeUnit end = new DateTimeUnit( dateTimeUnit ); end.setDay( calendar.daysInMonth( end.getYear(), end.getMonth() ) ); return toIsoPeriod( start, end, calendar ); }
/** * 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 yearly periods for the last 5, current and next 5 years. */ @Override public List<Period> generatePeriods( DateTimeUnit dateTimeUnit ) { Calendar calendar = getCalendar(); dateTimeUnit = calendar.minusYears( dateTimeUnit, 5 ); dateTimeUnit.setDay( 1 ); dateTimeUnit.setMonth( 1 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 11; ++i ) { periods.add( createPeriod( dateTimeUnit, calendar ) ); dateTimeUnit = calendar.plusYears( dateTimeUnit, 1 ); } 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 daily Periods for the whole year in which the given Period's * startDate exists. */ @Override public List<Period> generatePeriods( DateTimeUnit dateTimeUnit ) { dateTimeUnit.setMonth( 1 ); dateTimeUnit.setDay( 1 ); List<Period> periods = Lists.newArrayList(); int year = dateTimeUnit.getYear(); Calendar calendar = getCalendar(); while ( year == dateTimeUnit.getYear() ) { periods.add( createPeriod( dateTimeUnit, calendar ) ); dateTimeUnit = calendar.plusDays( dateTimeUnit, 1 ); } 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; }
/** * 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; }
@Override public Period createPeriod( DateTimeUnit dateTimeUnit, Calendar calendar ) { DateTimeUnit start = new DateTimeUnit( dateTimeUnit ); DateTimeUnit end = new DateTimeUnit( dateTimeUnit ); start.setDay( 1 ); start.setMonth( 1 ); end.setMonth( calendar.monthsInYear() ); end.setDay( calendar.daysInMonth( end.getYear(), end.getMonth() ) ); return toIsoPeriod( start, end, calendar ); }
/** * Generates the last 5 years where the last one is the year which the given * date is inside. */ @Override public List<Period> generateLast5Years( Date date ) { Calendar calendar = getCalendar(); DateTimeUnit dateTimeUnit = createLocalDateUnitInstance( date ); dateTimeUnit = calendar.minusYears( dateTimeUnit, 4 ); dateTimeUnit.setDay( 1 ); dateTimeUnit.setMonth( 1 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 5; ++i ) { periods.add( createPeriod( dateTimeUnit, calendar ) ); dateTimeUnit = calendar.plusYears( dateTimeUnit, 1 ); } return periods; }
@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 ); }
@Override public List<Period> generateLast5Years( Date date ) { Calendar cal = getCalendar(); DateTimeUnit dateTimeUnit = createLocalDateUnitInstance( date, cal ); boolean past = dateTimeUnit.getMonth() >= (getBaseMonth() + 1); List<Period> periods = Lists.newArrayList(); dateTimeUnit = cal.minusYears( dateTimeUnit, past ? 4 : 5 ); dateTimeUnit.setMonth( getBaseMonth() + 1 ); dateTimeUnit.setDay( 1 ); for ( int i = 0; i < 5; i++ ) { periods.add( createPeriod( dateTimeUnit, cal ) ); dateTimeUnit = cal.plusYears( dateTimeUnit, 1 ); } return periods; }
@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 ); }
@Override public Period createPeriod( DateTimeUnit dateTimeUnit, Calendar calendar ) { boolean past = dateTimeUnit.getMonth() >= (getBaseMonth() + 1); if ( !past ) { dateTimeUnit = calendar.minusYears( dateTimeUnit, 1 ); } dateTimeUnit.setMonth( getBaseMonth() + 1 ); dateTimeUnit.setDay( 1 ); DateTimeUnit start = new DateTimeUnit( dateTimeUnit ); DateTimeUnit end = new DateTimeUnit( dateTimeUnit ); end = calendar.plusYears( end, 1 ); end = calendar.minusDays( end, 1 ); return toIsoPeriod( start, end, calendar ); }