Details
diff --git a/account/src/main/java/com/ning/billing/account/api/AccountDefault.java b/account/src/main/java/com/ning/billing/account/api/AccountDefault.java
index 2c8c281..f2cb01d 100644
--- a/account/src/main/java/com/ning/billing/account/api/AccountDefault.java
+++ b/account/src/main/java/com/ning/billing/account/api/AccountDefault.java
@@ -23,26 +23,26 @@ import java.util.UUID;
public class AccountDefault extends CustomizableEntityBase implements Account {
public final static String OBJECT_TYPE = "Account";
- private String externalKey;
- private String email;
- private String firstName;
- private String lastName;
- private String phone;
- private Currency currency;
- private int billCycleDay;
+ private final String externalKey;
+ private final String email;
+ private final String name;
+ private final int firstNameLength;
+ private final String phone;
+ private final Currency currency;
+ private final int billCycleDay;
public AccountDefault(AccountData data) {
- this(UUID.randomUUID(), data.getExternalKey(), data.getEmail(), data.getFirstName(), data.getLastName(),
- data.getPhone(), data.getCurrency(), data.getBillCycleDay());
+ this(UUID.randomUUID(), data.getExternalKey(), data.getEmail(), data.getName(),
+ data.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay());
}
- public AccountDefault(UUID id, String externalKey, String email, String firstName, String lastName,
+ public AccountDefault(UUID id, String externalKey, String email, String name, int firstNameLength,
String phone, Currency currency, int billCycleDay) {
super(id);
this.externalKey = externalKey;
this.email = email;
- this.firstName = firstName;
- this.lastName = lastName;
+ this.name = name;
+ this.firstNameLength = firstNameLength;
this.phone = phone;
this.currency = currency;
this.billCycleDay = billCycleDay;
@@ -58,8 +58,9 @@ public class AccountDefault extends CustomizableEntityBase implements Account {
return externalKey;
}
- public void setExternalKey(String externalKey) {
- this.externalKey = externalKey;
+ @Override
+ public String getName() {
+ return name;
}
@Override
@@ -67,26 +68,9 @@ public class AccountDefault extends CustomizableEntityBase implements Account {
return email;
}
- public void setEmail(String email) {
- this.email = email;
- }
-
@Override
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- @Override
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
+ public int getFirstNameLength() {
+ return firstNameLength;
}
@Override
@@ -94,25 +78,13 @@ public class AccountDefault extends CustomizableEntityBase implements Account {
return phone;
}
- public void setPhone(String phone) {
- this.phone = phone;
- }
-
@Override
public Currency getCurrency() {
return currency;
}
- public void setCurrency(Currency currency) {
- this.currency = currency;
- }
-
@Override
public int getBillCycleDay() {
return billCycleDay;
}
-
- public void setBillCycleDay(int billCycleDay) {
- this.billCycleDay = billCycleDay;
- }
}
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 5abe588..3d881b6 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
@@ -25,11 +25,11 @@ public class AccountBuilder {
private UUID id;
private String externalKey;
private String email;
- private String firstName;
- private String lastName;
+ private String name;
+ private int firstNameLength;
private String phone;
private Currency currency;
- private int billCycleDay;
+ private int billingCycleDay;
public AccountBuilder() {
this(UUID.randomUUID());
@@ -49,13 +49,13 @@ public class AccountBuilder {
return this;
}
- public AccountBuilder firstName(String firstName) {
- this.firstName = firstName;
+ public AccountBuilder name(String name) {
+ this.name = name;
return this;
}
- public AccountBuilder lastName(String lastName) {
- this.lastName = lastName;
+ public AccountBuilder firstNameLength(int firstNameLength) {
+ this.firstNameLength = firstNameLength;
return this;
}
@@ -64,8 +64,8 @@ public class AccountBuilder {
return this;
}
- public AccountBuilder billCycleDay(int billCycleDay) {
- this.billCycleDay = billCycleDay;
+ public AccountBuilder billingCycleDay(int billingCycleDay) {
+ this.billingCycleDay = billingCycleDay;
return this;
}
@@ -75,6 +75,6 @@ public class AccountBuilder {
}
public AccountDefault build() {
- return new AccountDefault(id, externalKey, email, firstName, lastName, phone, currency, billCycleDay);
+ return new AccountDefault(id, externalKey, email, name, firstNameLength, phone, currency, billingCycleDay);
}
}
diff --git a/account/src/main/java/com/ning/billing/account/api/user/AccountChangeEventDefault.java b/account/src/main/java/com/ning/billing/account/api/user/AccountChangeEventDefault.java
index f5a9480..2a992f0 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/AccountChangeEventDefault.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/AccountChangeEventDefault.java
@@ -58,11 +58,8 @@ public class AccountChangeEventDefault implements AccountChangeEvent {
if (!newData.getEmail().equals(oldData.getEmail())) {
changedFields.add(new ChangedFieldDefault("email", newData.getEmail(), oldData.getEmail()));
}
- if (!newData.getFirstName().equals(oldData.getFirstName())) {
- changedFields.add(new ChangedFieldDefault("firstName", newData.getFirstName(), oldData.getFirstName()));
- }
- if (!newData.getLastName().equals(oldData.getLastName())) {
- changedFields.add(new ChangedFieldDefault("lastName", newData.getLastName(), oldData.getLastName()));
+ if (!newData.getName().equals(oldData.getName())) {
+ changedFields.add(new ChangedFieldDefault("firstName", newData.getName(), oldData.getName()));
}
if (!newData.getPhone().equals(oldData.getPhone())) {
changedFields.add(new ChangedFieldDefault("phone", newData.getPhone(), oldData.getPhone()));
diff --git a/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java b/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java
index c065783..fa07547 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java
@@ -35,7 +35,9 @@ public class AccountUserApi implements com.ning.billing.account.api.AccountUserA
@Override
public Account createAccount(AccountData data) {
- return new AccountDefault(data);
+ Account account = new AccountDefault(data);
+ dao.save(account);
+ return account;
}
@Override
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountDao.java b/account/src/main/java/com/ning/billing/account/dao/AccountDao.java
index 1dbc8d9..f571405 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AccountDao.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountDao.java
@@ -48,14 +48,16 @@ public interface AccountDao extends EntityDao<Account> {
UUID id = UUID.fromString(result.getString("id"));
String externalKey = result.getString("external_key");
String email = result.getString("email");
- String firstName = result.getString("first_name");
- String lastName = result.getString("last_name");
+ String name = result.getString("name");
+ int firstNameLength = result.getInt("first_name_length");
String phone = result.getString("phone");
+ int billingCycleDay = result.getInt("billing_cycle_day");
Currency currency = Currency.valueOf(result.getString("currency"));
return new AccountBuilder(id).externalKey(externalKey).email(email)
- .firstName(firstName).lastName(lastName)
- .phone(phone).currency(currency).build();
+ .name(name).firstNameLength(firstNameLength)
+ .phone(phone).currency(currency)
+ .billingCycleDay(billingCycleDay).build();
}
}
@@ -70,10 +72,11 @@ public interface AccountDao extends EntityDao<Account> {
q.bind("id", account.getId().toString());
q.bind("externalKey", account.getExternalKey());
q.bind("email", account.getEmail());
- q.bind("firstName", account.getFirstName());
- q.bind("lastName", account.getLastName());
+ q.bind("name", account.getName());
+ q.bind("firstNameLength", account.getFirstNameLength());
q.bind("phone", account.getPhone());
q.bind("currency", account.getCurrency().toString());
+ q.bind("billingCycleDay", account.getBillCycleDay());
}
};
}
diff --git a/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg b/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg
index a925519..8be70d4 100644
--- a/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg
+++ b/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg
@@ -1,27 +1,27 @@
-group IAccountDaoSql;
+group AccountDaoSql;
save() ::= <<
- INSERT INTO accounts (id, external_key, email, first_name, last_name, phone, currency)
- VALUES (:id, :externalKey, :email, :firstName, :lastName, :phone, :currency)
+ INSERT INTO accounts (id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day)
+ VALUES (:id, :externalKey, :email, :name, :firstNameLength, :phone, :currency, :billingCycleDay)
ON DUPLICATE KEY UPDATE
- external_key = :externalKey, email = :email, first_name = :firstName, last_name = :lastName,
+ external_key = :externalKey, email = :email, name = :name, first_name_length = :firstNameLength,
phone = :phone, currency = :currency;
>>
getAccountByKey() ::= <<
- select id, external_key, email, first_name, last_name, phone, currency
+ select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
from accounts
where external_key = :externalKey;
>>
getById() ::= <<
- select id, external_key, email, first_name, last_name, phone, currency
+ select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
from accounts
where id = :id;
>>
get() ::= <<
- select id, external_key, email, first_name, last_name, phone, currency
+ select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
from accounts;
>>
diff --git a/account/src/main/resources/com/ning/billing/account/ddl.sql b/account/src/main/resources/com/ning/billing/account/ddl.sql
index b6f3c0b..55dff4e 100644
--- a/account/src/main/resources/com/ning/billing/account/ddl.sql
+++ b/account/src/main/resources/com/ning/billing/account/ddl.sql
@@ -3,10 +3,11 @@ CREATE TABLE accounts (
id char(36) NOT NULL,
external_key varchar(128) NULL,
email varchar(50) DEFAULT NULL,
- first_name varchar(100) NOT NULL,
- last_name varchar(100) NOT NULL,
+ name varchar(100) NOT NULL,
+ first_name_length int NOT NULL,
phone varchar(13) DEFAULT NULL,
currency char(3) NOT NULL,
+ billing_cycle_day int NOT NULL,
PRIMARY KEY(id)
) ENGINE=innodb;
CREATE UNIQUE INDEX accounts_external_key ON accounts(external_key);
diff --git a/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java b/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
index ee4f813..3ee07df 100644
--- a/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
+++ b/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
@@ -37,7 +37,10 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
String thisKey = key + UUID.randomUUID().toString();
String lastName = UUID.randomUUID().toString();
String thisEmail = email + " " + UUID.randomUUID();
- return new AccountBuilder().externalKey(thisKey).firstName(firstName).lastName(lastName)
+ String name = firstName + " " + lastName;
+
+ int firstNameLength = firstName.length();
+ return new AccountBuilder().externalKey(thisKey).name(name).firstNameLength(firstNameLength)
.email(thisEmail).currency(Currency.USD).build();
}
@@ -65,8 +68,8 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
Account account = createTestAccount();
UUID id = account.getId();
String key = account.getExternalKey();
- String firstName = account.getFirstName();
- String lastName = account.getLastName();
+ String name = account.getName();
+ int firstNameLength = account.getFirstNameLength();
accountDao.save(account);
@@ -74,8 +77,8 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
assertNotNull(account);
assertEquals(account.getId(), id);
assertEquals(account.getExternalKey(), key);
- assertEquals(account.getFirstName(), firstName);
- assertEquals(account.getLastName(), lastName);
+ assertEquals(account.getName(), name);
+ assertEquals(account.getFirstNameLength(), firstNameLength);
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index 7e81737..9734ada 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -68,7 +68,7 @@ public class TestAnalyticsService
private BusinessSubscriptionTransition expectedTransition;
@BeforeClass(alwaysRun = true)
- public void startMysql() throws IOException, ClassNotFoundException, SQLException, EntitlementUserApiException
+ public void Setup() throws IOException, ClassNotFoundException, SQLException, EntitlementUserApiException
{
final String analyticsDdl = IOUtils.toString(BusinessSubscriptionTransitionDao.class.getResourceAsStream("/com/ning/billing/analytics/ddl.sql"));
// For bundles
@@ -80,7 +80,22 @@ public class TestAnalyticsService
helper.initDb(accountDdl);
helper.initDb(entitlementDdl);
- // We need a bundle to retrieve the event key
+ bus.start();
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void stopMysql()
+ {
+ helper.stopMysql();
+ }
+
+ @Test(groups = "slow")
+ public void testRegisterForNotifications() throws Exception
+ {
+ // Make sure the service has been instantiated
+ Assert.assertEquals(service.getName(), "analytics-service");
+
+ // We need a bundle to retrieve the event key
final MockAccount account = new MockAccount(UUID.randomUUID(), ACCOUNT_KEY, Currency.USD);
final Account storedAccount = accountApi.createAccount(account);
final ISubscriptionBundle bundle = entitlementApi.createBundleForAccount(storedAccount, KEY);
@@ -90,7 +105,7 @@ public class TestAnalyticsService
Assert.assertEquals(bundle.getKey(), KEY);
// Create a subscription transition
- final IProduct product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
+ final IProduct product = new MockProduct("platinum", "subscription", ProductCategory.BASE);
final IPlan plan = new MockPlan("platinum-monthly", product);
final IPlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
final UUID subscriptionId = UUID.randomUUID();
@@ -120,25 +135,11 @@ public class TestAnalyticsService
requestedTransitionTime,
BusinessSubscriptionEvent.subscriptionCreated(plan),
null,
- new BusinessSubscription(priceList, plan, phase, null, effectiveTransitionTime, ISubscription.SubscriptionState.ACTIVE, subscriptionId, bundle.getId())
+ new BusinessSubscription(priceList, plan, phase, Currency.USD, effectiveTransitionTime, ISubscription.SubscriptionState.ACTIVE, subscriptionId, bundle.getId())
);
- }
-
- @AfterClass(alwaysRun = true)
- public void stopMysql()
- {
- helper.stopMysql();
- }
-
- @Test(groups = "slow")
- public void testRegisterForNotifications() throws Exception
- {
- // Make sure the service has been instantiated
- Assert.assertEquals(service.getName(), "analytics-service");
- // Test the bus and make sure we can register our service
+ // Make sure we can register our service
try {
- bus.start();
service.registerForNotifications();
}
catch (Throwable t) {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
index 689694a..bfcfea8 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
@@ -38,15 +38,8 @@ public class MockAccount implements Account
}
@Override
- public String getFirstName()
- {
- return "firstName";
- }
-
- @Override
- public String getLastName()
- {
- return "lastName";
+ public int getFirstNameLength() {
+ return 0;
}
@Override
@@ -68,6 +61,11 @@ public class MockAccount implements Account
}
@Override
+ public String getName() {
+ return "firstName lastName";
+ }
+
+ @Override
public int getBillCycleDay()
{
return 12;
diff --git a/api/src/main/java/com/ning/billing/account/api/AccountData.java b/api/src/main/java/com/ning/billing/account/api/AccountData.java
index 088de96..fe54598 100644
--- a/api/src/main/java/com/ning/billing/account/api/AccountData.java
+++ b/api/src/main/java/com/ning/billing/account/api/AccountData.java
@@ -22,9 +22,9 @@ public interface AccountData {
public String getExternalKey();
- public String getFirstName();
+ public String getName();
- public String getLastName();
+ public int getFirstNameLength();
public String getEmail();
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoiceCreationEvent.java b/api/src/main/java/com/ning/billing/invoice/api/InvoiceCreationEvent.java
new file mode 100644
index 0000000..b876530
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoiceCreationEvent.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.invoice.api;
+
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.util.eventbus.IEventBusType;
+import org.joda.time.DateTime;
+
+import java.math.BigDecimal;
+import java.util.UUID;
+
+public interface InvoiceCreationEvent extends IEventBusType {
+ public UUID getInvoiceId();
+ public BigDecimal getAmountOwed();
+ public Currency getCurrency();
+ public DateTime getInvoiceDate();
+}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
index fa68bff..9f7e3a6 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
@@ -281,12 +281,12 @@ public abstract class TestUserApiBase {
protected Account getAccount() {
Account account = new Account() {
@Override
- public String getFirstName() {
- return "accountFirstName";
+ public String getName() {
+ return "accountFirstName accountLastName";
}
@Override
- public String getLastName() {
- return "accountLastName";
+ public int getFirstNameLength() {
+ return "accountFirstName".length();
}
@Override
public String getEmail() {