killbill-aplcache

invoice: add more logging around pro-ration Signed-off-by:

7/16/2012 11:18:48 PM

Details

diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java b/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java
index d942628..fed28f8 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java
@@ -24,6 +24,8 @@ import javax.annotation.Nullable;
 
 import org.joda.time.DateTimeZone;
 import org.joda.time.LocalDate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.ning.billing.catalog.api.BillingPeriod;
 
@@ -36,6 +38,8 @@ import static com.ning.billing.invoice.generator.InvoiceDateUtils.calculateProRa
 
 public class InAdvanceBillingMode implements BillingMode {
 
+    private static final Logger log = LoggerFactory.getLogger(InAdvanceBillingMode.class);
+
     @Override
     public List<RecurringInvoiceItemData> calculateInvoiceItemData(final LocalDate startDate, @Nullable final LocalDate endDate,
                                                                    final LocalDate targetDate, final DateTimeZone accountTimeZone,
@@ -56,7 +60,10 @@ public class InAdvanceBillingMode implements BillingMode {
         if (firstBillingCycleDate.isAfter(startDate)) {
             final BigDecimal leadingProRationPeriods = calculateProRationBeforeFirstBillingPeriod(startDate, firstBillingCycleDate, billingPeriod);
             if (leadingProRationPeriods != null && leadingProRationPeriods.compareTo(BigDecimal.ZERO) > 0) {
-                results.add(new RecurringInvoiceItemData(startDate, firstBillingCycleDate, leadingProRationPeriods));
+                // Not common - add info in the logs for debugging purposes
+                final RecurringInvoiceItemData itemData = new RecurringInvoiceItemData(startDate, firstBillingCycleDate, leadingProRationPeriods);
+                log.info("Adding pro-ration: {}", itemData);
+                results.add(itemData);
             }
         }
 
@@ -93,7 +100,10 @@ public class InAdvanceBillingMode implements BillingMode {
         if (effectiveEndDate.isAfter(lastBillingCycleDate)) {
             final BigDecimal trailingProRationPeriods = calculateProRationAfterLastBillingCycleDate(effectiveEndDate, lastBillingCycleDate, billingPeriod);
             if (trailingProRationPeriods.compareTo(BigDecimal.ZERO) > 0) {
-                results.add(new RecurringInvoiceItemData(lastBillingCycleDate, effectiveEndDate, trailingProRationPeriods));
+                // Not common - add info in the logs for debugging purposes
+                final RecurringInvoiceItemData itemData = new RecurringInvoiceItemData(lastBillingCycleDate, effectiveEndDate, trailingProRationPeriods);
+                log.info("Adding trailing pro-ration: {}", itemData);
+                results.add(itemData);
             }
         }
         return results;
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java b/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java
index 4fa3aa6..90ae6be 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java
@@ -43,4 +43,38 @@ public class RecurringInvoiceItemData {
     public BigDecimal getNumberOfCycles() {
         return numberOfCycles;
     }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("RecurringInvoiceItemData");
+        sb.append("{startDate=").append(startDate);
+        sb.append(", endDate=").append(endDate);
+        sb.append(", numberOfCycles=").append(numberOfCycles);
+        sb.append('}');
+        return sb.toString();
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        final RecurringInvoiceItemData that = (RecurringInvoiceItemData) o;
+
+        if (endDate != null ? !endDate.equals(that.endDate) : that.endDate != null) return false;
+        if (numberOfCycles != null ? !numberOfCycles.equals(that.numberOfCycles) : that.numberOfCycles != null)
+            return false;
+        if (startDate != null ? !startDate.equals(that.startDate) : that.startDate != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = startDate != null ? startDate.hashCode() : 0;
+        result = 31 * result + (endDate != null ? endDate.hashCode() : 0);
+        result = 31 * result + (numberOfCycles != null ? numberOfCycles.hashCode() : 0);
+        return result;
+    }
 }
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java b/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java
index 13a28a0..a51f874 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java
@@ -194,35 +194,23 @@ public class DefaultBillingEvent implements BillingEvent {
     @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder();
-        sb.append("BillingEvent {subscriptionId = ").append(subscription.getId().toString()).append(", ");
-        sb.append("plan = ").append(plan.getName()).append(", ");
-        sb.append("phase = ").append(planPhase.getName()).append(", ");
-        sb.append("effectiveDate = ").append(effectiveDate.toString()).append(", ");
-        sb.append("billCycleDay = ").append(billCycleDay).append(", ");
-        sb.append("recurringPrice = ");
-
-        try {
-            sb.append(recurringPrice.toString());
-        } catch (Exception e) {
-            sb.append("null");
-        }
-
-        sb.append(", ");
-        sb.append("fixedPrice = ");
-
-        try {
-            sb.append(fixedPrice.toString());
-        } catch (Exception e) {
-            sb.append("null");
-        }
-        sb.append(", ");
-
-        sb.append("currency = ").append(currency.toString()).append(", ");
-        sb.append("billingPeriod = ").append(billingPeriod.toString());
-        sb.append(", ");
-        sb.append("totalOrdering = ").append(getTotalOrdering().toString());
-        sb.append("}");
-
+        sb.append("DefaultBillingEvent");
+        sb.append("{account=").append(account);
+        sb.append(", billCycleDay=").append(billCycleDay);
+        sb.append(", subscription=").append(subscription);
+        sb.append(", effectiveDate=").append(effectiveDate);
+        sb.append(", planPhase=").append(planPhase);
+        sb.append(", plan=").append(plan);
+        sb.append(", fixedPrice=").append(fixedPrice);
+        sb.append(", recurringPrice=").append(recurringPrice);
+        sb.append(", currency=").append(currency);
+        sb.append(", description='").append(description).append('\'');
+        sb.append(", billingModeType=").append(billingModeType);
+        sb.append(", billingPeriod=").append(billingPeriod);
+        sb.append(", type=").append(type);
+        sb.append(", totalOrdering=").append(totalOrdering);
+        sb.append(", timeZone=").append(timeZone);
+        sb.append('}');
         return sb.toString();
     }