killbill-memoizeit
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionFactory.java 22(+22 -0)
entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundleData.java 17(+17 -0)
entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.java 3(+3 -0)
entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg 8(+6 -2)
invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java 11(+11 -0)
invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java 11(+11 -0)
invoice/src/test/java/com/ning/billing/invoice/generator/TestDefaultInvoiceGeneratorUnit.java 23(+11 -12)
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 fcd0a89..cb2188f 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
@@ -18,6 +18,9 @@ package com.ning.billing.account.api;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import com.ning.billing.catalog.api.Currency;
@@ -90,7 +93,21 @@ public class DefaultAccount extends EntityBase implements Account {
final String city, final String stateOrProvince, final String country,
final String postalCode, final String phone,
final Boolean isMigrated, final Boolean isNotifiedForInvoices) {
- super(id);
+ this(id, null, null, externalKey, email, name, firstNameLength, currency, billCycleDay, paymentMethodId,
+ timeZone, locale, address1, address2, companyName, city, stateOrProvince, country, postalCode,
+ phone, isMigrated, isNotifiedForInvoices);
+ }
+
+ public DefaultAccount(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
+ final String externalKey, final String email,
+ final String name, final Integer firstNameLength,
+ final Currency currency, final BillCycleDay billCycleDay, final UUID paymentMethodId,
+ final DateTimeZone timeZone, final String locale,
+ final String address1, final String address2, final String companyName,
+ final String city, final String stateOrProvince, final String country,
+ final String postalCode, final String phone,
+ final Boolean isMigrated, final Boolean isNotifiedForInvoices) {
+ super(id, createdDate, updatedDate);
this.externalKey = externalKey;
this.email = email;
this.name = name;
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountMapper.java b/account/src/main/java/com/ning/billing/account/dao/AccountMapper.java
index 90a6b25..e6e3a9e 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AccountMapper.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountMapper.java
@@ -20,6 +20,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
@@ -31,6 +32,7 @@ import com.ning.billing.catalog.api.Currency;
import com.ning.billing.util.dao.MapperBase;
public class AccountMapper extends MapperBase implements ResultSetMapper<Account> {
+
@Override
public Account map(final int index, final ResultSet result, final StatementContext context) throws SQLException {
final UUID id = UUID.fromString(result.getString("id"));
@@ -63,7 +65,9 @@ public class AccountMapper extends MapperBase implements ResultSetMapper<Account
final Boolean isMigrated = result.getBoolean("migrated");
final Boolean isNotifiedForInvoices = result.getBoolean("is_notified_for_invoices");
- return new DefaultAccount(id, externalKey, email, name, firstNameLength, currency,
+ final DateTime createdDate = getDateTime(result, "created_date");
+ final DateTime updatedDate = getDateTime(result, "updated_date");
+ return new DefaultAccount(id, createdDate, updatedDate, externalKey, email, name, firstNameLength, currency,
new DefaultBillCycleDay(billingCycleDayLocal, billingCycleDayUTC), paymentMethodId, timeZone, locale,
address1, address2, companyName, city, stateOrProvince, country, postalCode, phone,
isMigrated, isNotifiedForInvoices);
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 ad14c3e..5ec0dbd 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
@@ -79,9 +79,9 @@ import com.ning.billing.payment.api.PaymentStatus;
import com.ning.billing.payment.dao.PaymentAttemptModelDao;
import com.ning.billing.payment.dao.PaymentDao;
import com.ning.billing.payment.dao.PaymentModelDao;
-import com.ning.billing.util.svcsapi.bus.Bus;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.clock.DefaultClock;
+import com.ning.billing.util.svcsapi.bus.Bus;
import com.google.inject.Inject;
@@ -224,9 +224,8 @@ public class TestAnalyticsService extends AnalyticsTestSuiteWithEmbeddedDB {
private void createInvoiceAndPaymentCreationEvents(final Account account) {
final DefaultInvoice invoice = new DefaultInvoice(account.getId(), clock.getUTCToday(), clock.getUTCToday(), ACCOUNT_CURRENCY);
- final FixedPriceInvoiceItem invoiceItem = new FixedPriceInvoiceItem(
- UUID.randomUUID(), invoice.getId(), account.getId(), UUID.randomUUID(), UUID.randomUUID(), "somePlan", "somePhase", clock.getUTCToday(),
- INVOICE_AMOUNT, ACCOUNT_CURRENCY);
+ final FixedPriceInvoiceItem invoiceItem = new FixedPriceInvoiceItem(invoice.getId(), account.getId(), UUID.randomUUID(), UUID.randomUUID(), "somePlan", "somePhase", clock.getUTCToday(),
+ INVOICE_AMOUNT, ACCOUNT_CURRENCY);
invoice.addInvoiceItem(invoiceItem);
invoiceDao.create(invoice, invoice.getTargetDate().getDayOfMonth(), true, internalCallContext);
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentMethod.java b/api/src/main/java/com/ning/billing/payment/api/PaymentMethod.java
index dfe9668..afbc076 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentMethod.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentMethod.java
@@ -17,8 +17,9 @@ package com.ning.billing.payment.api;
import java.util.UUID;
+import com.ning.billing.util.entity.Entity;
-public interface PaymentMethod {
+public interface PaymentMethod extends Entity {
public UUID getId();
diff --git a/api/src/main/java/com/ning/billing/util/entity/Entity.java b/api/src/main/java/com/ning/billing/util/entity/Entity.java
index f363534..83b2151 100644
--- a/api/src/main/java/com/ning/billing/util/entity/Entity.java
+++ b/api/src/main/java/com/ning/billing/util/entity/Entity.java
@@ -18,6 +18,13 @@ package com.ning.billing.util.entity;
import java.util.UUID;
+import org.joda.time.DateTime;
+
public interface Entity {
+
public UUID getId();
+
+ public DateTime getCreatedDate();
+
+ public DateTime getUpdatedDate();
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionFactory.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionFactory.java
index 599c65e..edb6b7a 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionFactory.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionFactory.java
@@ -33,6 +33,7 @@ import com.ning.billing.util.clock.Clock;
import com.google.inject.Inject;
public class DefaultSubscriptionFactory implements SubscriptionFactory {
+
private final SubscriptionApiService apiService;
private final Clock clock;
private final CatalogService catalogService;
@@ -54,8 +55,11 @@ public class DefaultSubscriptionFactory implements SubscriptionFactory {
}
public static class SubscriptionBuilder {
+
private UUID id;
private UUID bundleId;
+ private DateTime createdDate;
+ private DateTime updatedDate;
private DateTime alignStartDate;
private DateTime bundleStartDate;
private Long activeVersion;
@@ -83,6 +87,16 @@ public class DefaultSubscriptionFactory implements SubscriptionFactory {
return this;
}
+ public SubscriptionBuilder setCreatedDate(final DateTime createdDate) {
+ this.createdDate = createdDate;
+ return this;
+ }
+
+ public SubscriptionBuilder setUpdatedDate(final DateTime updatedDate) {
+ this.updatedDate = updatedDate;
+ return this;
+ }
+
public SubscriptionBuilder setBundleId(final UUID bundleId) {
this.bundleId = bundleId;
return this;
@@ -122,6 +136,14 @@ public class DefaultSubscriptionFactory implements SubscriptionFactory {
return id;
}
+ public DateTime getCreatedDate() {
+ return createdDate;
+ }
+
+ public DateTime getUpdatedDate() {
+ return updatedDate;
+ }
+
public UUID getBundleId() {
return bundleId;
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundleData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundleData.java
index 3722b4b..87516f4 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundleData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundleData.java
@@ -26,9 +26,12 @@ import com.ning.billing.junction.api.BlockingState;
import com.ning.billing.overdue.OverdueState;
public class SubscriptionBundleData implements SubscriptionBundle {
+
private final UUID id;
private final String key;
private final UUID accountId;
+ private final DateTime createdDate;
+ private final DateTime updatedDate;
private final DateTime lastSysTimeUpdate;
private final OverdueState<SubscriptionBundle> overdueState;
@@ -46,6 +49,10 @@ public class SubscriptionBundleData implements SubscriptionBundle {
this.accountId = accountId;
this.lastSysTimeUpdate = lastSysUpdate;
this.overdueState = overdueState;
+
+ // TODO add column in bundles table
+ createdDate = null;
+ updatedDate = null;
}
@Override
@@ -59,6 +66,16 @@ public class SubscriptionBundleData implements SubscriptionBundle {
}
@Override
+ public DateTime getCreatedDate() {
+ return createdDate;
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return updatedDate;
+ }
+
+ @Override
public UUID getAccountId() {
return accountId;
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
index 59d67e9..b0ba8ea 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
@@ -55,6 +55,7 @@ import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.entity.EntityBase;
public class SubscriptionData extends EntityBase implements Subscription {
+
private static final Logger log = LoggerFactory.getLogger(SubscriptionData.class);
private final Clock clock;
@@ -88,9 +89,8 @@ public class SubscriptionData extends EntityBase implements Subscription {
this(builder, null, null);
}
- public SubscriptionData(final SubscriptionBuilder builder,
- @Nullable final SubscriptionApiService apiService, @Nullable final Clock clock) {
- super(builder.getId());
+ public SubscriptionData(final SubscriptionBuilder builder, @Nullable final SubscriptionApiService apiService, @Nullable final Clock clock) {
+ super(builder.getId(), builder.getCreatedDate(), builder.getUpdatedDate());
this.apiService = apiService;
this.clock = clock;
this.bundleId = builder.getBundleId();
@@ -115,7 +115,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
@Override
public SubscriptionState getState() {
return (getPreviousTransition() == null) ? null
- : getPreviousTransition().getNextState();
+ : getPreviousTransition().getNextState();
}
@Override
@@ -125,32 +125,32 @@ public class SubscriptionData extends EntityBase implements Subscription {
}
final SubscriptionTransitionData initialTransition = transitions.get(0);
switch (initialTransition.getApiEventType()) {
- case MIGRATE_BILLING:
- case MIGRATE_ENTITLEMENT:
- return SubscriptionSourceType.MIGRATED;
- case TRANSFER:
- return SubscriptionSourceType.TRANSFERED;
- default:
- return SubscriptionSourceType.NATIVE;
+ case MIGRATE_BILLING:
+ case MIGRATE_ENTITLEMENT:
+ return SubscriptionSourceType.MIGRATED;
+ case TRANSFER:
+ return SubscriptionSourceType.TRANSFERED;
+ default:
+ return SubscriptionSourceType.NATIVE;
}
}
@Override
public PlanPhase getCurrentPhase() {
return (getPreviousTransitionData() == null) ? null
- : getPreviousTransitionData().getNextPhase();
+ : getPreviousTransitionData().getNextPhase();
}
@Override
public Plan getCurrentPlan() {
return (getPreviousTransitionData() == null) ? null
- : getPreviousTransitionData().getNextPlan();
+ : getPreviousTransitionData().getNextPlan();
}
@Override
public PriceList getCurrentPriceList() {
return (getPreviousTransitionData() == null) ? null :
- getPreviousTransitionData().getNextPriceList();
+ getPreviousTransitionData().getNextPriceList();
}
@@ -180,7 +180,6 @@ public class SubscriptionData extends EntityBase implements Subscription {
return null;
}
-
@Override
public boolean cancel(final DateTime requestedDate, final CallContext context) throws EntitlementUserApiException {
return apiService.cancel(this, requestedDate, context);
@@ -193,25 +192,25 @@ public class SubscriptionData extends EntityBase implements Subscription {
@Override
public boolean uncancel(final CallContext context)
- throws EntitlementUserApiException {
+ throws EntitlementUserApiException {
return apiService.uncancel(this, context);
}
@Override
public boolean changePlan(final String productName, final BillingPeriod term, final String priceList,
- final DateTime requestedDate, final CallContext context) throws EntitlementUserApiException {
+ final DateTime requestedDate, final CallContext context) throws EntitlementUserApiException {
return apiService.changePlan(this, productName, term, priceList, requestedDate, context);
}
@Override
public boolean changePlanWithPolicy(final String productName, final BillingPeriod term, final String priceList,
- final DateTime requestedDate, final ActionPolicy policy, final CallContext context) throws EntitlementUserApiException {
+ final DateTime requestedDate, final ActionPolicy policy, final CallContext context) throws EntitlementUserApiException {
return apiService.changePlanWithPolicy(this, productName, term, priceList, requestedDate, policy, context);
}
@Override
public boolean recreate(final PlanPhaseSpecifier spec, final DateTime requestedDate,
- final CallContext context) throws EntitlementUserApiException {
+ final CallContext context) throws EntitlementUserApiException {
return apiService.recreatePlan(this, spec, requestedDate, context);
}
@@ -322,7 +321,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
final int prime = 31;
int result = 1;
result = prime * result
- + ((id == null) ? 0 : id.hashCode());
+ + ((id == null) ? 0 : id.hashCode());
return result;
}
@@ -381,7 +380,6 @@ public class SubscriptionData extends EntityBase implements Subscription {
return alignStartDate;
}
-
public long getLastEventOrderedId() {
final SubscriptionTransitionDataIterator it = new SubscriptionTransitionDataIterator(
clock, transitions, Order.DESC_FROM_FUTURE, Kind.ENTITLEMENT,
@@ -414,19 +412,19 @@ public class SubscriptionData extends EntityBase implements Subscription {
}
final SubscriptionTransitionDataIterator it = new SubscriptionTransitionDataIterator(clock,
- transitions,
- Order.DESC_FROM_FUTURE,
- Kind.ENTITLEMENT,
- Visibility.ALL,
- TimeLimit.PAST_OR_PRESENT_ONLY);
+ transitions,
+ Order.DESC_FROM_FUTURE,
+ Kind.ENTITLEMENT,
+ Visibility.ALL,
+ TimeLimit.PAST_OR_PRESENT_ONLY);
while (it.hasNext()) {
final SubscriptionTransitionData cur = it.next();
if (cur.getTransitionType() == SubscriptionTransitionType.CREATE
- || cur.getTransitionType() == SubscriptionTransitionType.RE_CREATE
- || cur.getTransitionType() == SubscriptionTransitionType.TRANSFER
- || cur.getTransitionType() == SubscriptionTransitionType.CHANGE
- || cur.getTransitionType() == SubscriptionTransitionType.MIGRATE_ENTITLEMENT) {
+ || cur.getTransitionType() == SubscriptionTransitionType.RE_CREATE
+ || cur.getTransitionType() == SubscriptionTransitionType.TRANSFER
+ || cur.getTransitionType() == SubscriptionTransitionType.CHANGE
+ || cur.getTransitionType() == SubscriptionTransitionType.MIGRATE_ENTITLEMENT) {
return cur;
}
}
@@ -434,13 +432,12 @@ public class SubscriptionData extends EntityBase implements Subscription {
throw new EntitlementError(String.format("Failed to find InitialTransitionForCurrentPlan id = %s", getId()));
}
-
public boolean isSubscriptionFutureCancelled() {
return getFutureEndDate() != null;
}
public DateTime getPlanChangeEffectiveDate(final ActionPolicy policy,
- final DateTime requestedDate) {
+ final DateTime requestedDate) {
if (policy == ActionPolicy.IMMEDIATE) {
return requestedDate;
@@ -454,7 +451,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
return requestedDate;
} else {
return chargedThroughDate.isBefore(requestedDate) ? requestedDate
- : chargedThroughDate;
+ : chargedThroughDate;
}
}
@@ -471,11 +468,11 @@ public class SubscriptionData extends EntityBase implements Subscription {
final SubscriptionTransitionData cur = it.next();
if (cur.getTransitionType() == SubscriptionTransitionType.PHASE
- || cur.getTransitionType() == SubscriptionTransitionType.TRANSFER
- || cur.getTransitionType() == SubscriptionTransitionType.CREATE
- || cur.getTransitionType() == SubscriptionTransitionType.RE_CREATE
- || cur.getTransitionType() == SubscriptionTransitionType.CHANGE
- || cur.getTransitionType() == SubscriptionTransitionType.MIGRATE_ENTITLEMENT) {
+ || cur.getTransitionType() == SubscriptionTransitionType.TRANSFER
+ || cur.getTransitionType() == SubscriptionTransitionType.CREATE
+ || cur.getTransitionType() == SubscriptionTransitionType.RE_CREATE
+ || cur.getTransitionType() == SubscriptionTransitionType.CHANGE
+ || cur.getTransitionType() == SubscriptionTransitionType.MIGRATE_ENTITLEMENT) {
return cur.getEffectiveTransitionTime();
}
}
@@ -484,7 +481,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
}
public void rebuildTransitions(final List<EntitlementEvent> inputEvents,
- final Catalog catalog) {
+ final Catalog catalog) {
if (inputEvents == null) {
return;
@@ -515,53 +512,53 @@ public class SubscriptionData extends EntityBase implements Subscription {
switch (cur.getType()) {
- case PHASE:
- final PhaseEvent phaseEV = (PhaseEvent) cur;
- nextPhaseName = phaseEV.getPhase();
- break;
-
- case API_USER:
- final ApiEvent userEV = (ApiEvent) cur;
- apiEventType = userEV.getEventType();
- isFromDisk = userEV.isFromDisk();
- nextUserToken = userEV.getUserToken();
-
- switch (apiEventType) {
- case TRANSFER:
- case MIGRATE_BILLING:
- case MIGRATE_ENTITLEMENT:
- case CREATE:
- case RE_CREATE:
- previousState = null;
- previousPlan = null;
- previousPhase = null;
- previousPriceList = null;
- nextState = SubscriptionState.ACTIVE;
- nextPlanName = userEV.getEventPlan();
- nextPhaseName = userEV.getEventPlanPhase();
- nextPriceListName = userEV.getPriceList();
+ case PHASE:
+ final PhaseEvent phaseEV = (PhaseEvent) cur;
+ nextPhaseName = phaseEV.getPhase();
break;
- case CHANGE:
- nextPlanName = userEV.getEventPlan();
- nextPhaseName = userEV.getEventPlanPhase();
- nextPriceListName = userEV.getPriceList();
- break;
- case CANCEL:
- nextState = SubscriptionState.CANCELLED;
- nextPlanName = null;
- nextPhaseName = null;
- break;
- case UNCANCEL:
+
+ case API_USER:
+ final ApiEvent userEV = (ApiEvent) cur;
+ apiEventType = userEV.getEventType();
+ isFromDisk = userEV.isFromDisk();
+ nextUserToken = userEV.getUserToken();
+
+ switch (apiEventType) {
+ case TRANSFER:
+ case MIGRATE_BILLING:
+ case MIGRATE_ENTITLEMENT:
+ case CREATE:
+ case RE_CREATE:
+ previousState = null;
+ previousPlan = null;
+ previousPhase = null;
+ previousPriceList = null;
+ nextState = SubscriptionState.ACTIVE;
+ nextPlanName = userEV.getEventPlan();
+ nextPhaseName = userEV.getEventPlanPhase();
+ nextPriceListName = userEV.getPriceList();
+ break;
+ case CHANGE:
+ nextPlanName = userEV.getEventPlan();
+ nextPhaseName = userEV.getEventPlanPhase();
+ nextPriceListName = userEV.getPriceList();
+ break;
+ case CANCEL:
+ nextState = SubscriptionState.CANCELLED;
+ nextPlanName = null;
+ nextPhaseName = null;
+ break;
+ case UNCANCEL:
+ break;
+ default:
+ throw new EntitlementError(String.format(
+ "Unexpected UserEvent type = %s", userEV
+ .getEventType().toString()));
+ }
break;
default:
throw new EntitlementError(String.format(
- "Unexpected UserEvent type = %s", userEV
- .getEventType().toString()));
- }
- break;
- default:
- throw new EntitlementError(String.format(
- "Unexpected Event type = %s", cur.getType()));
+ "Unexpected Event type = %s", cur.getType()));
}
Plan nextPlan = null;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.java
index 18a4d6f..9fff155 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.java
@@ -142,6 +142,7 @@ public interface EntitlementEventSqlDao extends Transactional<EntitlementEventSq
final EventType eventType = EventType.valueOf(r.getString("event_type"));
final ApiEventType userType = (eventType == EventType.API_USER) ? ApiEventType.valueOf(r.getString("user_type")) : null;
final DateTime createdDate = getDateTime(r, "created_date");
+ final DateTime updatedDate = getDateTime(r, "updated_date");
final DateTime requestedDate = getDateTime(r, "requested_date");
final DateTime effectiveDate = getDateTime(r, "effective_date");
final UUID subscriptionId = UUID.fromString(r.getString("subscription_id"));
@@ -158,6 +159,8 @@ public interface EntitlementEventSqlDao extends Transactional<EntitlementEventSq
.setTotalOrdering(totalOrdering)
.setUuid(id)
.setSubscriptionId(subscriptionId)
+ .setCreatedDate(createdDate)
+ .setUpdatedDate(updatedDate)
.setRequestedDate(requestedDate)
.setEffectiveDate(effectiveDate)
.setProcessedDate(createdDate)
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.java
index fec77f7..9a7dc3f 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.java
@@ -98,7 +98,6 @@ public interface SubscriptionSqlDao extends Transactional<SubscriptionSqlDao>, A
@Override
public SubscriptionData map(final int arg0, final ResultSet r, final StatementContext ctx)
throws SQLException {
-
final UUID id = UUID.fromString(r.getString("id"));
final UUID bundleId = UUID.fromString(r.getString("bundle_id"));
final ProductCategory category = ProductCategory.valueOf(r.getString("category"));
@@ -107,11 +106,14 @@ public interface SubscriptionSqlDao extends Transactional<SubscriptionSqlDao>, A
final DateTime ctd = getDateTime(r, "charged_through_date");
final DateTime ptd = getDateTime(r, "paid_through_date");
final long activeVersion = r.getLong("active_version");
-
+ final DateTime createdDate = getDateTime(r, "created_date");
+ final DateTime updatedDate = getDateTime(r, "updated_date");
return new SubscriptionData(new SubscriptionBuilder()
.setId(id)
.setBundleId(bundleId)
.setCategory(category)
+ .setCreatedDate(createdDate)
+ .setUpdatedDate(updatedDate)
.setBundleStartDate(bundleStartDate)
.setAlignStartDate(startDate)
.setActiveVersion(activeVersion)
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java
index 92b4526..3ae3285 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java
@@ -23,9 +23,12 @@ import org.joda.time.DateTime;
import com.ning.billing.entitlement.events.user.ApiEvent;
public abstract class EventBase implements EntitlementEvent {
+
private final long totalOrdering;
private final UUID uuid;
private final UUID subscriptionId;
+ private final DateTime createdDate;
+ private final DateTime updatedDate;
private final DateTime requestedDate;
private final DateTime effectiveDate;
private final DateTime processedDate;
@@ -37,6 +40,8 @@ public abstract class EventBase implements EntitlementEvent {
this.totalOrdering = builder.getTotalOrdering();
this.uuid = builder.getUuid();
this.subscriptionId = builder.getSubscriptionId();
+ this.createdDate = builder.getCreatedDate();
+ this.updatedDate = builder.getUpdatedDate();
this.requestedDate = builder.getRequestedDate();
this.effectiveDate = builder.getEffectiveDate();
this.processedDate = builder.getProcessedDate();
@@ -75,6 +80,16 @@ public abstract class EventBase implements EntitlementEvent {
}
@Override
+ public DateTime getCreatedDate() {
+ return createdDate;
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return updatedDate;
+ }
+
+ @Override
public long getActiveVersion() {
return activeVersion;
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java
index 7d9bb13..086a59d 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java
@@ -26,6 +26,8 @@ public class EventBaseBuilder<T extends EventBaseBuilder<T>> {
private long totalOrdering;
private UUID uuid;
private UUID subscriptionId;
+ private DateTime createdDate;
+ private DateTime updatedDate;
private DateTime requestedDate;
private DateTime effectiveDate;
private DateTime processedDate;
@@ -33,7 +35,6 @@ public class EventBaseBuilder<T extends EventBaseBuilder<T>> {
private long activeVersion;
private boolean isActive;
-
public EventBaseBuilder() {
this.uuid = UUID.randomUUID();
this.isActive = true;
@@ -61,6 +62,16 @@ public class EventBaseBuilder<T extends EventBaseBuilder<T>> {
return (T) this;
}
+ public T setCreatedDate(final DateTime createdDate) {
+ this.createdDate = createdDate;
+ return (T) this;
+ }
+
+ public T setUpdatedDate(final DateTime updatedDate) {
+ this.updatedDate = updatedDate;
+ return (T) this;
+ }
+
public T setSubscriptionId(final UUID subscriptionId) {
this.subscriptionId = subscriptionId;
return (T) this;
@@ -99,6 +110,14 @@ public class EventBaseBuilder<T extends EventBaseBuilder<T>> {
return uuid;
}
+ public DateTime getCreatedDate() {
+ return createdDate;
+ }
+
+ public DateTime getUpdatedDate() {
+ return updatedDate;
+ }
+
public UUID getSubscriptionId() {
return subscriptionId;
}
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg
index 17e9c89..e74145a 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg
@@ -46,7 +46,9 @@ getSubscriptionFromId() ::= <<
, bundle_start_date
, active_version
, charged_through_date
- , paid_through_date
+ , paid_through_date
+ , created_date
+ , updated_date
from subscriptions
where id = :id
<AND_CHECK_TENANT()>
@@ -62,7 +64,9 @@ getSubscriptionsFromBundleId() ::= <<
, bundle_start_date
, active_version
, charged_through_date
- , paid_through_date
+ , paid_through_date
+ , created_date
+ , updated_date
from subscriptions
where bundle_id = :bundleId
<AND_CHECK_TENANT()>
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
index bc9a07a..49facb4 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
@@ -72,7 +72,7 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
private final Bus eventBus;
@Inject
- public DefaultInvoiceUserApi(final InvoiceDao dao, final InvoiceDispatcher dispatcher, final AccountInternalApi accountUserApi, final Bus eventBus,
+ public DefaultInvoiceUserApi(final InvoiceDao dao, final InvoiceDispatcher dispatcher, final AccountInternalApi accountUserApi, final Bus eventBus,
final TagInternalApi tagApi, final HtmlInvoiceGenerator generator, final InternalCallContextFactory internalCallContextFactory) {
this.dao = dao;
this.dispatcher = dispatcher;
@@ -218,7 +218,7 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
throw new InvoiceApiException(ErrorCode.INVOICE_NO_SUCH_CREDIT, creditId);
}
- return new CreditAdjInvoiceItem(creditItem.getId(), creditItem.getInvoiceId(), creditItem.getAccountId(),
+ return new CreditAdjInvoiceItem(creditItem.getId(), creditItem.getCreatedDate(), creditItem.getInvoiceId(), creditItem.getAccountId(),
creditItem.getStartDate(), creditItem.getAmount().negate(), creditItem.getCurrency());
}
@@ -267,7 +267,7 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
throw new InvoiceApiException(ErrorCode.INVOICE_NOT_FOUND, invoiceId);
}
- final InternalTenantContext internalContext = internalCallContextFactory.createInternalTenantContext(context);
+ final InternalTenantContext internalContext = internalCallContextFactory.createInternalTenantContext(context);
final Account account = accountUserApi.getAccountById(invoice.getAccountId(), internalContext);
// Check if this account has the MANUAL_PAY system tag
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java
index bb62a38..ce7799f 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java
@@ -27,6 +27,7 @@ import java.sql.SQLException;
import java.util.List;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.skife.jdbi.v2.SQLStatement;
import org.skife.jdbi.v2.StatementContext;
@@ -137,32 +138,33 @@ public interface InvoiceItemSqlDao extends EntitySqlDao<InvoiceItem> {
final BigDecimal rate = result.getBigDecimal("rate");
final Currency currency = Currency.valueOf(result.getString("currency"));
final UUID linkedItemId = getUUID(result, "linked_item_id");
+ final DateTime createdDate = getDateTime(result, "created_date");
final InvoiceItem item;
switch (type) {
case EXTERNAL_CHARGE:
- item = new ExternalChargeInvoiceItem(id, invoiceId, accountId, bundleId, planName, startDate, amount, currency);
+ item = new ExternalChargeInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, planName, startDate, amount, currency);
break;
case FIXED:
- item = new FixedPriceInvoiceItem(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, amount, currency);
+ item = new FixedPriceInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, amount, currency);
break;
case RECURRING:
- item = new RecurringInvoiceItem(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency);
+ item = new RecurringInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency);
break;
case CBA_ADJ:
- item = new CreditBalanceAdjInvoiceItem(id, invoiceId, accountId, startDate, linkedItemId, amount, currency);
+ item = new CreditBalanceAdjInvoiceItem(id, createdDate, invoiceId, accountId, startDate, linkedItemId, amount, currency);
break;
case CREDIT_ADJ:
- item = new CreditAdjInvoiceItem(id, invoiceId, accountId, startDate, amount, currency);
+ item = new CreditAdjInvoiceItem(id, createdDate, invoiceId, accountId, startDate, amount, currency);
break;
case REFUND_ADJ:
- item = new RefundAdjInvoiceItem(id, invoiceId, accountId, startDate, amount, currency);
+ item = new RefundAdjInvoiceItem(id, createdDate, invoiceId, accountId, startDate, amount, currency);
break;
case REPAIR_ADJ:
- item = new RepairAdjInvoiceItem(id, invoiceId, accountId, startDate, endDate, amount, currency, linkedItemId);
+ item = new RepairAdjInvoiceItem(id, createdDate, invoiceId, accountId, startDate, endDate, amount, currency, linkedItemId);
break;
case ITEM_ADJ:
- item = new ItemAdjInvoiceItem(id, invoiceId, accountId, startDate, amount, currency, linkedItemId);
+ item = new ItemAdjInvoiceItem(id, createdDate, invoiceId, accountId, startDate, amount, currency, linkedItemId);
break;
default:
throw new RuntimeException("Unexpected type of event item " + type);
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java
index f387ec8..0a1c533 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java
@@ -128,8 +128,9 @@ public interface InvoicePaymentSqlDao extends EntitySqlDao<InvoicePayment>, Tran
final Currency currency = (currencyString == null) ? null : Currency.valueOf(currencyString);
final UUID paymentCookieId = getUUID(result, "payment_cookie_id");
final UUID linkedInvoicePaymentId = getUUID(result, "linked_invoice_payment_id");
+ final DateTime createdDate = getDateTime(result, "created_date");
- return new DefaultInvoicePayment(id, type, paymentId, invoiceId, paymentDate,
+ return new DefaultInvoicePayment(id, createdDate, type, paymentId, invoiceId, paymentDate,
amount, currency, paymentCookieId, linkedInvoicePaymentId);
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
index 138608e..6358101 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
@@ -27,6 +27,7 @@ import java.util.Date;
import java.util.List;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.skife.jdbi.v2.SQLStatement;
import org.skife.jdbi.v2.StatementContext;
@@ -120,8 +121,9 @@ public interface InvoiceSqlDao extends EntitySqlDao<Invoice>, AuditSqlDao, Trans
final LocalDate targetDate = getDate(result, "target_date");
final Currency currency = Currency.valueOf(result.getString("currency"));
final boolean isMigrationInvoice = result.getBoolean("migrated");
+ final DateTime createdDate = getDateTime(result, "created_date");
- return new DefaultInvoice(id, accountId, invoiceNumber, invoiceDate, targetDate, currency, isMigrationInvoice);
+ return new DefaultInvoice(id, createdDate, accountId, invoiceNumber, invoiceDate, targetDate, currency, isMigrationInvoice);
}
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/AdjInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/AdjInvoiceItem.java
index 7a4f9b1..c191bca 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/AdjInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/AdjInvoiceItem.java
@@ -19,6 +19,8 @@ package com.ning.billing.invoice.model;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
@@ -27,20 +29,15 @@ import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoiceItemType;
public abstract class AdjInvoiceItem extends InvoiceItemBase {
- public AdjInvoiceItem(final UUID invoiceId, final UUID accountId, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency) {
- this(UUID.randomUUID(), invoiceId, accountId, startDate, endDate, amount, currency);
- }
-
- public AdjInvoiceItem(final UUID invoiceId, final UUID accountId, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, final UUID reversingId) {
- this(UUID.randomUUID(), invoiceId, accountId, startDate, endDate, amount, currency, reversingId);
- }
- public AdjInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency) {
- super(id, invoiceId, accountId, null, null, null, null, startDate, endDate, amount, currency);
+ public AdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId,
+ final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency) {
+ this(id, createdDate, invoiceId, accountId, startDate, endDate, amount, currency, null);
}
- public AdjInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, final UUID reversingId) {
- super(id, invoiceId, accountId, null, null, null, null, startDate, endDate, amount, currency, reversingId);
+ public AdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId,
+ final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, @Nullable final UUID reversingId) {
+ super(id, createdDate, invoiceId, accountId, null, null, null, null, startDate, endDate, amount, currency, reversingId);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/CreditAdjInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/CreditAdjInvoiceItem.java
index 3b43340..cc64bc4 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/CreditAdjInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/CreditAdjInvoiceItem.java
@@ -19,6 +19,9 @@ package com.ning.billing.invoice.model;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import com.ning.billing.catalog.api.Currency;
@@ -28,12 +31,12 @@ public class CreditAdjInvoiceItem extends AdjInvoiceItem {
public CreditAdjInvoiceItem(final UUID invoiceId, final UUID accountId, final LocalDate date,
final BigDecimal amount, final Currency currency) {
- super(invoiceId, accountId, date, date, amount, currency);
+ this(UUID.randomUUID(), null, invoiceId, accountId, date, amount, currency);
}
- public CreditAdjInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final LocalDate date,
+ public CreditAdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final LocalDate date,
final BigDecimal amount, final Currency currency) {
- super(id, invoiceId, accountId, date, date, amount, currency);
+ super(id, createdDate, invoiceId, accountId, date, date, amount, currency);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/CreditBalanceAdjInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/CreditBalanceAdjInvoiceItem.java
index 588a650..e8db0c7 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/CreditBalanceAdjInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/CreditBalanceAdjInvoiceItem.java
@@ -19,6 +19,9 @@ package com.ning.billing.invoice.model;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import com.ning.billing.catalog.api.Currency;
@@ -28,18 +31,18 @@ public class CreditBalanceAdjInvoiceItem extends AdjInvoiceItem {
public CreditBalanceAdjInvoiceItem(final UUID invoiceId, final UUID accountId,
final LocalDate date, final BigDecimal amount, final Currency currency) {
- super(invoiceId, accountId, date, date, amount, currency);
+ this(UUID.randomUUID(), null, invoiceId, accountId, date, null, amount, currency);
}
- public CreditBalanceAdjInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId,
- final LocalDate date, final UUID linkedInvoiceItemId,
+ public CreditBalanceAdjInvoiceItem(final UUID invoiceId, final UUID accountId, final LocalDate date, @Nullable final UUID linkedInvoiceItemId,
final BigDecimal amount, final Currency currency) {
- super(id, invoiceId, accountId, date, date, amount, currency, linkedInvoiceItemId);
+ this(UUID.randomUUID(), null, invoiceId, accountId, date, linkedInvoiceItemId, amount, currency);
}
- public CreditBalanceAdjInvoiceItem(final UUID invoiceId, final UUID accountId, final LocalDate date, final UUID linkedInvoiceItemId,
+ public CreditBalanceAdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId,
+ final LocalDate date, final UUID linkedInvoiceItemId,
final BigDecimal amount, final Currency currency) {
- super(invoiceId, accountId, date, date, amount, currency, linkedInvoiceItemId);
+ super(id, createdDate, invoiceId, accountId, date, date, amount, currency, linkedInvoiceItemId);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
index 9c04617..8231cf3 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
@@ -33,6 +33,7 @@ import com.ning.billing.invoice.api.InvoicePayment;
import com.ning.billing.util.entity.EntityBase;
public class DefaultInvoice extends EntityBase implements Invoice {
+
private final InvoiceItemList invoiceItems = new InvoiceItemList();
private final List<InvoicePayment> payments = new ArrayList<InvoicePayment>();
private final UUID accountId;
@@ -47,10 +48,16 @@ public class DefaultInvoice extends EntityBase implements Invoice {
this(UUID.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false);
}
- // Used to hydrate invoice from persistence layer
public DefaultInvoice(final UUID invoiceId, final UUID accountId, @Nullable final Integer invoiceNumber, final LocalDate invoiceDate,
final LocalDate targetDate, final Currency currency, final boolean isMigrationInvoice) {
- super(invoiceId);
+ this(invoiceId, null, accountId, invoiceNumber, invoiceDate, targetDate, currency, isMigrationInvoice);
+ }
+
+ // Used to hydrate invoice from persistence layer
+ public DefaultInvoice(final UUID invoiceId, @Nullable final DateTime createdDate, final UUID accountId,
+ @Nullable final Integer invoiceNumber, final LocalDate invoiceDate,
+ final LocalDate targetDate, final Currency currency, final boolean isMigrationInvoice) {
+ super(invoiceId, createdDate, createdDate);
this.accountId = accountId;
this.invoiceNumber = invoiceNumber;
this.invoiceDate = invoiceDate;
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java
index abd96b3..2805276 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java
@@ -16,10 +16,11 @@
package com.ning.billing.invoice.model;
-import javax.annotation.Nullable;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.ning.billing.catalog.api.Currency;
@@ -27,6 +28,7 @@ import com.ning.billing.invoice.api.InvoicePayment;
import com.ning.billing.util.entity.EntityBase;
public class DefaultInvoicePayment extends EntityBase implements InvoicePayment {
+
private final UUID paymentId;
private final InvoicePaymentType type;
private final UUID invoiceId;
@@ -38,13 +40,19 @@ public class DefaultInvoicePayment extends EntityBase implements InvoicePayment
public DefaultInvoicePayment(final InvoicePaymentType type, final UUID paymentId, final UUID invoiceId, final DateTime paymentDate,
final BigDecimal amount, final Currency currency) {
- this(UUID.randomUUID(), type, paymentId, invoiceId, paymentDate, amount, currency, null, null);
+ this(UUID.randomUUID(), null, type, paymentId, invoiceId, paymentDate, amount, currency, null, null);
}
public DefaultInvoicePayment(final UUID id, final InvoicePaymentType type, final UUID paymentId, final UUID invoiceId, final DateTime paymentDate,
@Nullable final BigDecimal amount, @Nullable final Currency currency, @Nullable final UUID paymentCookieId,
@Nullable final UUID linkedInvoicePaymentId) {
- super(id);
+ this(id, null, type, paymentId, invoiceId, paymentDate, amount, currency, paymentCookieId, linkedInvoicePaymentId);
+ }
+
+ public DefaultInvoicePayment(final UUID id, @Nullable final DateTime createdDate, final InvoicePaymentType type, final UUID paymentId, final UUID invoiceId, final DateTime paymentDate,
+ @Nullable final BigDecimal amount, @Nullable final Currency currency, @Nullable final UUID paymentCookieId,
+ @Nullable final UUID linkedInvoicePaymentId) {
+ super(id, createdDate, createdDate);
this.type = type;
this.paymentId = paymentId;
this.amount = amount;
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/ExternalChargeInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/ExternalChargeInvoiceItem.java
index 44c915e..f46c29d 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/ExternalChargeInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/ExternalChargeInvoiceItem.java
@@ -21,6 +21,7 @@ import java.util.UUID;
import javax.annotation.Nullable;
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import com.ning.billing.catalog.api.Currency;
@@ -31,12 +32,17 @@ public class ExternalChargeInvoiceItem extends InvoiceItemBase {
public ExternalChargeInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final String description,
final LocalDate date, final BigDecimal amount, final Currency currency) {
- super(invoiceId, accountId, bundleId, null, description, null, date, null, amount, currency);
+ this(UUID.randomUUID(), invoiceId, accountId, bundleId, description, date, amount, currency);
}
public ExternalChargeInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final String description, final LocalDate date, final BigDecimal amount, final Currency currency) {
- super(id, invoiceId, accountId, bundleId, (UUID) null, description, null, date, null, amount, currency);
+ this(id, null, invoiceId, accountId, bundleId, description, date, amount, currency);
+ }
+
+ public ExternalChargeInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ @Nullable final String description, final LocalDate date, final BigDecimal amount, final Currency currency) {
+ super(id, createdDate, invoiceId, accountId, bundleId, (UUID) null, description, null, date, null, amount, currency);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
index d169d78..d99a84b 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
@@ -21,6 +21,7 @@ import java.util.UUID;
import javax.annotation.Nullable;
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import com.ning.billing.catalog.api.Currency;
@@ -29,14 +30,16 @@ import com.ning.billing.invoice.api.InvoiceItemType;
public class FixedPriceInvoiceItem extends InvoiceItemBase {
- public FixedPriceInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final UUID subscriptionId, final String planName, final String phaseName,
+ public FixedPriceInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final UUID subscriptionId,
+ final String planName, final String phaseName,
final LocalDate date, final BigDecimal amount, final Currency currency) {
- super(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, date, null, amount, currency);
+ this(UUID.randomUUID(), null, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, date, amount, currency);
}
- public FixedPriceInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId, final String planName, final String phaseName,
+ public FixedPriceInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID bundleId,
+ final UUID subscriptionId, final String planName, final String phaseName,
final LocalDate date, final BigDecimal amount, final Currency currency) {
- super(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, date, null, amount, currency);
+ super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, date, null, amount, currency);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
index a4264b6..f347a45 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
@@ -30,6 +30,7 @@ import com.ning.billing.invoice.api.InvoiceItemType;
import com.ning.billing.util.entity.EntityBase;
public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem {
+
/* Common to all items */
protected final UUID invoiceId;
protected final UUID accountId;
@@ -61,58 +62,34 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem
}
/*
- * CTOR without ID; called from generator when creating invoice item
- */
- // No rate and no reversing item
- public InvoiceItemBase(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId, final String planName, final String phaseName,
- final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency) {
- this(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, null, currency);
-
- }
-
- // With rate but no reversing item
- public InvoiceItemBase(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId, final String planName, final String phaseName,
- final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency) {
- this(UUID.randomUUID(), invoiceId, accountId, bundleId, subscriptionId, planName, phaseName,
- startDate, endDate, amount, rate, currency, null);
- }
-
- // With reversing item, no rate
- public InvoiceItemBase(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId, final String planName, final String phaseName,
- final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, final UUID reversedItemId) {
- this(UUID.randomUUID(), invoiceId, accountId, bundleId, subscriptionId, planName, phaseName,
- startDate, endDate, amount, null, currency, reversedItemId);
- }
-
- /*
* CTORs with ID; called from DAO when rehydrating
*/
// No rate and no reversing item
- public InvoiceItemBase(final UUID id, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String planName, @Nullable final String phaseName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency) {
- this(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, null, currency, null);
+ this(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, null, currency, null);
}
// With rate but no reversing item
- public InvoiceItemBase(final UUID id, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String planName, @Nullable final String phaseName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency) {
- this(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency, null);
+ this(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency, null);
}
// With reversing item, no rate
- public InvoiceItemBase(final UUID id, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String planName, @Nullable final String phaseName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, final UUID reversedItemId) {
- this(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, null, currency, reversedItemId);
+ this(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, null, currency, reversedItemId);
}
- private InvoiceItemBase(final UUID id, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ private InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String planName, @Nullable final String phaseName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency,
final UUID reversedItemId) {
- super(id);
+ super(id, createdDate, createdDate);
this.invoiceId = invoiceId;
this.accountId = accountId;
this.subscriptionId = subscriptionId;
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/ItemAdjInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/ItemAdjInvoiceItem.java
index 5392adf..c29fa84 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/ItemAdjInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/ItemAdjInvoiceItem.java
@@ -19,6 +19,9 @@ package com.ning.billing.invoice.model;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import com.ning.billing.catalog.api.Currency;
@@ -29,13 +32,18 @@ public class ItemAdjInvoiceItem extends AdjInvoiceItem {
public ItemAdjInvoiceItem(final InvoiceItem invoiceItem, final LocalDate effectiveDate,
final BigDecimal amount, final Currency currency) {
- super(invoiceItem.getInvoiceId(), invoiceItem.getAccountId(), effectiveDate, effectiveDate,
- amount, currency, invoiceItem.getId());
+ this(UUID.randomUUID(), invoiceItem.getInvoiceId(), invoiceItem.getAccountId(), effectiveDate,
+ amount, currency, invoiceItem.getId());
}
public ItemAdjInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final LocalDate startDate,
final BigDecimal amount, final Currency currency, final UUID linkedItemId) {
- super(id, invoiceId, accountId, startDate, startDate, amount, currency, linkedItemId);
+ this(id, null, invoiceId, accountId, startDate, amount, currency, linkedItemId);
+ }
+
+ public ItemAdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final LocalDate startDate,
+ final BigDecimal amount, final Currency currency, final UUID linkedItemId) {
+ super(id, createdDate, invoiceId, accountId, startDate, startDate, amount, currency, linkedItemId);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItem.java
index c3f4afa..a9beddf 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItem.java
@@ -19,33 +19,27 @@ package com.ning.billing.invoice.model;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoiceItemType;
public class RecurringInvoiceItem extends InvoiceItemBase {
- private final DateTimeFormatter dateTimeFormatter = DateTimeFormat.mediumDate();
public RecurringInvoiceItem(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId,
final String planName, final String phaseName, final LocalDate startDate, final LocalDate endDate,
final BigDecimal amount, final BigDecimal rate, final Currency currency) {
- super(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency);
- }
-
- public RecurringInvoiceItem(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId, final String planName, final String phaseName,
- final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate,
- final Currency currency, final UUID reversedItemId) {
- super(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency);
+ this(UUID.randomUUID(), null, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency);
}
- public RecurringInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId,
+ public RecurringInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId,
final String planName, final String phaseName, final LocalDate startDate, final LocalDate endDate,
final BigDecimal amount, final BigDecimal rate, final Currency currency) {
- super(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency);
+ super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount, rate, currency);
}
@Override
@@ -54,15 +48,6 @@ public class RecurringInvoiceItem extends InvoiceItemBase {
}
@Override
- public UUID getLinkedItemId() {
- return linkedItemId;
- }
-
- public boolean reversesItem() {
- return (linkedItemId != null);
- }
-
- @Override
public BigDecimal getRate() {
return rate;
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/RefundAdjInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/RefundAdjInvoiceItem.java
index 6ccef1e..fffcb94 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/RefundAdjInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/RefundAdjInvoiceItem.java
@@ -19,6 +19,9 @@ package com.ning.billing.invoice.model;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import com.ning.billing.catalog.api.Currency;
@@ -28,12 +31,12 @@ public class RefundAdjInvoiceItem extends AdjInvoiceItem {
public RefundAdjInvoiceItem(final UUID invoiceId, final UUID accountId, final LocalDate date,
final BigDecimal amount, final Currency currency) {
- super(invoiceId, accountId, date, date, amount, currency);
+ this(UUID.randomUUID(), null, invoiceId, accountId, date, amount, currency);
}
- public RefundAdjInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final LocalDate date,
+ public RefundAdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final LocalDate date,
final BigDecimal amount, final Currency currency) {
- super(id, invoiceId, accountId, date, date, amount, currency);
+ super(id, createdDate, invoiceId, accountId, date, date, amount, currency);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/RepairAdjInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/RepairAdjInvoiceItem.java
index 1b3155b..f99babc 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/RepairAdjInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/RepairAdjInvoiceItem.java
@@ -19,6 +19,9 @@ package com.ning.billing.invoice.model;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import com.ning.billing.catalog.api.Currency;
@@ -28,12 +31,12 @@ public class RepairAdjInvoiceItem extends AdjInvoiceItem {
public RepairAdjInvoiceItem(final UUID invoiceId, final UUID accountId, final LocalDate startDate, final LocalDate endDate,
final BigDecimal amount, final Currency currency, final UUID reversingId) {
- super(invoiceId, accountId, startDate, endDate, amount, currency, reversingId);
+ this(UUID.randomUUID(), null, invoiceId, accountId, startDate, endDate, amount, currency, reversingId);
}
- public RepairAdjInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final LocalDate startDate, final LocalDate endDate,
+ public RepairAdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final LocalDate startDate, final LocalDate endDate,
final BigDecimal amount, final Currency currency, final UUID reversingId) {
- super(id, invoiceId, accountId, startDate, endDate, amount, currency, reversingId);
+ super(id, createdDate, invoiceId, accountId, startDate, endDate, amount, currency, reversingId);
}
@Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
index 2eb05f7..7c22a77 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
@@ -39,6 +39,7 @@ import java.util.List;
import java.util.Locale;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
@@ -264,6 +265,16 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
return invoice.getId();
}
+ @Override
+ public DateTime getCreatedDate() {
+ return invoice.getCreatedDate();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return invoice.getUpdatedDate();
+ }
+
// Expose the fields for children classes. This is useful for further customization of the invoices
protected TranslatorConfig getConfig() {
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
index 9ea3a1f..ed99dcf 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
@@ -21,6 +21,7 @@ import java.text.NumberFormat;
import java.util.Locale;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormatter;
@@ -144,6 +145,16 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
}
@Override
+ public DateTime getCreatedDate() {
+ return item.getCreatedDate();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return item.getUpdatedDate();
+ }
+
+ @Override
public BigDecimal getRate() {
return round(BigDecimal.ZERO);
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/generator/TestDefaultInvoiceGeneratorUnit.java b/invoice/src/test/java/com/ning/billing/invoice/generator/TestDefaultInvoiceGeneratorUnit.java
index 8c7b0a8..ead2db7 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/generator/TestDefaultInvoiceGeneratorUnit.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/generator/TestDefaultInvoiceGeneratorUnit.java
@@ -21,7 +21,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
-import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -119,7 +118,7 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
final BigDecimal rate2 = new BigDecimal("14.85");
final BigDecimal amount2 = rate2;
final List<InvoiceItem> items = new LinkedList<InvoiceItem>();
- final InvoiceItem item1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency, null);
+ final InvoiceItem item1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency);
items.add(item1);
items.add(new RepairAdjInvoiceItem(invoiceId, accountId, startDate, endDate, amount1.negate(), currency, item1.getId()));
items.add(new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, endDate, nextEndDate, amount2, rate2, currency));
@@ -219,7 +218,7 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
existing.add(item1);
final List<InvoiceItem> proposed = new LinkedList<InvoiceItem>();
- final InvoiceItem other = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, endDate, nextEndDate, amount3, rate3, currency, null);
+ final InvoiceItem other = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, endDate, nextEndDate, amount3, rate3, currency);
proposed.add(item1);
proposed.add(other);
@@ -244,11 +243,11 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
final BigDecimal amount2 = rate2;
final List<InvoiceItem> existing = new LinkedList<InvoiceItem>();
- final InvoiceItem item1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency, null);
+ final InvoiceItem item1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency);
existing.add(item1);
final List<InvoiceItem> proposed = new LinkedList<InvoiceItem>();
- final InvoiceItem other = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, endDate, nextEndDate, amount2, rate2, currency, null);
+ final InvoiceItem other = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, endDate, nextEndDate, amount2, rate2, currency);
proposed.add(item1);
proposed.add(other);
@@ -275,11 +274,11 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
final UUID firstInvoiceId = UUID.randomUUID();
final List<InvoiceItem> existing = new LinkedList<InvoiceItem>();
- final InvoiceItem item1 = new RecurringInvoiceItem(firstInvoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency, null);
+ final InvoiceItem item1 = new RecurringInvoiceItem(firstInvoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency);
existing.add(item1);
final List<InvoiceItem> proposed = new LinkedList<InvoiceItem>();
- final InvoiceItem other = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, endDate, nextEndDate, amount2, rate2, currency, null);
+ final InvoiceItem other = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, endDate, nextEndDate, amount2, rate2, currency);
proposed.add(other);
gen.addRepairedItems(existing, proposed);
@@ -308,7 +307,7 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
final BigDecimal amount1 = rate1;
final List<InvoiceItem> existing = new LinkedList<InvoiceItem>();
- final InvoiceItem item1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency, null);
+ final InvoiceItem item1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency);
existing.add(item1);
final UUID existingInvoiceId = UUID.randomUUID();
@@ -323,7 +322,7 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
final List<InvoiceItem> proposed = new LinkedList<InvoiceItem>();
final InvoiceItem reversedItem1 = new RepairAdjInvoiceItem(existingInvoiceId, accountId, startDate, nextEndDate, item1.getAmount().negate(), currency, item1.getId());
- final InvoiceItem newItem1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount2, rate2, currency, null);
+ final InvoiceItem newItem1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount2, rate2, currency);
proposed.add(reversedItem1);
proposed.add(newItem1);
@@ -372,9 +371,9 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
final List<InvoiceItem> existing = new LinkedList<InvoiceItem>();
final BigDecimal pcba1 = new BigDecimal("10.00");
- final InvoiceItem item1 = new RecurringInvoiceItem(firstInvoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency, null);
+ final InvoiceItem item1 = new RecurringInvoiceItem(firstInvoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount1, rate1, currency);
final InvoiceItem reversedItem1 = new RepairAdjInvoiceItem(firstInvoiceId, accountId, startDate, nextEndDate, amount1.negate(), currency, item1.getId());
- final InvoiceItem newItem1 = new RecurringInvoiceItem(firstInvoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount2, rate2, currency, null);
+ final InvoiceItem newItem1 = new RecurringInvoiceItem(firstInvoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate, endDate, amount2, rate2, currency);
final InvoiceItem cba1 = new CreditBalanceAdjInvoiceItem(firstInvoiceId, accountId, startDate, pcba1, currency);
existing.add(item1);
existing.add(reversedItem1);
@@ -385,7 +384,7 @@ public class TestDefaultInvoiceGeneratorUnit extends InvoicingTestBase {
final BigDecimal newAmount2 = newRate2;
final List<InvoiceItem> proposed = new LinkedList<InvoiceItem>();
- final InvoiceItem item2 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate.plusMonths(1), endDate.plusMonths(1), newAmount2, newRate2, currency, null);
+ final InvoiceItem item2 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, startDate.plusMonths(1), endDate.plusMonths(1), newAmount2, newRate2, currency);
proposed.add(item2);
gen.consumeExistingCredit(invoiceId, firstInvoiceId, existing, proposed, currency);
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountEmailJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountEmailJson.java
index 9a0d074..3efaf7f 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountEmailJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountEmailJson.java
@@ -18,11 +18,15 @@ package com.ning.billing.jaxrs.json;
import java.util.UUID;
+import org.joda.time.DateTime;
+
+import com.ning.billing.account.api.AccountEmail;
+
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.ning.billing.account.api.AccountEmail;
public class AccountEmailJson {
+
private final String accountId;
private final String email;
@@ -58,6 +62,16 @@ public class AccountEmailJson {
public UUID getId() {
return accountEmailId;
}
+
+ @Override
+ public DateTime getCreatedDate() {
+ return null;
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return null;
+ }
};
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentMethodJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentMethodJson.java
index 9fa91e0..844941b 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentMethodJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentMethodJson.java
@@ -20,15 +20,18 @@ import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Function;
-import com.google.common.collect.Collections2;
+import org.joda.time.DateTime;
+
import com.ning.billing.account.api.Account;
import com.ning.billing.payment.api.PaymentMethod;
import com.ning.billing.payment.api.PaymentMethodPlugin;
import com.ning.billing.payment.api.PaymentMethodPlugin.PaymentMethodKVInfo;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
+
public class PaymentMethodJson {
private final String paymentMethodId;
@@ -88,6 +91,16 @@ public class PaymentMethodJson {
}
@Override
+ public DateTime getCreatedDate() {
+ return null;
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return null;
+ }
+
+ @Override
public UUID getAccountId() {
return accountId != null ? UUID.fromString(accountId) : null;
}
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccount.java b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccount.java
index dcd1ddb..34add5d 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccount.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccount.java
@@ -18,6 +18,7 @@ package com.ning.billing.junction.plumbing.api;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import com.ning.billing.account.api.Account;
@@ -29,6 +30,7 @@ import com.ning.billing.util.callcontext.InternalTenantContext;
import com.ning.billing.util.svcapi.junction.BlockingApi;
public class BlockingAccount implements Account {
+
private final Account account;
private final InternalTenantContext context;
private BlockingState blockingState = null;
@@ -46,6 +48,16 @@ public class BlockingAccount implements Account {
}
@Override
+ public DateTime getCreatedDate() {
+ return account.getCreatedDate();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return account.getUpdatedDate();
+ }
+
+ @Override
public String getExternalKey() {
return account.getExternalKey();
}
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java
index 635bea0..ff225e4 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java
@@ -40,6 +40,7 @@ import com.ning.billing.util.callcontext.InternalTenantContext;
import com.ning.billing.util.svcapi.junction.BlockingApi;
public class BlockingSubscription implements Subscription {
+
private final Subscription subscription;
private final BlockingApi blockingApi;
private final BlockingChecker checker;
@@ -63,6 +64,16 @@ public class BlockingSubscription implements Subscription {
}
@Override
+ public DateTime getCreatedDate() {
+ return subscription.getCreatedDate();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return subscription.getUpdatedDate();
+ }
+
+ @Override
public boolean cancel(final DateTime requestedDate, final CallContext context) throws EntitlementUserApiException {
return subscription.cancel(requestedDate, context);
}
@@ -73,7 +84,6 @@ public class BlockingSubscription implements Subscription {
return subscription.cancelWithPolicy(requestedDate, policy, context);
}
-
@Override
public boolean uncancel(final CallContext context) throws EntitlementUserApiException {
return subscription.uncancel(context);
@@ -81,7 +91,7 @@ public class BlockingSubscription implements Subscription {
@Override
public boolean changePlan(final String productName, final BillingPeriod term, final String priceList, final DateTime requestedDate,
- final CallContext context) throws EntitlementUserApiException {
+ final CallContext context) throws EntitlementUserApiException {
try {
checker.checkBlockedChange(this, internalCallContextFactory.createInternalTenantContext(context));
} catch (BlockingApiException e) {
@@ -92,7 +102,7 @@ public class BlockingSubscription implements Subscription {
@Override
public boolean changePlanWithPolicy(final String productName, final BillingPeriod term, final String priceList,
- final DateTime requestedDate, final ActionPolicy policy, final CallContext context) throws EntitlementUserApiException {
+ final DateTime requestedDate, final ActionPolicy policy, final CallContext context) throws EntitlementUserApiException {
try {
checker.checkBlockedChange(this, internalCallContextFactory.createInternalTenantContext(context));
} catch (BlockingApiException e) {
@@ -103,7 +113,7 @@ public class BlockingSubscription implements Subscription {
@Override
public boolean recreate(final PlanPhaseSpecifier spec, final DateTime requestedDate, final CallContext context)
- throws EntitlementUserApiException {
+ throws EntitlementUserApiException {
return subscription.recreate(spec, requestedDate, context);
}
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscriptionBundle.java b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscriptionBundle.java
index 8ba6acd..dd7f504 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscriptionBundle.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscriptionBundle.java
@@ -18,6 +18,8 @@ package com.ning.billing.junction.plumbing.api;
import java.util.UUID;
+import org.joda.time.DateTime;
+
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.junction.api.BlockingState;
import com.ning.billing.overdue.OverdueState;
@@ -48,6 +50,16 @@ public class BlockingSubscriptionBundle implements SubscriptionBundle {
}
@Override
+ public DateTime getCreatedDate() {
+ return subscriptionBundle.getCreatedDate();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ return subscriptionBundle.getUpdatedDate();
+ }
+
+ @Override
public String getKey() {
return subscriptionBundle.getKey();
}
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java
index 6aa1705..cde2b82 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java
@@ -13,6 +13,7 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.payment.api;
import java.math.BigDecimal;
@@ -21,10 +22,10 @@ import java.util.Collections;
import java.util.List;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
-import com.google.common.base.Function;
-import com.google.common.collect.Collections2;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.payment.dao.PaymentAttemptModelDao;
import com.ning.billing.payment.dao.PaymentModelDao;
@@ -32,8 +33,10 @@ import com.ning.billing.payment.dao.RefundModelDao;
import com.ning.billing.payment.dao.RefundModelDao.RefundStatus;
import com.ning.billing.util.entity.EntityBase;
-public class DefaultPayment extends EntityBase implements Payment {
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
+public class DefaultPayment extends EntityBase implements Payment {
private final UUID accountId;
private final UUID invoiceId;
@@ -48,13 +51,12 @@ public class DefaultPayment extends EntityBase implements Payment {
private final String extSecondPaymentIdRef;
private final List<PaymentAttempt> attempts;
-
- private DefaultPayment(final UUID id, final UUID accountId, final UUID invoiceId,
- final UUID paymentMethodId, final BigDecimal amount, BigDecimal paidAmount, final Currency currency,
+ private DefaultPayment(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate, final UUID accountId, final UUID invoiceId,
+ final UUID paymentMethodId, final BigDecimal amount, final BigDecimal paidAmount, final Currency currency,
final DateTime effectiveDate, final Integer paymentNumber,
final PaymentStatus paymentStatus, final String paymentError, final String extFirstPaymentIdRef,
final String extSecondPaymentIdRef, final List<PaymentAttempt> attempts) {
- super(id);
+ super(id, createdDate, updatedDate);
this.accountId = accountId;
this.invoiceId = invoiceId;
this.paymentMethodId = paymentMethodId;
@@ -71,6 +73,8 @@ public class DefaultPayment extends EntityBase implements Payment {
public DefaultPayment(final PaymentModelDao src, final List<PaymentAttemptModelDao> attempts, final List<RefundModelDao> refunds) {
this(src.getId(),
+ src.getCreatedDate(),
+ src.getUpdatedDate(),
src.getAccountId(),
src.getInvoiceId(),
src.getPaymentMethodId(),
@@ -141,7 +145,6 @@ public class DefaultPayment extends EntityBase implements Payment {
return extSecondPaymentIdRef;
}
-
@Override
public List<PaymentAttempt> getAttempts() {
return attempts;
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentMethod.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentMethod.java
index e3f57b7..065c649 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentMethod.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentMethod.java
@@ -13,31 +13,28 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.payment.api;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
+
import com.ning.billing.payment.dao.PaymentMethodModelDao;
import com.ning.billing.util.entity.EntityBase;
public class DefaultPaymentMethod extends EntityBase implements PaymentMethod {
-
private final UUID accountId;
private final Boolean isActive;
private final String pluginName;
private final PaymentMethodPlugin pluginDetail;
- public DefaultPaymentMethod(final UUID paymentMethodId, final UUID accountId, final Boolean isActive, final String pluginName) {
- super(paymentMethodId);
- this.accountId = accountId;
- this.isActive = isActive;
- this.pluginName = pluginName;
- this.pluginDetail = null;
- }
-
- public DefaultPaymentMethod(final UUID paymentMethodId, final UUID accountId, final Boolean isActive, final String pluginName, final PaymentMethodPlugin pluginDetail) {
- super(paymentMethodId);
+ public DefaultPaymentMethod(final UUID paymentMethodId, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
+ final UUID accountId, final Boolean isActive, final String pluginName, final PaymentMethodPlugin pluginDetail) {
+ super(paymentMethodId, createdDate, updatedDate);
this.accountId = accountId;
this.isActive = isActive;
this.pluginName = pluginName;
@@ -45,18 +42,13 @@ public class DefaultPaymentMethod extends EntityBase implements PaymentMethod {
}
public DefaultPaymentMethod(final UUID accountId, final String pluginName, final PaymentMethodPlugin pluginDetail) {
- this(UUID.randomUUID(), accountId, true, pluginName, pluginDetail);
- }
-
- public DefaultPaymentMethod(final PaymentMethodModelDao input) {
- this(input.getId(), input.getAccountId(), input.isActive(), input.getPluginName());
+ this(UUID.randomUUID(), null, null, accountId, true, pluginName, pluginDetail);
}
public DefaultPaymentMethod(final PaymentMethodModelDao input, final PaymentMethodPlugin pluginDetail) {
- this(input.getId(), input.getAccountId(), input.isActive(), input.getPluginName(), pluginDetail);
+ this(input.getId(), input.getCreatedDate(), input.getUpdatedDate(), input.getAccountId(), input.isActive(), input.getPluginName(), pluginDetail);
}
-
@Override
public UUID getAccountId() {
return accountId;
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultRefund.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultRefund.java
index 81c8257..9bf3904 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultRefund.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultRefund.java
@@ -19,6 +19,8 @@ package com.ning.billing.payment.api;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.ning.billing.catalog.api.Currency;
@@ -32,9 +34,10 @@ public class DefaultRefund extends EntityBase implements Refund {
private final boolean isAdjusted;
private final DateTime effectiveDate;
- public DefaultRefund(final UUID id, final UUID paymentId, final BigDecimal amount,
+ public DefaultRefund(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
+ final UUID paymentId, final BigDecimal amount,
final Currency currency, final boolean isAdjusted, final DateTime effectiveDate) {
- super(id);
+ super(id, createdDate, updatedDate);
this.paymentId = paymentId;
this.amount = amount;
this.currency = currency;
diff --git a/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
index 4b79f9e..a816b3b 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
@@ -16,8 +16,6 @@
package com.ning.billing.payment.core;
-import static com.ning.billing.payment.glue.PaymentModule.PLUGIN_EXECUTOR_NAMED;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -57,6 +55,8 @@ import com.google.common.collect.ImmutableList;
import com.google.inject.Inject;
import com.google.inject.name.Named;
+import static com.ning.billing.payment.glue.PaymentModule.PLUGIN_EXECUTOR_NAMED;
+
public class PaymentMethodProcessor extends ProcessorBase {
private static final Logger log = LoggerFactory.getLogger(PaymentMethodProcessor.class);
@@ -109,7 +109,8 @@ public class PaymentMethodProcessor extends ProcessorBase {
pluginApi = pluginRegistry.getPlugin(pluginName);
pm = new DefaultPaymentMethod(account.getId(), pluginName, paymentMethodProps);
final String externalId = pluginApi.addPaymentMethod(account.getExternalKey(), paymentMethodProps, setDefault, context.toCallContext());
- final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(pm.getId(), pm.getAccountId(), pm.getPluginName(), pm.isActive(), externalId);
+ final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(pm.getId(), pm.getCreatedDate(), pm.getUpdatedDate(),
+ pm.getAccountId(), pm.getPluginName(), pm.isActive(), externalId);
paymentDao.insertPaymentMethod(pmModel, context);
if (setDefault) {
@@ -145,7 +146,9 @@ public class PaymentMethodProcessor extends ProcessorBase {
final List<PaymentMethodModelDao> finalPaymentMethods = new ArrayList<PaymentMethodModelDao>();
for (final PaymentMethodPlugin cur : pluginPms) {
final PaymentMethod input = new DefaultPaymentMethod(account.getId(), pluginName, cur);
- final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(input.getId(), input.getAccountId(), input.getPluginName(), input.isActive(), input.getPluginDetail().getExternalPaymentMethodId());
+ final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(input.getId(), input.getCreatedDate(), input.getUpdatedDate(),
+ input.getAccountId(), input.getPluginName(), input.isActive(),
+ input.getPluginDetail().getExternalPaymentMethodId());
finalPaymentMethods.add(pmModel);
}
diff --git a/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
index 97e3848..2054f0e 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
@@ -16,8 +16,6 @@
package com.ning.billing.payment.core;
-import static com.ning.billing.payment.glue.PaymentModule.PLUGIN_EXECUTOR_NAMED;
-
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
@@ -66,6 +64,8 @@ import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableMap;
import com.google.inject.name.Named;
+import static com.ning.billing.payment.glue.PaymentModule.PLUGIN_EXECUTOR_NAMED;
+
public class RefundProcessor extends ProcessorBase {
private static final Logger log = LoggerFactory.getLogger(RefundProcessor.class);
@@ -170,7 +170,8 @@ public class RefundProcessor extends ProcessorBase {
paymentDao.updateRefundStatus(refundInfo.getId(), RefundStatus.COMPLETED, context);
- return new DefaultRefund(refundInfo.getId(), paymentId, refundInfo.getAmount(), account.getCurrency(),
+ return new DefaultRefund(refundInfo.getId(),refundInfo.getCreatedDate(), refundInfo.getUpdatedDate(),
+ paymentId, refundInfo.getAmount(), account.getCurrency(),
isAdjusted, refundInfo.getCreatedDate());
} catch (PaymentPluginApiException e) {
throw new PaymentApiException(ErrorCode.PAYMENT_CREATE_REFUND, account.getId(), e.getMessage());
@@ -236,7 +237,8 @@ public class RefundProcessor extends ProcessorBase {
if (completePluginCompletedRefund(filteredInput)) {
result = paymentDao.getRefund(refundId, context);
}
- return new DefaultRefund(result.getId(), result.getPaymentId(), result.getAmount(), result.getCurrency(),
+ return new DefaultRefund(result.getId(), result.getCreatedDate(), result.getUpdatedDate(),
+ result.getPaymentId(), result.getAmount(), result.getCurrency(),
result.isAdjsuted(), result.getCreatedDate());
}
@@ -264,7 +266,8 @@ public class RefundProcessor extends ProcessorBase {
return new ArrayList<Refund>(Collections2.transform(in, new Function<RefundModelDao, Refund>() {
@Override
public Refund apply(final RefundModelDao cur) {
- return new DefaultRefund(cur.getId(), cur.getPaymentId(), cur.getAmount(), cur.getCurrency(),
+ return new DefaultRefund(cur.getId(), cur.getCreatedDate(), cur.getUpdatedDate(),
+ cur.getPaymentId(), cur.getAmount(), cur.getCurrency(),
cur.isAdjsuted(), cur.getCreatedDate());
}
}));
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java
index 2234c61..fb83540 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java
@@ -13,11 +13,14 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.payment.dao;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.ning.billing.payment.api.PaymentStatus;
@@ -34,10 +37,11 @@ public class PaymentAttemptModelDao extends EntityBase {
private final String gatewayErrorMsg;
private final BigDecimal requestedAmount;
- public PaymentAttemptModelDao(final UUID id, final UUID accountId, final UUID invoiceId,
+ public PaymentAttemptModelDao(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
+ final UUID accountId, final UUID invoiceId,
final UUID paymentId, final PaymentStatus processingStatus, final DateTime effectiveDate,
final BigDecimal requestedAmount, final String gatewayErrorCode, final String gatewayErrorMsg) {
- super(id);
+ super(id, createdDate, updatedDate);
this.accountId = accountId;
this.invoiceId = invoiceId;
this.paymentId = paymentId;
@@ -49,15 +53,15 @@ public class PaymentAttemptModelDao extends EntityBase {
}
public PaymentAttemptModelDao(final UUID accountId, final UUID invoiceId, final UUID paymentId, final PaymentStatus paymentStatus, final DateTime effectiveDate, final BigDecimal requestedAmount) {
- this(UUID.randomUUID(), accountId, invoiceId, paymentId, paymentStatus, effectiveDate, requestedAmount, null, null);
+ this(UUID.randomUUID(), null, null, accountId, invoiceId, paymentId, paymentStatus, effectiveDate, requestedAmount, null, null);
}
public PaymentAttemptModelDao(final UUID accountId, final UUID invoiceId, final UUID paymentId, final DateTime effectiveDate, final BigDecimal requestedAmount) {
- this(UUID.randomUUID(), accountId, invoiceId, paymentId, PaymentStatus.UNKNOWN, effectiveDate, requestedAmount, null, null);
+ this(UUID.randomUUID(), null, null, accountId, invoiceId, paymentId, PaymentStatus.UNKNOWN, effectiveDate, requestedAmount, null, null);
}
public PaymentAttemptModelDao(final PaymentAttemptModelDao src, final PaymentStatus newProcessingStatus, final String gatewayErrorCode, final String gatewayErrorMsg) {
- this(src.getId(), src.getAccountId(), src.getInvoiceId(), src.getPaymentId(), newProcessingStatus,
+ this(src.getId(), src.getCreatedDate(), src.getUpdatedDate(), src.getAccountId(), src.getInvoiceId(), src.getPaymentId(), newProcessingStatus,
src.getEffectiveDate(), src.getRequestedAmount(), gatewayErrorCode, gatewayErrorMsg);
}
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java
index 199ad81..84d5ed5 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java
@@ -100,7 +100,11 @@ public interface PaymentAttemptSqlDao extends Transactional<PaymentAttemptSqlDao
final String gatewayErrorCode = rs.getString("gateway_error_code");
final String gatewayErrorMsg = rs.getString("gateway_error_msg");
final BigDecimal requestedAmount = rs.getBigDecimal("requested_amount");
- return new PaymentAttemptModelDao(id, accountId, invoiceId, paymentId, processingStatus, effectiveDate, requestedAmount, gatewayErrorCode, gatewayErrorMsg);
+ final DateTime createdDate = getDateTime(rs, "created_date");
+ final DateTime updatedDate = getDateTime(rs, "updated_date");
+
+ return new PaymentAttemptModelDao(id, createdDate, updatedDate, accountId, invoiceId, paymentId, processingStatus,
+ effectiveDate, requestedAmount, gatewayErrorCode, gatewayErrorMsg);
}
}
}
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodModelDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodModelDao.java
index 30aa125..38d144b 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodModelDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodModelDao.java
@@ -13,10 +13,15 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.payment.dao;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
+
import com.ning.billing.util.entity.EntityBase;
public class PaymentMethodModelDao extends EntityBase {
@@ -26,9 +31,10 @@ public class PaymentMethodModelDao extends EntityBase {
private final Boolean isActive;
private final String externalId;
- public PaymentMethodModelDao(final UUID id, final UUID accountId, final String pluginName,
+ public PaymentMethodModelDao(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
+ final UUID accountId, final String pluginName,
final Boolean isActive, final String externalId) {
- super(id);
+ super(id, createdDate, updatedDate);
this.accountId = accountId;
this.pluginName = pluginName;
this.isActive = isActive;
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodSqlDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodSqlDao.java
index 8ad616c..8ccadca 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodSqlDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentMethodSqlDao.java
@@ -21,6 +21,7 @@ import java.sql.SQLException;
import java.util.List;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.skife.jdbi.v2.SQLStatement;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.sqlobject.Bind;
@@ -97,7 +98,9 @@ public interface PaymentMethodSqlDao extends Transactional<PaymentMethodSqlDao>,
final String pluginName = rs.getString("plugin_name");
final Boolean isActive = rs.getBoolean("is_active");
final String externalId = rs.getString("external_id");
- return new PaymentMethodModelDao(id, accountId, pluginName, isActive, externalId);
+ final DateTime createdDate = getDateTime(rs, "created_date");
+ final DateTime updatedDate = getDateTime(rs, "updated_date");
+ return new PaymentMethodModelDao(id, createdDate, updatedDate, accountId, pluginName, isActive, externalId);
}
}
}
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentModelDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentModelDao.java
index 3091e47..a2af3dd 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentModelDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentModelDao.java
@@ -13,11 +13,14 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.payment.dao;
import java.math.BigDecimal;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.ning.billing.catalog.api.Currency;
@@ -39,10 +42,11 @@ public class PaymentModelDao extends EntityBase {
private final String extFirstPaymentRefId;
private final String extSecondPaymentRefId;
- public PaymentModelDao(final UUID id, final UUID accountId, final UUID invoiceId, final UUID paymentMethodId,
+ public PaymentModelDao(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate, final UUID accountId,
+ final UUID invoiceId, final UUID paymentMethodId,
final Integer paymentNumber, final BigDecimal amount, final Currency currency,
final PaymentStatus paymentStatus, final DateTime effectiveDate, final String extFirstPaymentRefId, final String extSecondPaymentRefId) {
- super(id);
+ super(id, createdDate, updatedDate);
this.accountId = accountId;
this.invoiceId = invoiceId;
this.paymentMethodId = paymentMethodId;
@@ -56,17 +60,18 @@ public class PaymentModelDao extends EntityBase {
}
public PaymentModelDao(final UUID accountId, final UUID invoiceId, final UUID paymentMethodId,
- final BigDecimal amount, final Currency currency, final DateTime effectiveDate, final PaymentStatus paymentStatus) {
- this(UUID.randomUUID(), accountId, invoiceId, paymentMethodId, INVALID_PAYMENT_NUMBER, amount, currency, paymentStatus, effectiveDate, null, null);
+ final BigDecimal amount, final Currency currency, final DateTime effectiveDate, final PaymentStatus paymentStatus) {
+ this(UUID.randomUUID(), null, null, accountId, invoiceId, paymentMethodId, INVALID_PAYMENT_NUMBER, amount, currency, paymentStatus, effectiveDate, null, null);
}
public PaymentModelDao(final UUID accountId, final UUID invoiceId, final UUID paymentMethodId,
- final BigDecimal amount, final Currency currency, final DateTime effectiveDate) {
- this(UUID.randomUUID(), accountId, invoiceId, paymentMethodId, INVALID_PAYMENT_NUMBER, amount, currency, PaymentStatus.UNKNOWN, effectiveDate, null, null);
+ final BigDecimal amount, final Currency currency, final DateTime effectiveDate) {
+ this(UUID.randomUUID(), null, null, accountId, invoiceId, paymentMethodId, INVALID_PAYMENT_NUMBER, amount, currency, PaymentStatus.UNKNOWN, effectiveDate, null, null);
}
public PaymentModelDao(final PaymentModelDao src, final PaymentStatus newPaymentStatus) {
- this(src.getId(), src.getAccountId(), src.getInvoiceId(), src.getPaymentMethodId(), src.getPaymentNumber(), src.getAmount(), src.getCurrency(), newPaymentStatus, src.getEffectiveDate(), null, null);
+ this(src.getId(), src.getCreatedDate(), src.getUpdatedDate(), src.getAccountId(), src.getInvoiceId(), src.getPaymentMethodId(),
+ src.getPaymentNumber(), src.getAmount(), src.getCurrency(), newPaymentStatus, src.getEffectiveDate(), null, null);
}
public UUID getAccountId() {
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
index a615a39..cd19c70 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
@@ -121,7 +121,10 @@ public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, UpdatableEn
final PaymentStatus paymentStatus = PaymentStatus.valueOf(rs.getString("payment_status"));
final String extFirstPaymentRefId = rs.getString("ext_first_payment_ref_id");
final String extSecondPaymentRefId = rs.getString("ext_second_payment_ref_id");
- return new PaymentModelDao(id, accountId, invoiceId, paymentMethodId, paymentNumber, amount, currency, paymentStatus, effectiveDate, extFirstPaymentRefId, extSecondPaymentRefId);
+ final DateTime createdDate = getDateTime(rs, "created_date");
+ final DateTime updatedDate = getDateTime(rs, "updated_date");
+ return new PaymentModelDao(id, createdDate, updatedDate, accountId, invoiceId, paymentMethodId, paymentNumber,
+ amount, currency, paymentStatus, effectiveDate, extFirstPaymentRefId, extSecondPaymentRefId);
}
}
}
diff --git a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
index 8190f77..e279a76 100644
--- a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
+++ b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
@@ -282,7 +282,8 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
final Boolean isActive = Boolean.TRUE;
final String externalPaymentId = UUID.randomUUID().toString();
- final PaymentMethodModelDao method = new PaymentMethodModelDao(paymentMethodId, accountId, pluginName, isActive, externalPaymentId);
+ final PaymentMethodModelDao method = new PaymentMethodModelDao(paymentMethodId, null, null,
+ accountId, pluginName, isActive, externalPaymentId);
PaymentMethodModelDao savedMethod = paymentDao.insertPaymentMethod(method, internalCallContext);
assertEquals(savedMethod.getId(), paymentMethodId);
diff --git a/server/src/test/java/com/ning/billing/server/security/TestKillbillJdbcRealm.java b/server/src/test/java/com/ning/billing/server/security/TestKillbillJdbcRealm.java
index aa8344d..f2874fe 100644
--- a/server/src/test/java/com/ning/billing/server/security/TestKillbillJdbcRealm.java
+++ b/server/src/test/java/com/ning/billing/server/security/TestKillbillJdbcRealm.java
@@ -47,7 +47,7 @@ public class TestKillbillJdbcRealm extends ServerTestSuiteWithEmbeddedDB {
public void setUp() throws Exception {
// Create the tenant
final DefaultTenantDao tenantDao = new DefaultTenantDao(getMysqlTestingHelper().getDBI(), Mockito.mock(Bus.class));
- tenant = new DefaultTenant(UUID.randomUUID(), UUID.randomUUID().toString(),
+ tenant = new DefaultTenant(UUID.randomUUID(), null, null, UUID.randomUUID().toString(),
UUID.randomUUID().toString(), UUID.randomUUID().toString());
tenantDao.create(tenant, internalCallContext);
diff --git a/tenant/src/main/java/com/ning/billing/tenant/api/DefaultTenant.java b/tenant/src/main/java/com/ning/billing/tenant/api/DefaultTenant.java
index 1f1b250..fbc405a 100644
--- a/tenant/src/main/java/com/ning/billing/tenant/api/DefaultTenant.java
+++ b/tenant/src/main/java/com/ning/billing/tenant/api/DefaultTenant.java
@@ -18,6 +18,10 @@ package com.ning.billing.tenant.api;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
+
import com.ning.billing.util.entity.EntityBase;
public class DefaultTenant extends EntityBase implements Tenant {
@@ -43,11 +47,12 @@ public class DefaultTenant extends EntityBase implements Tenant {
* @param data TenantData new data for the existing tenant
*/
public DefaultTenant(final UUID id, final TenantData data) {
- this(id, data.getExternalKey(), data.getApiKey(), data.getApiSecret());
+ this(id, null, null, data.getExternalKey(), data.getApiKey(), data.getApiSecret());
}
- public DefaultTenant(final UUID id, final String externalKey, final String apiKey, final String apiSecret) {
- super(id);
+ public DefaultTenant(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
+ final String externalKey, final String apiKey, final String apiSecret) {
+ super(id, createdDate, updatedDate);
this.externalKey = externalKey;
this.apiKey = apiKey;
this.apiSecret = apiSecret;
diff --git a/tenant/src/main/java/com/ning/billing/tenant/dao/TenantMapper.java b/tenant/src/main/java/com/ning/billing/tenant/dao/TenantMapper.java
index 8c53237..558e507 100644
--- a/tenant/src/main/java/com/ning/billing/tenant/dao/TenantMapper.java
+++ b/tenant/src/main/java/com/ning/billing/tenant/dao/TenantMapper.java
@@ -20,6 +20,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
@@ -34,7 +35,9 @@ public class TenantMapper extends MapperBase implements ResultSetMapper<Tenant>
final UUID id = getUUID(result, "id");
final String externalKey = result.getString("external_key");
final String apiKey = result.getString("api_key");
+ final DateTime createdDate = getDateTime(result, "created_date");
+ final DateTime updatedDate = getDateTime(result, "updated_date");
- return new DefaultTenant(id, externalKey, apiKey, null);
+ return new DefaultTenant(id, createdDate, updatedDate, externalKey, apiKey, null);
}
}
diff --git a/tenant/src/test/java/com/ning/billing/tenant/dao/TestDefaultTenantDao.java b/tenant/src/test/java/com/ning/billing/tenant/dao/TestDefaultTenantDao.java
index c3ef3a7..c29aa21 100644
--- a/tenant/src/test/java/com/ning/billing/tenant/dao/TestDefaultTenantDao.java
+++ b/tenant/src/test/java/com/ning/billing/tenant/dao/TestDefaultTenantDao.java
@@ -36,7 +36,7 @@ public class TestDefaultTenantDao extends TenantTestSuiteWithEmbeddedDb {
public void testWeCanStoreAndMatchCredentials() throws Exception {
final DefaultTenantDao tenantDao = new DefaultTenantDao(getMysqlTestingHelper().getDBI(), Mockito.mock(Bus.class));
- final DefaultTenant tenant = new DefaultTenant(UUID.randomUUID(), UUID.randomUUID().toString(),
+ final DefaultTenant tenant = new DefaultTenant(UUID.randomUUID(), null, null, UUID.randomUUID().toString(),
UUID.randomUUID().toString(), UUID.randomUUID().toString());
tenantDao.create(tenant, internalCallContext);
diff --git a/util/src/main/java/com/ning/billing/util/entity/EntityBase.java b/util/src/main/java/com/ning/billing/util/entity/EntityBase.java
index 1ac2fd0..4b8810c 100644
--- a/util/src/main/java/com/ning/billing/util/entity/EntityBase.java
+++ b/util/src/main/java/com/ning/billing/util/entity/EntityBase.java
@@ -47,12 +47,12 @@ public abstract class EntityBase implements Entity {
return id;
}
- // TODO surface it in Entity
+ @Override
public DateTime getCreatedDate() {
return createdDate;
}
- // TODO surface it in Entity
+ @Override
public DateTime getUpdatedDate() {
return updatedDate;
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
index fe40e0d..6ce665b 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
@@ -20,6 +20,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
@@ -30,6 +31,7 @@ import com.ning.billing.util.tag.DescriptiveTag;
import com.ning.billing.util.tag.Tag;
public class TagMapper extends MapperBase implements ResultSetMapper<Tag> {
+
@Override
public Tag map(final int index, final ResultSet result, final StatementContext context) throws SQLException {
@@ -43,10 +45,11 @@ public class TagMapper extends MapperBase implements ResultSetMapper<Tag> {
}
final UUID id = getUUID(result, "id");
+ final DateTime createdDate = getDateTime(result, "created_date");
if (thisTagType == null) {
- return new DescriptiveTag(id, tagDefinitionId);
+ return new DescriptiveTag(id, createdDate, tagDefinitionId);
} else {
- return new DefaultControlTag(id, thisTagType);
+ return new DefaultControlTag(id, createdDate, thisTagType);
}
}
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java b/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
index c9b624f..f18844f 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
@@ -18,7 +18,12 @@ package com.ning.billing.util.tag;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
+
public class DefaultControlTag extends DescriptiveTag implements ControlTag {
+
private final ControlTagType controlTagType;
// use to create new objects
@@ -28,8 +33,8 @@ public class DefaultControlTag extends DescriptiveTag implements ControlTag {
}
// use to hydrate objects when loaded from the persistence layer
- public DefaultControlTag(final UUID id, final ControlTagType controlTagType) {
- super(id, controlTagType.getId());
+ public DefaultControlTag(final UUID id, @Nullable final DateTime createdDate, final ControlTagType controlTagType) {
+ super(id, createdDate, controlTagType.getId());
this.controlTagType = controlTagType;
}
@@ -48,7 +53,7 @@ public class DefaultControlTag extends DescriptiveTag implements ControlTag {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((controlTagType == null) ? 0
- : controlTagType.hashCode());
+ : controlTagType.hashCode());
return result;
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java b/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java
index 772d391..e916d3e 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java
@@ -18,6 +18,10 @@ package com.ning.billing.util.tag;
import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
+
import com.ning.billing.util.entity.EntityBase;
public class DescriptiveTag extends EntityBase implements Tag {
@@ -25,8 +29,8 @@ public class DescriptiveTag extends EntityBase implements Tag {
private final UUID tagDefinitionId;
// use to hydrate objects from the persistence layer
- public DescriptiveTag(final UUID id, final UUID tagDefinitionId) {
- super(id);
+ public DescriptiveTag(final UUID id, @Nullable final DateTime createdDate, final UUID tagDefinitionId) {
+ super(id, createdDate, createdDate);
this.tagDefinitionId = tagDefinitionId;
}
@@ -36,13 +40,11 @@ public class DescriptiveTag extends EntityBase implements Tag {
this.tagDefinitionId = tagDefinitionId;
}
-
@Override
public UUID getTagDefinitionId() {
return tagDefinitionId;
}
-
@Override
public String toString() {
return "DescriptiveTag [tagDefinitionId=" + tagDefinitionId + ", id=" + id + "]";
@@ -53,7 +55,7 @@ public class DescriptiveTag extends EntityBase implements Tag {
final int prime = 31;
int result = 1;
result = prime * result + ((tagDefinitionId == null) ? 0
- : tagDefinitionId.hashCode());
+ : tagDefinitionId.hashCode());
return result;
}
diff --git a/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java b/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java
index 4d92c2a..8a9a6dc 100644
--- a/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java
+++ b/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java
@@ -64,6 +64,16 @@ public class MockEntitlementUserApi implements EntitlementUserApi {
}
@Override
+ public DateTime getCreatedDate() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public String getKey() {
return key;
}
diff --git a/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java b/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
index 01d5257..28d59a7 100644
--- a/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
+++ b/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
@@ -18,6 +18,7 @@ package com.ning.billing.mock;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import com.ning.billing.account.api.Account;
@@ -28,6 +29,7 @@ import com.ning.billing.catalog.api.Currency;
import com.ning.billing.junction.api.BlockingState;
public class MockAccountBuilder {
+
private final UUID id;
private String externalKey = "";
private String email = "";
@@ -178,6 +180,16 @@ public class MockAccountBuilder {
public Account build() {
return new Account() {
@Override
+ public DateTime getCreatedDate() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public String getExternalKey() {
return externalKey;
}
diff --git a/util/src/test/java/com/ning/billing/mock/MockSubscription.java b/util/src/test/java/com/ning/billing/mock/MockSubscription.java
index 9286a9a..baf4543 100644
--- a/util/src/test/java/com/ning/billing/mock/MockSubscription.java
+++ b/util/src/test/java/com/ning/billing/mock/MockSubscription.java
@@ -39,6 +39,7 @@ import com.ning.billing.util.callcontext.CallContext;
import com.google.common.collect.ImmutableList;
public class MockSubscription implements Subscription {
+
private final UUID id;
private final UUID bundleId;
private final SubscriptionState state;
@@ -76,7 +77,7 @@ public class MockSubscription implements Subscription {
@Override
public boolean cancelWithPolicy(DateTime requestedDate,
- ActionPolicy policy, CallContext context)
+ ActionPolicy policy, CallContext context)
throws EntitlementUserApiException {
return sub.cancelWithPolicy(requestedDate, policy, context);
}
@@ -110,6 +111,16 @@ public class MockSubscription implements Subscription {
}
@Override
+ public DateTime getCreatedDate() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public UUID getBundleId() {
return bundleId;
}
diff --git a/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java b/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java
index 5a073e3..127b794 100644
--- a/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java
+++ b/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java
@@ -25,6 +25,7 @@ import java.util.UUID;
import javax.annotation.Nullable;
+import org.joda.time.DateTime;
import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
import com.ning.billing.util.callcontext.InternalCallContext;
@@ -82,6 +83,16 @@ public class MockTagDao implements TagDao {
public UUID getId() {
return id;
}
+
+ @Override
+ public DateTime getCreatedDate() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public DateTime getUpdatedDate() {
+ throw new UnsupportedOperationException();
+ }
};
if (tagStore.get(objectId) == null) {