killbill-aplcache

jaxrs: export invoice number in BusinessInvoicePaymentJson bip

10/31/2012 8:19:13 PM

Details

diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessInvoicePaymentJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessInvoicePaymentJson.java
index 1d9247c..9fa8310 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessInvoicePaymentJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessInvoicePaymentJson.java
@@ -32,6 +32,7 @@ public class BusinessInvoicePaymentJson extends JsonBase {
     private final String extSecondPaymentRefId;
     private final String accountKey;
     private final String invoiceId;
+    private final Integer invoiceNumber;
     private final DateTime effectiveDate;
     private final BigDecimal amount;
     private final String currency;
@@ -52,6 +53,7 @@ public class BusinessInvoicePaymentJson extends JsonBase {
                                       @JsonProperty("extSecondPaymentRefId") final String extSecondPaymentRefId,
                                       @JsonProperty("accountKey") final String accountKey,
                                       @JsonProperty("invoiceId") final String invoiceId,
+                                      @JsonProperty("invoiceNumber") final Integer invoiceNumber,
                                       @JsonProperty("effectiveDate") final DateTime effectiveDate,
                                       @JsonProperty("amount") final BigDecimal amount,
                                       @JsonProperty("currency") final String currency,
@@ -70,6 +72,7 @@ public class BusinessInvoicePaymentJson extends JsonBase {
         this.extSecondPaymentRefId = extSecondPaymentRefId;
         this.accountKey = accountKey;
         this.invoiceId = invoiceId;
+        this.invoiceNumber = invoiceNumber;
         this.effectiveDate = effectiveDate;
         this.amount = amount;
         this.currency = currency;
@@ -85,12 +88,14 @@ public class BusinessInvoicePaymentJson extends JsonBase {
         this.linkedInvoicePaymentId = linkedInvoicePaymentId;
     }
 
-    public BusinessInvoicePaymentJson(final BusinessInvoicePayment businessInvoicePayment) {
+    public BusinessInvoicePaymentJson(final BusinessInvoicePayment businessInvoicePayment, final Integer invoiceNumber) {
+        // The bip table doesn't contain the invoice number, but we export it in here for convenience
         this(businessInvoicePayment.getPaymentId().toString(),
              businessInvoicePayment.getExtFirstPaymentRefId(),
              businessInvoicePayment.getExtSecondPaymentRefId(),
              businessInvoicePayment.getAccountKey(),
              businessInvoicePayment.getInvoiceId().toString(),
+             invoiceNumber,
              businessInvoicePayment.getEffectiveDate(),
              businessInvoicePayment.getAmount(),
              businessInvoicePayment.getCurrency().toString(),
@@ -126,6 +131,10 @@ public class BusinessInvoicePaymentJson extends JsonBase {
         return invoiceId;
     }
 
+    public Integer getInvoiceNumber() {
+        return invoiceNumber;
+    }
+
     public DateTime getEffectiveDate() {
         return effectiveDate;
     }
@@ -187,6 +196,7 @@ public class BusinessInvoicePaymentJson extends JsonBase {
         sb.append(", extSecondPaymentRefId='").append(extSecondPaymentRefId).append('\'');
         sb.append(", accountKey='").append(accountKey).append('\'');
         sb.append(", invoiceId='").append(invoiceId).append('\'');
+        sb.append(", invoiceNumber='").append(invoiceNumber).append('\'');
         sb.append(", effectiveDate=").append(effectiveDate);
         sb.append(", amount=").append(amount);
         sb.append(", currency='").append(currency).append('\'');
@@ -242,6 +252,9 @@ public class BusinessInvoicePaymentJson extends JsonBase {
         if (invoiceId != null ? !invoiceId.equals(that.invoiceId) : that.invoiceId != null) {
             return false;
         }
+        if (invoiceNumber != null ? !invoiceNumber.equals(that.invoiceNumber) : that.invoiceNumber != null) {
+            return false;
+        }
         if (invoicePaymentType != null ? !invoicePaymentType.equals(that.invoicePaymentType) : that.invoicePaymentType != null) {
             return false;
         }
@@ -280,6 +293,7 @@ public class BusinessInvoicePaymentJson extends JsonBase {
         result = 31 * result + (extSecondPaymentRefId != null ? extSecondPaymentRefId.hashCode() : 0);
         result = 31 * result + (accountKey != null ? accountKey.hashCode() : 0);
         result = 31 * result + (invoiceId != null ? invoiceId.hashCode() : 0);
+        result = 31 * result + (invoiceNumber != null ? invoiceNumber.hashCode() : 0);
         result = 31 * result + (effectiveDate != null ? effectiveDate.hashCode() : 0);
         result = 31 * result + (amount != null ? amount.hashCode() : 0);
         result = 31 * result + (currency != null ? currency.hashCode() : 0);
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessSnapshotJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessSnapshotJson.java
index 4117a25..dcac483 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessSnapshotJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BusinessSnapshotJson.java
@@ -17,6 +17,9 @@
 package com.ning.billing.jaxrs.json;
 
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
 
 import javax.annotation.Nullable;
 
@@ -62,6 +65,8 @@ public class BusinessSnapshotJson extends JsonBase {
     }
 
     public BusinessSnapshotJson(final BusinessSnapshot businessSnapshot) {
+        final Map<UUID, Integer> invoiceIdToNumber = new HashMap<UUID, Integer>();
+
         this.businessAccount = new BusinessAccountJson(businessSnapshot.getBusinessAccount());
         this.businessSubscriptionTransitions = ImmutableList.<BusinessSubscriptionTransitionJson>copyOf(Collections2.transform(businessSnapshot.getBusinessSubscriptionTransitions(), new Function<BusinessSubscriptionTransition, BusinessSubscriptionTransitionJson>() {
             @Override
@@ -71,14 +76,15 @@ public class BusinessSnapshotJson extends JsonBase {
         }));
         this.businessInvoices = ImmutableList.<BusinessInvoiceJson>copyOf(Collections2.transform(businessSnapshot.getBusinessInvoices(), new Function<BusinessInvoice, BusinessInvoiceJson>() {
             @Override
-            public BusinessInvoiceJson apply(@Nullable final BusinessInvoice input) {
+            public BusinessInvoiceJson apply(final BusinessInvoice input) {
+                invoiceIdToNumber.put(input.getInvoiceId(), input.getInvoiceNumber());
                 return new BusinessInvoiceJson(input);
             }
         }));
         this.businessInvoicePayments = ImmutableList.<BusinessInvoicePaymentJson>copyOf(Collections2.transform(businessSnapshot.getBusinessInvoicePayments(), new Function<BusinessInvoicePayment, BusinessInvoicePaymentJson>() {
             @Override
-            public BusinessInvoicePaymentJson apply(@Nullable final BusinessInvoicePayment input) {
-                return new BusinessInvoicePaymentJson(input);
+            public BusinessInvoicePaymentJson apply(final BusinessInvoicePayment input) {
+                return new BusinessInvoicePaymentJson(input, invoiceIdToNumber.get(input.getInvoiceId()));
             }
         }));
         this.businessOverdueStatuses = ImmutableList.<BusinessOverdueStatusJson>copyOf(Collections2.transform(businessSnapshot.getBusinessOverdueStatuses(), new Function<BusinessOverdueStatus, BusinessOverdueStatusJson>() {