/** * Gets the unadjusted start date. * <p> * The start date before any business day adjustment. * * @return the unadjusted schedule start date */ public LocalDate getUnadjustedStartDate() { return getFirstPeriod().getUnadjustedStartDate(); }
private SchedulePeriod createSchedulePeriod(List<SchedulePeriod> accruals) { SchedulePeriod first = accruals.get(0); if (accruals.size() == 1) { return first; } SchedulePeriod last = accruals.get(accruals.size() - 1); return SchedulePeriod.of( first.getStartDate(), last.getEndDate(), first.getUnadjustedStartDate(), last.getUnadjustedEndDate()); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(SchedulePeriod beanToCopy) { this.startDate = beanToCopy.getStartDate(); this.endDate = beanToCopy.getEndDate(); this.unadjustedStartDate = beanToCopy.getUnadjustedStartDate(); this.unadjustedEndDate = beanToCopy.getUnadjustedEndDate(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -2129778896: // startDate return ((SchedulePeriod) bean).getStartDate(); case -1607727319: // endDate return ((SchedulePeriod) bean).getEndDate(); case 1457691881: // unadjustedStartDate return ((SchedulePeriod) bean).getUnadjustedStartDate(); case 31758114: // unadjustedEndDate return ((SchedulePeriod) bean).getUnadjustedEndDate(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_of_noUnadjusted() { SchedulePeriod test = SchedulePeriod.of(JUL_05, JUL_18); assertEquals(test.getStartDate(), JUL_05); assertEquals(test.getEndDate(), JUL_18); assertEquals(test.getUnadjustedStartDate(), JUL_05); assertEquals(test.getUnadjustedEndDate(), JUL_18); }
public void test_of_all() { SchedulePeriod test = SchedulePeriod.of(JUL_05, JUL_18, JUL_04, JUL_17); assertEquals(test.getStartDate(), JUL_05); assertEquals(test.getEndDate(), JUL_18); assertEquals(test.getUnadjustedStartDate(), JUL_04); assertEquals(test.getUnadjustedEndDate(), JUL_17); }
public void test_builder_defaults() { SchedulePeriod test = SchedulePeriod.builder() .startDate(JUL_05) .endDate(JUL_18) .build(); assertEquals(test.getStartDate(), JUL_05); assertEquals(test.getEndDate(), JUL_18); assertEquals(test.getUnadjustedStartDate(), JUL_05); assertEquals(test.getUnadjustedEndDate(), JUL_18); }
public void test_merge_termNoChange() { Schedule test = Schedule.ofTerm(P1_STUB); assertEquals(test.mergeRegular(2, true), test); assertEquals(test.mergeRegular(2, false), test); assertEquals(test.merge(2, P1_STUB.getUnadjustedStartDate(), P1_STUB.getUnadjustedEndDate()), test); assertEquals(test.merge(2, P1_STUB.getStartDate(), P1_STUB.getEndDate()), test); }
/** * Returns a builder used to create an instance of the bean, based on a schedule period. * <p> * The start date and end date (adjusted and unadjusted) will be set in the builder. * * @param period the schedule period * @return the builder, not null */ public static RateAccrualPeriod.Builder builder(SchedulePeriod period) { return builder() .startDate(period.getStartDate()) .endDate(period.getEndDate()) .unadjustedStartDate(period.getUnadjustedStartDate()) .unadjustedEndDate(period.getUnadjustedEndDate()); }
public void test_merge_badGroupSize() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertThrows( () -> test.merge(2, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), ScheduleException.class, "Unable to merge schedule, firstRegularStartDate " + P2_NORMAL.getUnadjustedStartDate() + " and lastRegularEndDate " + P6_NORMAL.getUnadjustedEndDate() + " cannot be used to create regular periods of frequency 'P2M'"); }
public void test_merge_groupSizeOneNoChange() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(1, true), test); assertEquals(test.mergeRegular(1, false), test); assertEquals(test.merge(1, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), test); assertEquals(test.merge(1, P2_NORMAL.getStartDate(), P6_NORMAL.getEndDate()), test); }
public void test_merge_size1_stub() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(2, true), test); assertEquals(test.mergeRegular(2, false), test); assertEquals(test.merge(2, P1_STUB.getUnadjustedStartDate(), P1_STUB.getUnadjustedEndDate()), test); assertEquals(test.merge(2, P1_STUB.getStartDate(), P1_STUB.getEndDate()), test); }
public void test_merge_group2_within3_forwards() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P2_3, P4_NORMAL)) .frequency(P2M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(2, true), expected); assertEquals(test.merge(2, P2_NORMAL.getUnadjustedStartDate(), P3_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(2, P2_NORMAL.getStartDate(), P3_NORMAL.getEndDate()), expected); }
public void test_merge_group3_within5_backwards() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P2_3, P4_6)) .frequency(P3M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(3, false), expected); assertEquals(test.merge(3, P4_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(3, P4_NORMAL.getStartDate(), P6_NORMAL.getEndDate()), expected); }
public void test_merge_group3_within5_forwards() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P2_4, P5_6)) .frequency(P3M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(3, true), expected); assertEquals(test.merge(3, P2_NORMAL.getUnadjustedStartDate(), P4_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(3, P2_NORMAL.getStartDate(), P4_NORMAL.getEndDate()), expected); }
public void test_merge_group2_within3_backwards() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_4)) .frequency(P2M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(2, false), expected); assertEquals(test.merge(2, P3_NORMAL.getUnadjustedStartDate(), P4_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(2, P3_NORMAL.getStartDate(), P4_NORMAL.getEndDate()), expected); }
public void test_merge_group2_within5_backwards() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_4, P5_6)) .frequency(P2M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(2, false), expected); assertEquals(test.merge(2, P3_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(2, P3_NORMAL.getStartDate(), P6_NORMAL.getEndDate()), expected); }
public void test_merge_group2_within6_includeInitialStub() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB, P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P1_2, P3_4, P5_6)) .frequency(P2M) .rollConvention(DAY_17) .build(); assertEquals(test.merge(2, P3_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(2, P3_NORMAL.getStartDate(), P6_NORMAL.getEndDate()), expected); }
public void test_merge_group2_within6_includeFinalStub() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB, P2_NORMAL, P3_NORMAL, P4_STUB)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P1_2, P3_4STUB)) .frequency(P2M) .rollConvention(DAY_17) .build(); assertEquals(test.merge(2, P1_STUB.getUnadjustedStartDate(), P2_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(2, P1_STUB.getStartDate(), P2_NORMAL.getEndDate()), expected); }
public void test_merge_groupSizeInvalid() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertThrowsIllegalArg(() -> test.mergeRegular(0, true)); assertThrowsIllegalArg(() -> test.mergeRegular(0, false)); assertThrowsIllegalArg(() -> test.mergeRegular(-1, true)); assertThrowsIllegalArg(() -> test.mergeRegular(-1, false)); assertThrowsIllegalArg(() -> test.merge(0, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate())); assertThrowsIllegalArg(() -> test.merge(-1, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate())); }