killbill-memoizeit
analytics: update BAC when the name or external key is updated Signed-off-by: …
6/22/2012 6:17:19 PM
Changes
Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
index 2d4ab3d..eb41bce 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
@@ -94,7 +94,7 @@ public class AnalyticsListener {
return;
}
- bacRecorder.accountUpdated(event.getAccountId(), event.getChangedFields());
+ bacRecorder.accountUpdated(event.getAccountId());
}
@Subscribe
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java
index 491c06d..1abb88d 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java
@@ -17,9 +17,7 @@
package com.ning.billing.analytics;
import java.math.BigDecimal;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
import org.joda.time.DateTime;
@@ -31,7 +29,6 @@ import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.account.api.AccountData;
import com.ning.billing.account.api.AccountUserApi;
-import com.ning.billing.account.api.ChangedField;
import com.ning.billing.analytics.dao.BusinessAccountSqlDao;
import com.ning.billing.analytics.model.BusinessAccount;
import com.ning.billing.invoice.api.Invoice;
@@ -41,8 +38,6 @@ import com.ning.billing.payment.api.PaymentApi;
import com.ning.billing.payment.api.PaymentApiException;
import com.ning.billing.payment.api.PaymentInfoEvent;
import com.ning.billing.util.api.TagUserApi;
-import com.ning.billing.util.dao.ObjectType;
-import com.ning.billing.util.tag.Tag;
public class BusinessAccountRecorder {
private static final Logger log = LoggerFactory.getLogger(BusinessAccountRecorder.class);
@@ -68,8 +63,8 @@ public class BusinessAccountRecorder {
final Account account;
try {
account = accountApi.getAccountByKey(data.getExternalKey());
- final Map<String, Tag> tags = tagUserApi.getTags(account.getId(), ObjectType.ACCOUNT);
- final BusinessAccount bac = createBusinessAccountFromAccount(account);
+ final BusinessAccount bac = new BusinessAccount();
+ updateBusinessAccountFromAccount(account, bac);
log.info("ACCOUNT CREATION " + bac);
sqlDao.createAccount(bac);
@@ -79,17 +74,6 @@ public class BusinessAccountRecorder {
}
/**
- * Notification handler for Account changes
- *
- * @param accountId account id changed
- * @param changedFields list of changed fields
- */
- public void accountUpdated(final UUID accountId, final List<ChangedField> changedFields) {
- // None of the fields updated interest us so far - see DefaultAccountChangeNotification
- // TODO We'll need notifications for tags changes eventually
- }
-
- /**
* Notification handler for Payment creations
*
* @param paymentInfo payment object (from the payment plugin)
@@ -114,7 +98,8 @@ public class BusinessAccountRecorder {
BusinessAccount bac = sqlDao.getAccount(account.getExternalKey());
if (bac == null) {
- bac = createBusinessAccountFromAccount(account);
+ bac = new BusinessAccount();
+ updateBusinessAccountFromAccount(account, bac);
log.info("ACCOUNT CREATION " + bac);
sqlDao.createAccount(bac);
} else {
@@ -127,41 +112,23 @@ public class BusinessAccountRecorder {
}
}
- private BusinessAccount createBusinessAccountFromAccount(final Account account) {
- final BusinessAccount bac = new BusinessAccount(
- account.getExternalKey(),
- account.getName(),
- invoiceUserApi.getAccountBalance(account.getId()),
- // These fields will be updated below
- null,
- null,
- null,
- null,
- null,
- null
- );
- updateBusinessAccountFromAccount(account, bac);
-
- return bac;
- }
-
private void updateBusinessAccountFromAccount(final Account account, final BusinessAccount bac) {
+ bac.setName(account.getName());
+ bac.setKey(account.getExternalKey());
- final List<UUID> invoiceIds = new ArrayList<UUID>();
try {
- DateTime lastInvoiceDate = null;
- BigDecimal totalInvoiceBalance = BigDecimal.ZERO;
- String lastPaymentStatus = null;
- String paymentMethod = null;
- String creditCardType = null;
- String billingAddressCountry = null;
+ DateTime lastInvoiceDate = bac.getLastInvoiceDate();
+ BigDecimal totalInvoiceBalance = bac.getTotalInvoiceBalance();
+ String lastPaymentStatus = bac.getLastPaymentStatus();
+ String paymentMethod = bac.getPaymentMethod();
+ String creditCardType = bac.getCreditCardType();
+ String billingAddressCountry = bac.getBillingAddressCountry();
// Retrieve invoices information
final List<Invoice> invoices = invoiceUserApi.getInvoicesByAccount(account.getId());
if (invoices != null && invoices.size() > 0) {
for (final Invoice invoice : invoices) {
- invoiceIds.add(invoice.getId());
totalInvoiceBalance = totalInvoiceBalance.add(invoice.getBalance());
if (lastInvoiceDate == null || invoice.getInvoiceDate().isAfter(lastInvoiceDate)) {
diff --git a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java
index a74fea3..f41991d 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java
@@ -37,6 +37,9 @@ public class BusinessAccount {
private String creditCardType;
private String billingAddressCountry;
+ public BusinessAccount() {
+ }
+
public BusinessAccount(final String key, final String name, final BigDecimal balance, final DateTime lastInvoiceDate, final BigDecimal totalInvoiceBalance, final String lastPaymentStatus, final String paymentMethod, final String creditCardType, final String billingAddressCountry) {
this.key = key;
this.balance = balance;
@@ -53,6 +56,10 @@ public class BusinessAccount {
return key;
}
+ public void setKey(final String key) {
+ this.key = key;
+ }
+
public BigDecimal getBalance() {
return balance;
}