killbill-memoizeit

analytics: add last_payment_status in BusinessAccount object The

11/11/2011 8:05:00 PM

Details

diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessAccount.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessAccount.java
index ad95e08..aaf75a1 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessAccount.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessAccount.java
@@ -33,17 +33,19 @@ public class BusinessAccount
     private List<String> tags;
     private DateTime lastInvoiceDate;
     private BigDecimal totalInvoiceBalance;
+    private String lastPaymentStatus;
     private String paymentMethod;
     private String creditCardType;
     private String billingAddressCountry;
 
-    public BusinessAccount(final String key, final BigDecimal balance, final List<String> tags, final DateTime lastInvoiceDate, final BigDecimal totalInvoiceBalance, final String paymentMethod, final String creditCardType, final String billingAddressCountry)
+    public BusinessAccount(final String key, final BigDecimal balance, final List<String> tags, final DateTime lastInvoiceDate, final BigDecimal totalInvoiceBalance, final String lastPaymentStatus, final String paymentMethod, final String creditCardType, final String billingAddressCountry)
     {
         this.key = key;
         this.balance = balance;
         this.billingAddressCountry = billingAddressCountry;
         this.creditCardType = creditCardType;
         this.lastInvoiceDate = lastInvoiceDate;
+        this.lastPaymentStatus = lastPaymentStatus;
         this.paymentMethod = paymentMethod;
         this.tags = tags;
         this.totalInvoiceBalance = totalInvoiceBalance;
@@ -104,14 +106,19 @@ public class BusinessAccount
         return lastInvoiceDate;
     }
 
-    public Double getRoundedTotalInvoiceBalance()
+    public void setLastInvoiceDate(final DateTime lastInvoiceDate)
     {
-        return Rounder.round(totalInvoiceBalance);
+        this.lastInvoiceDate = lastInvoiceDate;
     }
 
-    public void setLastInvoiceDate(final DateTime lastInvoiceDate)
+    public String getLastPaymentStatus()
     {
-        this.lastInvoiceDate = lastInvoiceDate;
+        return lastPaymentStatus;
+    }
+
+    public void setLastPaymentStatus(final String lastPaymentStatus)
+    {
+        this.lastPaymentStatus = lastPaymentStatus;
     }
 
     public String getPaymentMethod()
@@ -139,6 +146,11 @@ public class BusinessAccount
         return totalInvoiceBalance;
     }
 
+    public Double getRoundedTotalInvoiceBalance()
+    {
+        return Rounder.round(totalInvoiceBalance);
+    }
+
     public void setTotalInvoiceBalance(final BigDecimal totalInvoiceBalance)
     {
         this.totalInvoiceBalance = totalInvoiceBalance;
@@ -166,6 +178,7 @@ public class BusinessAccount
         sb.append(", tags=").append(tags);
         sb.append(", lastInvoiceDate=").append(lastInvoiceDate);
         sb.append(", totalInvoiceBalance=").append(totalInvoiceBalance);
+        sb.append(", lastPaymentStatus='").append(lastPaymentStatus).append('\'');
         sb.append(", paymentMethod='").append(paymentMethod).append('\'');
         sb.append(", creditCardType='").append(creditCardType).append('\'');
         sb.append(", billingAddressCountry='").append(billingAddressCountry).append('\'');
@@ -203,6 +216,9 @@ public class BusinessAccount
         if (lastInvoiceDate != null ? !lastInvoiceDate.equals(that.lastInvoiceDate) : that.lastInvoiceDate != null) {
             return false;
         }
+        if (lastPaymentStatus != null ? !lastPaymentStatus.equals(that.lastPaymentStatus) : that.lastPaymentStatus != null) {
+            return false;
+        }
         if (paymentMethod != null ? !paymentMethod.equals(that.paymentMethod) : that.paymentMethod != null) {
             return false;
         }
@@ -229,6 +245,7 @@ public class BusinessAccount
         result = 31 * result + (tags != null ? tags.hashCode() : 0);
         result = 31 * result + (lastInvoiceDate != null ? lastInvoiceDate.hashCode() : 0);
         result = 31 * result + (totalInvoiceBalance != null ? totalInvoiceBalance.hashCode() : 0);
+        result = 31 * result + (lastPaymentStatus != null ? lastPaymentStatus.hashCode() : 0);
         result = 31 * result + (paymentMethod != null ? paymentMethod.hashCode() : 0);
         result = 31 * result + (creditCardType != null ? creditCardType.hashCode() : 0);
         result = 31 * result + (billingAddressCountry != null ? billingAddressCountry.hashCode() : 0);
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountBinder.java b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountBinder.java
index 57b8848..6a3e218 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountBinder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountBinder.java
@@ -61,6 +61,7 @@ public @interface BusinessAccountBinder
                     q.bind("tags", joiner.join(account.getTags()));
                     q.bind("last_invoice_date", account.getLastInvoiceDate().getMillis());
                     q.bind("total_invoice_balance", account.getRoundedTotalInvoiceBalance());
+                    q.bind("last_payment_status", account.getLastPaymentStatus());
                     q.bind("payment_method", account.getPaymentMethod());
                     q.bind("credit_card_type", account.getCreditCardType());
                     q.bind("billing_address_country", account.getBillingAddressCountry());
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountMapper.java b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountMapper.java
index 46ac794..48e22e0 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountMapper.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessAccountMapper.java
@@ -48,7 +48,8 @@ public class BusinessAccountMapper implements ResultSetMapper<BusinessAccount>
             BigDecimal.valueOf(r.getDouble(7)),
             r.getString(8),
             r.getString(9),
-            r.getString(10)
+            r.getString(10),
+            r.getString(11)
         );
         account.setCreatedDt(new DateTime(r.getLong(2), DateTimeZone.UTC));
         account.setUpdatedDt(new DateTime(r.getLong(3), DateTimeZone.UTC));
diff --git a/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessAccountDao.sql.stg b/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessAccountDao.sql.stg
index b432fd6..55f03e8 100644
--- a/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessAccountDao.sql.stg
+++ b/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessAccountDao.sql.stg
@@ -9,6 +9,7 @@ getAccount(account_key) ::= <<
   , tags
   , last_invoice_date
   , total_invoice_balance
+  , last_payment_status
   , payment_method
   , credit_card_type
   , billing_address_country
@@ -27,6 +28,7 @@ createAccount() ::= <<
   , tags
   , last_invoice_date
   , total_invoice_balance
+  , last_payment_status
   , payment_method
   , credit_card_type
   , billing_address_country
@@ -38,6 +40,7 @@ createAccount() ::= <<
   , :tags
   , :last_invoice_date
   , :total_invoice_balance
+  , :last_payment_status
   , :payment_method
   , :credit_card_type
   , :billing_address_country
@@ -51,6 +54,7 @@ saveAccount() ::= <<
   , tags=:tags
   , last_invoice_date=:last_invoice_date
   , total_invoice_balance=:total_invoice_balance
+  , last_payment_status=:last_payment_status
   , payment_method=:payment_method
   , credit_card_type=:credit_card_type
   , billing_address_country=:billing_address_country
diff --git a/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql b/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql
index 037c141..6136317 100644
--- a/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql
+++ b/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql
@@ -39,6 +39,7 @@ create table bac (
 , tags varchar(500) default null
 , last_invoice_date bigint default null
 , total_invoice_balance numeric(10, 4) default 0
+, last_payment_status varchar(100) default null
 , payment_method varchar(100) default null
 , credit_card_type varchar(32) default null
 , billing_address_country varchar(100) default null
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
index d126bd1..d575ee2 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
@@ -103,7 +103,7 @@ public class TestAnalyticsDao
         final List<String> tags = new ArrayList<String>();
         tags.add("batch1");
         tags.add("great,guy");
-        account = new BusinessAccount(ACCOUNT_KEY, BigDecimal.ONE, tags, new DateTime(DateTimeZone.UTC), BigDecimal.TEN, "CreditCard", "Visa", "FRANCE");
+        account = new BusinessAccount(ACCOUNT_KEY, BigDecimal.ONE, tags, new DateTime(DateTimeZone.UTC), BigDecimal.TEN, "ERROR_NOT_ENOUGH_FUNDS", "CreditCard", "Visa", "FRANCE");
 
         final IDBI dbi = helper.getDBI();
         businessAccountDao = dbi.onDemand(BusinessAccountDao.class);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessAccount.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessAccount.java
index 8acc4d2..5bdba44 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessAccount.java
@@ -31,7 +31,7 @@ public class TestBusinessAccount
     @BeforeMethod(alwaysRun = true)
     public void setUp() throws Exception
     {
-        account = new BusinessAccount("pierre", BigDecimal.ONE, Collections.singletonList("batch15"), new DateTime(), BigDecimal.TEN, "CreditCard", "Visa", "");
+        account = new BusinessAccount("pierre", BigDecimal.ONE, Collections.singletonList("batch15"), new DateTime(), BigDecimal.TEN, "ERROR_NOT_ENOUGH_FUNDS", "CreditCard", "Visa", "");
     }
 
     @Test(groups = "fast")
@@ -41,7 +41,7 @@ public class TestBusinessAccount
         Assert.assertEquals(account, account);
         Assert.assertTrue(account.equals(account));
 
-        final BusinessAccount otherAccount = new BusinessAccount("pierre", BigDecimal.ONE, Collections.singletonList("batch15"), new DateTime(), BigDecimal.TEN, "CreditCard", "Visa", "");
+        final BusinessAccount otherAccount = new BusinessAccount("pierre", BigDecimal.ONE, Collections.singletonList("batch15"), new DateTime(), BigDecimal.TEN, "ERROR_NOT_ENOUGH_FUNDS", "CreditCard", "Visa", "");
         Assert.assertFalse(account.equals(otherAccount));
     }
 }