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));
}
}