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 d5cc7d4..70fd6cb 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
@@ -31,15 +31,17 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
private final String phone;
private final Currency currency;
private final int billCycleDay;
+ private final String paymentProviderName;
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.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay(),
+ data.getPaymentProviderName());
}
public DefaultAccount(UUID id, String externalKey, String email, String name, int firstNameLength,
- String phone, Currency currency, int billCycleDay) {
+ String phone, Currency currency, int billCycleDay, String paymentProviderName) {
super(id);
this.externalKey = externalKey;
this.email = email;
@@ -48,6 +50,7 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
this.phone = phone;
this.currency = currency;
this.billCycleDay = billCycleDay;
+ this.paymentProviderName = paymentProviderName;
this.tags = new DefaultTagStore(id, getObjectName());
}
@@ -93,6 +96,11 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
}
@Override
+ public String getPaymentProviderName() {
+ return paymentProviderName;
+ }
+
+ @Override
public List<Tag> getTagList() {
return tags.getEntityList();
}
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 9737deb..873b690 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
@@ -30,6 +30,7 @@ public class AccountBuilder {
private String phone;
private Currency currency;
private int billingCycleDay;
+ private String paymentProviderName;
public AccountBuilder() {
this(UUID.randomUUID());
@@ -74,7 +75,12 @@ public class AccountBuilder {
return this;
}
+ public AccountBuilder paymentProviderName(String paymentProviderName) {
+ this.paymentProviderName = paymentProviderName;
+ return this;
+ }
+
public DefaultAccount build() {
- return new DefaultAccount(id, externalKey, email, name, firstNameLength, phone, currency, billingCycleDay);
+ return new DefaultAccount(id, externalKey, email, name, firstNameLength, phone, currency, billingCycleDay, paymentProviderName);
}
}
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 831dab2..c6cfbf3 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
@@ -22,12 +22,21 @@ import com.ning.billing.account.api.user.AccountBuilder;
import com.ning.billing.catalog.api.Currency;
import org.skife.jdbi.v2.SQLStatement;
import org.skife.jdbi.v2.StatementContext;
-import org.skife.jdbi.v2.sqlobject.*;
+import org.skife.jdbi.v2.sqlobject.Bind;
+import org.skife.jdbi.v2.sqlobject.Binder;
+import org.skife.jdbi.v2.sqlobject.BinderFactory;
+import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
+import org.skife.jdbi.v2.sqlobject.SqlQuery;
+import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
-import java.lang.annotation.*;
+import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
@@ -53,11 +62,13 @@ public interface AccountDao extends EntityDao<Account> {
String phone = result.getString("phone");
int billingCycleDay = result.getInt("billing_cycle_day");
Currency currency = Currency.valueOf(result.getString("currency"));
+ String paymentProviderName = result.getString("payment_provider_name");
return new AccountBuilder(id).externalKey(externalKey).email(email)
.name(name).firstNameLength(firstNameLength)
.phone(phone).currency(currency)
- .billingCycleDay(billingCycleDay).build();
+ .billingCycleDay(billingCycleDay)
+ .paymentProviderName(paymentProviderName).build();
}
}
@@ -77,6 +88,7 @@ public interface AccountDao extends EntityDao<Account> {
q.bind("phone", account.getPhone());
q.bind("currency", account.getCurrency().toString());
q.bind("billingCycleDay", account.getBillCycleDay());
+ q.bind("paymentProviderName", account.getPaymentProviderName());
}
};
}
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java b/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java
index 8bf8b66..9c819b5 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java
@@ -29,7 +29,7 @@ import com.ning.billing.account.api.CustomField;
import com.ning.billing.account.api.DefaultAccount;
import com.ning.billing.account.api.FieldStore;
import com.ning.billing.account.api.Tag;
-import com.ning.billing.account.api.user.AccountChangeEventDefault;
+import com.ning.billing.account.api.user.AccountChangeNotificationDefault;
import com.ning.billing.account.api.user.AccountCreationEventDefault;
import com.ning.billing.util.eventbus.EventBus;
@@ -155,7 +155,7 @@ public class AccountDaoWrapper implements AccountDao {
AccountCreationNotification creationEvent = new AccountCreationEventDefault(account);
eventBus.post(creationEvent);
} else {
- AccountChangeNotification changeEvent = new AccountChangeEventDefault(account.getId(), currentAccount, account);
+ AccountChangeNotification changeEvent = new AccountChangeNotificationDefault(account.getId(), currentAccount, account);
if (changeEvent.hasChanges()) {
eventBus.post(changeEvent);
}
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 8be70d4..33d60b8 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,29 @@
group AccountDaoSql;
save() ::= <<
- 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)
+ INSERT INTO accounts
+ (id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name)
+ VALUES
+ (:id, :externalKey, :email, :name, :firstNameLength, :phone, :currency, :billingCycleDay, :paymentProviderName)
ON DUPLICATE KEY UPDATE
external_key = :externalKey, email = :email, name = :name, first_name_length = :firstNameLength,
- phone = :phone, currency = :currency;
+ phone = :phone, currency = :currency, payment_provider_name = :paymentProviderName;
>>
getAccountByKey() ::= <<
- select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
+ select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name
from accounts
where external_key = :externalKey;
>>
getById() ::= <<
- select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
+ select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name
from accounts
where id = :id;
>>
get() ::= <<
- select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
+ select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name
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 9975918..9bc2a03 100644
--- a/account/src/main/resources/com/ning/billing/account/ddl.sql
+++ b/account/src/main/resources/com/ning/billing/account/ddl.sql
@@ -8,6 +8,7 @@ CREATE TABLE accounts (
phone varchar(13) DEFAULT NULL,
currency char(3) NOT NULL,
billing_cycle_day int NOT NULL,
+ payment_provider_name varchar(20),
PRIMARY KEY(id)
) ENGINE=innodb;
CREATE UNIQUE INDEX accounts_external_key ON accounts(external_key);
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 7bb16fc..dbb7f8a 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
@@ -74,6 +74,11 @@ public class MockAccount implements AccountData
}
@Override
+ public String getPaymentProviderName() {
+ return "PayPal";
+ }
+
+ @Override
public UUID getId()
{
return id;
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 b0f7dc4..cdcae52 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
@@ -33,4 +33,6 @@ public interface AccountData extends Entity{
public int getBillCycleDay();
public Currency getCurrency();
+
+ public String getPaymentProviderName();
}
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 3a245d1..72d60aa 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
@@ -315,7 +315,10 @@ public abstract class TestUserApiBase {
public Currency getCurrency() {
return Currency.USD;
}
-
+ @Override
+ public String getPaymentProviderName() {
+ return "Paypal";
+ }
@Override
public UUID getId() {
return id;