/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(PaymentSchedule beanToCopy) { this.paymentFrequency = beanToCopy.getPaymentFrequency(); this.businessDayAdjustment = beanToCopy.businessDayAdjustment; this.paymentRelativeTo = beanToCopy.getPaymentRelativeTo(); this.paymentDateOffset = beanToCopy.getPaymentDateOffset(); this.compoundingMethod = beanToCopy.getCompoundingMethod(); this.firstRegularStartDate = beanToCopy.firstRegularStartDate; this.lastRegularEndDate = beanToCopy.lastRegularEndDate; }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 863656438: // paymentFrequency return ((PaymentSchedule) bean).getPaymentFrequency(); case -1065319863: // businessDayAdjustment return ((PaymentSchedule) bean).businessDayAdjustment; case -1357627123: // paymentRelativeTo return ((PaymentSchedule) bean).getPaymentRelativeTo(); case -716438393: // paymentDateOffset return ((PaymentSchedule) bean).getPaymentDateOffset(); case -1376171496: // compoundingMethod return ((PaymentSchedule) bean).getCompoundingMethod(); case 2011803076: // firstRegularStartDate return ((PaymentSchedule) bean).firstRegularStartDate; case -1540679645: // lastRegularEndDate return ((PaymentSchedule) bean).lastRegularEndDate; } return super.propertyGet(bean, propertyName, quiet); }
private List<SwapPaymentPeriod> createPaymentPeriods(Schedule resolvedPayments, ReferenceData refData) { // resolve amount schedule against payment schedule DoubleArray amounts = amount.resolveValues(resolvedPayments); // resolve against reference data once DateAdjuster paymentDateAdjuster = paymentSchedule.getPaymentDateOffset().resolve(refData); // build up payment periods using schedule ImmutableList.Builder<SwapPaymentPeriod> paymentPeriods = ImmutableList.builder(); for (int index = 0; index < resolvedPayments.size(); index++) { SchedulePeriod paymentPeriod = resolvedPayments.getPeriod(index); LocalDate baseDate = paymentSchedule.getPaymentRelativeTo().selectBaseDate(paymentPeriod); LocalDate paymentDate = paymentDateAdjuster.adjust(baseDate); double amount = payReceive.normalize(amounts.get(index)); Payment payment = Payment.of(CurrencyAmount.of(currency, amount), paymentDate); paymentPeriods.add(KnownAmountSwapPaymentPeriod.of(payment, paymentPeriod)); } return paymentPeriods.build(); }
public void test_builder_ensureDefaults() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P1M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .build(); assertEquals(test.getPaymentFrequency(), P1M); assertEquals(test.getBusinessDayAdjustment(), Optional.empty()); assertEquals(test.getPaymentDateOffset(), DaysAdjustment.ofBusinessDays(2, GBLO)); assertEquals(test.getPaymentRelativeTo(), PERIOD_END); assertEquals(test.getCompoundingMethod(), NONE); }