Details
diff --git a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
index b2ce15c..1c7a397 100644
--- a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
+++ b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
@@ -16,6 +16,7 @@
package com.ning.billing.account.api;
+import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
@@ -37,22 +38,24 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
private final Currency currency;
private final int billCycleDay;
private final String paymentProviderName;
+ private final BigDecimal balance;
private final DefaultTagStore tags;
public DefaultAccount(AccountData data) {
this(UUID.randomUUID(), data.getExternalKey(), data.getEmail(), data.getName(),
data.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay(),
- data.getPaymentProviderName());
+ data.getPaymentProviderName(), BigDecimal.ZERO);
}
public DefaultAccount(UUID id, AccountData data) {
this(id, data.getExternalKey(), data.getEmail(), data.getName(),
data.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay(),
- data.getPaymentProviderName());
+ data.getPaymentProviderName(), BigDecimal.ZERO);
}
public DefaultAccount(UUID id, String externalKey, String email, String name, int firstNameLength,
- String phone, Currency currency, int billCycleDay, String paymentProviderName) {
+ String phone, Currency currency, int billCycleDay, String paymentProviderName,
+ BigDecimal balance) {
super(id);
this.externalKey = externalKey;
this.email = email;
@@ -62,6 +65,7 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
this.currency = currency;
this.billCycleDay = billCycleDay;
this.paymentProviderName = paymentProviderName;
+ this.balance = balance;
this.tags = new DefaultTagStore(id, getObjectName());
}
@@ -151,4 +155,9 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
public boolean processPayment() {
return tags.processPayment();
}
+
+ @Override
+ public BigDecimal getBalance() {
+ return balance;
+ }
}
diff --git a/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java b/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
index 873b690..e05e967 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
@@ -19,6 +19,7 @@ package com.ning.billing.account.api.user;
import com.ning.billing.account.api.DefaultAccount;
import com.ning.billing.catalog.api.Currency;
+import java.math.BigDecimal;
import java.util.UUID;
public class AccountBuilder {
@@ -31,6 +32,7 @@ public class AccountBuilder {
private Currency currency;
private int billingCycleDay;
private String paymentProviderName;
+ private BigDecimal balance;
public AccountBuilder() {
this(UUID.randomUUID());
@@ -80,7 +82,13 @@ public class AccountBuilder {
return this;
}
+ public AccountBuilder balance(BigDecimal balance) {
+ this.balance = balance;
+ return this;
+ }
+
public DefaultAccount build() {
- return new DefaultAccount(id, externalKey, email, name, firstNameLength, phone, currency, billingCycleDay, paymentProviderName);
+ return new DefaultAccount(id, externalKey, email, name, firstNameLength,
+ phone, currency, billingCycleDay, paymentProviderName, balance);
}
}
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java b/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
index 2676753..862071d 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
@@ -40,6 +40,7 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
@@ -69,12 +70,15 @@ public interface AccountSqlDao extends EntityDao<Account>, Transactional<Account
int billingCycleDay = result.getInt("billing_cycle_day");
Currency currency = Currency.valueOf(result.getString("currency"));
String paymentProviderName = result.getString("payment_provider_name");
+ BigDecimal balance = result.getBigDecimal("balance");
return new AccountBuilder(id).externalKey(externalKey).email(email)
.name(name).firstNameLength(firstNameLength)
.phone(phone).currency(currency)
.billingCycleDay(billingCycleDay)
- .paymentProviderName(paymentProviderName).build();
+ .paymentProviderName(paymentProviderName)
+ .balance(balance)
+ .build();
}
}
diff --git a/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg b/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg
index b92dcd9..ecf866c 100644
--- a/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg
+++ b/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg
@@ -17,9 +17,14 @@ getAccountByKey() ::= <<
>>
getById() ::= <<
- select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name
- from accounts
- where id = :id;
+ select
+ a.id, a.external_key, a.email, a.name, a.first_name_length,
+ a.phone, a.currency, a.billing_cycle_day, a.payment_provider_name
+ from accounts a
+ left join invoices i on i.account_id = a.id
+ left join invoice_items ii on ii.invoice_id = i.id
+ left join invoice_payments ip ON ip.invoice_id = i.id
+ where a.id = :id;
>>
get() ::= <<
diff --git a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
index c565e59..70ea6e7 100644
--- a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
+++ b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
@@ -40,8 +40,11 @@ public abstract class AccountDaoTestBase {
// Healthcheck test to make sure MySQL is setup properly
try {
AccountModuleMock module = new AccountModuleMock();
- final String ddl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
- module.createDb(ddl);
+ final String accountDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
+ final String invoiceDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
+ module.startDb();
+ module.initDb(accountDdl);
+ module.initDb(invoiceDdl);
final Injector injector = Guice.createInjector(Stage.DEVELOPMENT, module);
dbi = injector.getInstance(IDBI.class);
diff --git a/account/src/test/java/com/ning/billing/account/glue/AccountModuleMock.java b/account/src/test/java/com/ning/billing/account/glue/AccountModuleMock.java
index 54a761e..33330eb 100644
--- a/account/src/test/java/com/ning/billing/account/glue/AccountModuleMock.java
+++ b/account/src/test/java/com/ning/billing/account/glue/AccountModuleMock.java
@@ -25,8 +25,11 @@ import java.io.IOException;
public class AccountModuleMock extends AccountModule {
private final MysqlTestingHelper helper = new MysqlTestingHelper();
- public void createDb(String ddl) throws IOException {
+ public void startDb() throws IOException {
helper.startMysql();
+ }
+
+ public void initDb(String ddl) throws IOException {
helper.initDb(ddl);
}
diff --git a/api/src/main/java/com/ning/billing/account/api/Account.java b/api/src/main/java/com/ning/billing/account/api/Account.java
index 1cc9aa9..543f280 100644
--- a/api/src/main/java/com/ning/billing/account/api/Account.java
+++ b/api/src/main/java/com/ning/billing/account/api/Account.java
@@ -16,9 +16,10 @@
package com.ning.billing.account.api;
+import java.math.BigDecimal;
import com.ning.billing.util.customfield.CustomizableEntity;
import com.ning.billing.util.tag.Taggable;
public interface Account extends AccountData, CustomizableEntity, Taggable {
-
+ public BigDecimal getBalance();
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
index b9bddb8..13d7dcc 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
@@ -30,7 +30,6 @@ import static org.testng.Assert.fail;
public abstract class InvoiceDaoTestBase {
protected InvoiceDao invoiceDao;
- protected InvoiceItemSqlDao invoiceItemDao;
@BeforeClass()
protected void setup() throws IOException {
@@ -45,9 +44,6 @@ public abstract class InvoiceDaoTestBase {
invoiceDao = injector.getInstance(InvoiceDao.class);
invoiceDao.test();
- invoiceItemDao = injector.getInstance(InvoiceItemSqlDao.class);
- invoiceItemDao.test();
-
EventBusService busService = injector.getInstance(EventBusService.class);
((DefaultEventBusService) busService).startBus();
}