/** * 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; }
/** * Generates the last 5 years where the last one is the year which the given * date is inside. */ @Override public List<Period> generateRollingPeriods( Date date ) { return generateLast5Years( date ); }
@Override public Date getRewindedDate( Date date, Integer rewindedPeriods ) { Calendar calendar = getCalendar(); date = date != null ? date : new Date(); rewindedPeriods = rewindedPeriods != null ? rewindedPeriods : 1; DateTimeUnit dateTimeUnit = createLocalDateUnitInstance( date ); dateTimeUnit = calendar.minusYears( dateTimeUnit, rewindedPeriods ); return calendar.toIso( dateTimeUnit ).toJdkDate(); } }
/** * 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; }
/** * Returns periods for the last 6 months based on the given period types. * * @param periodTypes a set of period type represented as names. * @return a list of periods. */ public List<Period> getLast12Months( Set<String> periodTypes ) { List<Period> periods = new ArrayList<>(); Date date = new Date(); periods.addAll( periodTypes.contains( DailyPeriodType.NAME ) ? new DailyPeriodType().generateRollingPeriods( date ) : NO ); periods.addAll( periodTypes.contains( WeeklyPeriodType.NAME ) ? new WeeklyPeriodType().generateRollingPeriods( date ) : NO ); periods.addAll( periodTypes.contains( BiWeeklyPeriodType.NAME ) ? new BiWeeklyPeriodType().generateRollingPeriods( date ) : NO); periods.addAll( periodTypes.contains( MonthlyPeriodType.NAME ) ? new MonthlyPeriodType().generateRollingPeriods( date ) : NO ); periods.addAll( periodTypes.contains( BiMonthlyPeriodType.NAME ) ? new BiMonthlyPeriodType().generateRollingPeriods( date ) : NO ); periods.addAll( periodTypes.contains( QuarterlyPeriodType.NAME ) ? new QuarterlyPeriodType().generateRollingPeriods( date ) : NO ); periods.addAll( periodTypes.contains( SixMonthlyPeriodType.NAME ) ? new SixMonthlyPeriodType().generateRollingPeriods( date ) : NO ); periods.addAll( periodTypes.contains( YearlyPeriodType.NAME ) ? new YearlyPeriodType().generateRollingPeriods( date ).subList( 4, 5 ) : NO ); periods.addAll( periodTypes.contains( FinancialOctoberPeriodType.NAME ) ? new FinancialOctoberPeriodType().generateRollingPeriods( date ).subList( 4, 5 ) : NO ); return periods; }
periods.add( getRelativePeriod( new YearlyPeriodType(), THIS_YEAR, date, dynamicNames, format ) ); periods.add( getRelativePeriod( new YearlyPeriodType(), LAST_YEAR, date, dynamicNames, format ) ); periods.addAll( getRollingRelativePeriodList( new YearlyPeriodType(), LAST_5_YEARS, date, dynamicNames, format ) );
@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 ); }
periodType = new YearlyPeriodType(); break; case 3:
add( new SixMonthlyAprilPeriodType() ); add( new SixMonthlyNovemberPeriodType() ); add( new YearlyPeriodType() ); add( new FinancialAprilPeriodType() ); add( new FinancialJulyPeriodType() );
@Override public List<Period> generateRollingPeriods( DateTimeUnit dateTimeUnit, Calendar calendar ) { return generateLast5Years( calendar.toIso( dateTimeUnit ).toJdkDate() ); }