private static PaymentSchedule parsePaymentSchedule(CsvRow row, String leg, Frequency accrualFrequency) { PaymentSchedule.Builder builder = PaymentSchedule.builder(); // basics builder.paymentFrequency(findValue(row, leg, PAYMENT_FREQUENCY_FIELD) .map(s -> Frequency.parse(s)) .orElse(accrualFrequency)); Optional<DaysAdjustment> offsetOpt = parseDaysAdjustment( row, leg, PAYMENT_OFFSET_DAYS_FIELD, PAYMENT_OFFSET_CAL_FIELD, PAYMENT_OFFSET_ADJ_CNV_FIELD, PAYMENT_OFFSET_ADJ_CAL_FIELD); builder.paymentDateOffset(offsetOpt.orElse(DaysAdjustment.NONE)); // optionals findValue(row, leg, PAYMENT_RELATIVE_TO_FIELD) .map(s -> PaymentRelativeTo.of(s)) .ifPresent(v -> builder.paymentRelativeTo(v)); findValue(row, leg, COMPOUNDING_METHOD_FIELD) .map(s -> CompoundingMethod.of(s)) .ifPresent(v -> builder.compoundingMethod(v)); findValue(row, leg, PAYMENT_FIRST_REGULAR_START_DATE_FIELD) .map(s -> LoaderUtils.parseDate(s)) .ifPresent(v -> builder.firstRegularStartDate(v)); findValue(row, leg, PAYMENT_LAST_REGULAR_END_DATE_FIELD) .map(s -> LoaderUtils.parseDate(s)) .ifPresent(v -> builder.lastRegularEndDate(v)); return builder.build(); }
.ifPresent(date -> paymentScheduleBuilder.firstRegularStartDate(date)); paymentDatesEl.findChild("lastRegularPaymentDate") .map(el -> document.parseDate(el))
public void test_createSchedule_firstDate() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P3M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_01_06) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods(SchedulePeriod.of(DATE_01_06, DATE_04_07, DATE_01_05, DATE_04_05)) .frequency(P3M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
.paymentFrequency(Frequency.P6M) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA))) .firstRegularStartDate(date(1995, 6, 14)) .build()) .notionalSchedule(notionalFloat) .paymentFrequency(Frequency.P12M) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA))) .firstRegularStartDate(date(1995, 12, 14)) .build()) .notionalSchedule(notionalFloat)
.paymentFrequency(Frequency.P6M) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA))) .firstRegularStartDate(date(1995, 6, 14)) .build()) .notionalSchedule(notional) .paymentFrequency(Frequency.P12M) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA))) .firstRegularStartDate(date(1995, 12, 14)) .build()) .notionalSchedule(notional)
.paymentFrequency(Frequency.P12M) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA))) .firstRegularStartDate(date(2004, 11, 20)) .build()) .notionalSchedule(notional) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA))) .compoundingMethod(CompoundingMethod.NONE) .firstRegularStartDate(date(2004, 11, 20)) .build()) .notionalSchedule(notional)
.paymentFrequency(Frequency.P6M) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(FOLLOWING, EUTA))) .firstRegularStartDate(date(2000, 10, 5)) .build()) .notionalSchedule(notional) .paymentFrequency(Frequency.P12M) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(FOLLOWING, EUTA))) .firstRegularStartDate(date(2000, 10, 5)) .build()) .notionalSchedule(notional)
public void test_createSchedule_firstAndLastDate_initialAccrualStub() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_03_05) .lastRegularEndDate(DATE_05_05) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE_INITIAL_STUB, REF_DATA); Schedule expected = Schedule.builder() .periods( SchedulePeriod.of(DATE_01_08, DATE_03_05, DATE_01_08, DATE_03_05), SchedulePeriod.of(DATE_03_05, DATE_05_06, DATE_03_05, DATE_05_05)) .frequency(P2M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void coverage() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P1M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .build(); coverImmutableBean(test); PaymentSchedule test2 = PaymentSchedule.builder() .paymentFrequency(P3M) .businessDayAdjustment(BDA) .paymentDateOffset(DaysAdjustment.ofBusinessDays(3, GBLO)) .paymentRelativeTo(PERIOD_START) .compoundingMethod(STRAIGHT) .firstRegularStartDate(DATE_01_06) .lastRegularEndDate(DATE_02_05) .build(); coverBeanEquals(test, test2); }
public void test_createSchedule_firstAndLastDate_validInitialStub() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_02_05) .lastRegularEndDate(DATE_04_07) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods( SchedulePeriod.of(DATE_01_06, DATE_02_05, DATE_01_05, DATE_02_05), SchedulePeriod.of(DATE_02_05, DATE_04_07, DATE_02_05, DATE_04_05)) .frequency(P2M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_createSchedule_firstDate_validInitialStub() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_02_05) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods( SchedulePeriod.of(DATE_01_06, DATE_02_05, DATE_01_05, DATE_02_05), SchedulePeriod.of(DATE_02_05, DATE_04_07, DATE_02_05, DATE_04_05)) .frequency(P2M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_createSchedule_firstDate_initialAccrualStub() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_03_05) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE_INITIAL_STUB, REF_DATA); Schedule expected = Schedule.builder() .periods( SchedulePeriod.of(DATE_01_08, DATE_03_05, DATE_01_08, DATE_03_05), SchedulePeriod.of(DATE_03_05, DATE_05_06, DATE_03_05, DATE_05_05)) .frequency(P2M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_createSchedule_firstAndLastDate() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P3M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_01_06) .lastRegularEndDate(DATE_04_07) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods(SchedulePeriod.of(DATE_01_06, DATE_04_07, DATE_01_05, DATE_04_05)) .frequency(P3M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_createSchedule_firstDate_invalidInitialStub() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_01_06) .build(); assertThrows(() -> test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA), ScheduleException.class); }
public void test_createSchedule_term_badFirstRegular() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(TERM) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_05_05) .build(); assertThrowsIllegalArg(() -> test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA)); }
public void test_createSchedule_firstAndLastDate_invalidInitialStub() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_01_06) .lastRegularEndDate(DATE_04_07) .build(); assertThrows(() -> test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA), ScheduleException.class); }