From b968f8008a046c2fda118b49484db0d33bfae2a3 Mon Sep 17 00:00:00 2001 From: stephane brossier Date: Sat, 29 Apr 2017 20:53:08 -0700 Subject: [PATCH] junction: Refactor method BlockingCalculator#precedingBillingEventForSubscription --- .../plumbing/billing/BlockingCalculator.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java index 85e4b885d6..c5d036b687 100644 --- a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java +++ b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java @@ -172,7 +172,7 @@ protected SortedSet eventsToRemove(final List di for (final DisabledDuration duration : disabledDuration) { for (final BillingEvent event : subscriptionBillingEvents) { if (duration.getEnd() == null || event.getEffectiveDate().isBefore(duration.getEnd())) { - if (!event.getEffectiveDate().isBefore(duration.getStart())) { //between the pair + if (!event.getEffectiveDate().isBefore(duration.getStart())) { result.add(event); } } else { //after the last event of the pair no need to keep checking @@ -207,29 +207,25 @@ protected SortedSet createNewEvents(final List d return result; } + protected BillingEvent precedingBillingEventForSubscription(final DateTime disabledDurationStart, final SortedSet subscriptionBillingEvents) { if (disabledDurationStart == null) { return null; } - BillingEvent result = subscriptionBillingEvents.first(); - - // Use case where we first Block and the create the subscription for instance - // (disabledDurationStart could be before start subscription or align right at the same exact time) - if (!disabledDurationStart.isAfter(result.getEffectiveDate())) { - return null; - } - + // We look for the first billingEvent strictly prior our disabledDurationStart or null if none + BillingEvent prev = null; for (final BillingEvent event : subscriptionBillingEvents) { if (!event.getEffectiveDate().isBefore(disabledDurationStart)) { - return result; + return prev; } else { - result = event; + prev = event; } } - return result; + return prev; } + protected SortedSet filter(final SortedSet billingEvents, final SubscriptionBase subscription) { final SortedSet result = new TreeSet(); for (final BillingEvent event : billingEvents) {