killbill-memoizeit
Changes
subscription/src/main/java/org/killbill/billing/subscription/api/user/SubscriptionBaseTransitionData.java 22(+21 -1)
subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionBundleModelDao.java 2(+1 -1)
subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionEventModelDao.java 2(+1 -1)
subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionModelDao.java 2(+1 -1)
subscription/src/main/java/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.java 1(+1 -0)
subscription/src/main/java/org/killbill/billing/subscription/events/user/ApiEventType.java 48(+6 -42)
subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/BundleSqlDao.sql.stg 2(+1 -1)
subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionEventSqlDao.sql.stg 1(+1 -0)
Details
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/user/SubscriptionBaseTransitionData.java b/subscription/src/main/java/org/killbill/billing/subscription/api/user/SubscriptionBaseTransitionData.java
index b8beb50..79475f6 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/user/SubscriptionBaseTransitionData.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/user/SubscriptionBaseTransitionData.java
@@ -250,7 +250,7 @@ public class SubscriptionBaseTransitionData implements SubscriptionBaseTransitio
public static SubscriptionBaseTransitionType toSubscriptionTransitionType(final EventType eventType, final ApiEventType apiEventType) {
switch (eventType) {
case API_USER:
- return apiEventType.getSubscriptionTransitionType();
+ return toSubscriptionBaseTransitionType(apiEventType);
case PHASE:
return SubscriptionBaseTransitionType.PHASE;
case BCD_UPDATE:
@@ -259,6 +259,26 @@ public class SubscriptionBaseTransitionData implements SubscriptionBaseTransitio
throw new SubscriptionBaseError("Unexpected event type " + eventType);
}
}
+
+ private static SubscriptionBaseTransitionType toSubscriptionBaseTransitionType(final ApiEventType e) {
+ switch (e) {
+ case CREATE:
+ return SubscriptionBaseTransitionType.CREATE;
+ case CHANGE:
+ return SubscriptionBaseTransitionType.CHANGE;
+ case TRANSFER:
+ return SubscriptionBaseTransitionType.TRANSFER;
+ case CANCEL:
+ return SubscriptionBaseTransitionType.CANCEL;
+ case UNDO_CHANGE:
+ return SubscriptionBaseTransitionType.UNDO_CHANGE;
+ case UNCANCEL:
+ return SubscriptionBaseTransitionType.UNCANCEL;
+ default:
+ throw new IllegalStateException(String.format("Unknown apiEventType %s", e));
+ }
+ }
+
@Override
public DateTime getCreatedDate() {
return createdDate;
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionBundleModelDao.java b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionBundleModelDao.java
index e5938dc..932eb73 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionBundleModelDao.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionBundleModelDao.java
@@ -157,7 +157,7 @@ public class SubscriptionBundleModelDao extends EntityModelDaoBase implements En
@Override
public TableName getHistoryTableName() {
- return null;
+ return TableName.BUNDLE_HISTORY;
}
}
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionEventModelDao.java b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionEventModelDao.java
index c5d14bc..dfd339e 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionEventModelDao.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionEventModelDao.java
@@ -326,6 +326,6 @@ public class SubscriptionEventModelDao extends EntityModelDaoBase implements Ent
@Override
public TableName getHistoryTableName() {
- return null;
+ return TableName.SUBSCRIPTION_EVENT_HISTORY;
}
}
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionModelDao.java b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionModelDao.java
index d7adf33..eacf87d 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionModelDao.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/model/SubscriptionModelDao.java
@@ -193,7 +193,7 @@ public class SubscriptionModelDao extends EntityModelDaoBase implements EntityMo
@Override
public TableName getHistoryTableName() {
- return null;
+ return TableName.SUBSCRIPTION_HISTORY;
}
}
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.java b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.java
index c0c2495..93208ce 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.java
@@ -33,6 +33,7 @@ import org.killbill.billing.util.entity.dao.Audited;
import org.killbill.billing.util.entity.dao.EntitySqlDao;
import org.killbill.commons.jdbi.template.KillBillSqlDaoStringTemplate;
+
@KillBillSqlDaoStringTemplate
public interface SubscriptionSqlDao extends EntitySqlDao<SubscriptionModelDao, SubscriptionBase> {
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/events/user/ApiEventType.java b/subscription/src/main/java/org/killbill/billing/subscription/events/user/ApiEventType.java
index 88e4e7c..61004c3 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/events/user/ApiEventType.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/events/user/ApiEventType.java
@@ -16,47 +16,11 @@
package org.killbill.billing.subscription.events.user;
-import org.killbill.billing.subscription.api.SubscriptionBaseTransitionType;
-
-
public enum ApiEventType {
- CREATE {
- @Override
- public SubscriptionBaseTransitionType getSubscriptionTransitionType() {
- return SubscriptionBaseTransitionType.CREATE;
- }
- },
- TRANSFER {
- @Override
- public SubscriptionBaseTransitionType getSubscriptionTransitionType() {
- return SubscriptionBaseTransitionType.TRANSFER;
- }
- },
- CHANGE {
- @Override
- public SubscriptionBaseTransitionType getSubscriptionTransitionType() {
- return SubscriptionBaseTransitionType.CHANGE;
- }
- },
- CANCEL {
- @Override
- public SubscriptionBaseTransitionType getSubscriptionTransitionType() {
- return SubscriptionBaseTransitionType.CANCEL;
- }
- },
- UNDO_CHANGE {
- @Override
- public SubscriptionBaseTransitionType getSubscriptionTransitionType() {
- return SubscriptionBaseTransitionType.UNDO_CHANGE;
- }
- },
- UNCANCEL {
- @Override
- public SubscriptionBaseTransitionType getSubscriptionTransitionType() {
- return SubscriptionBaseTransitionType.UNCANCEL;
- }
- };
-
- // Used to map from internal events to User visible events (both user and phase)
- public abstract SubscriptionBaseTransitionType getSubscriptionTransitionType();
+ CREATE ,
+ TRANSFER ,
+ CHANGE,
+ CANCEL,
+ UNDO_CHANGE,
+ UNCANCEL;
}
diff --git a/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql b/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql
index 0807094..19647be 100644
--- a/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql
+++ b/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql
@@ -26,6 +26,35 @@ CREATE INDEX idx_ent_1 ON subscription_events(subscription_id, is_active, effect
CREATE INDEX idx_ent_2 ON subscription_events(subscription_id, effective_date, created_date, id);
CREATE INDEX subscription_events_tenant_account_record_id ON subscription_events(tenant_record_id, account_record_id);
+
+DROP TABLE IF EXISTS subscription_event_history;
+CREATE TABLE subscription_event_history (
+ record_id serial unique,
+ id varchar(36) NOT NULL,
+ target_record_id bigint /*! unsigned */ not null,
+ event_type varchar(15) NOT NULL,
+ user_type varchar(25) DEFAULT NULL,
+ effective_date datetime NOT NULL,
+ subscription_id varchar(36) NOT NULL,
+ plan_name varchar(255) DEFAULT NULL,
+ phase_name varchar(255) DEFAULT NULL,
+ price_list_name varchar(64) DEFAULT NULL,
+ billing_cycle_day_local int DEFAULT NULL,
+ is_active boolean default true,
+ change_type varchar(6) NOT NULL,
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ updated_by varchar(50) NOT NULL,
+ updated_date datetime NOT NULL,
+ account_record_id bigint /*! unsigned */ not null,
+ tenant_record_id bigint /*! unsigned */ not null default 0,
+ PRIMARY KEY(record_id)
+) /*! CHARACTER SET utf8 COLLATE utf8_bin */;
+CREATE INDEX subscription_event_history_target_record_id ON subscription_event_history(target_record_id);
+CREATE INDEX subscription_event_history_tenant_record_id ON subscription_event_history(tenant_record_id);
+
+
+
DROP TABLE IF EXISTS subscriptions;
CREATE TABLE subscriptions (
record_id serial unique,
@@ -48,6 +77,31 @@ CREATE UNIQUE INDEX subscriptions_id ON subscriptions(id);
CREATE INDEX subscriptions_bundle_id ON subscriptions(bundle_id);
CREATE INDEX subscriptions_tenant_account_record_id ON subscriptions(tenant_record_id, account_record_id);
+DROP TABLE IF EXISTS subscription_history;
+CREATE TABLE subscription_history (
+ record_id serial unique,
+ id varchar(36) NOT NULL,
+ target_record_id bigint /*! unsigned */ not null,
+ bundle_id varchar(36) NOT NULL,
+ category varchar(32) NOT NULL,
+ start_date datetime NOT NULL,
+ bundle_start_date datetime NOT NULL,
+ charged_through_date datetime DEFAULT NULL,
+ migrated bool NOT NULL default FALSE,
+ change_type varchar(6) NOT NULL,
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ updated_by varchar(50) NOT NULL,
+ updated_date datetime NOT NULL,
+ account_record_id bigint /*! unsigned */ not null,
+ tenant_record_id bigint /*! unsigned */ not null default 0,
+ PRIMARY KEY(record_id)
+) /*! CHARACTER SET utf8 COLLATE utf8_bin */;
+CREATE INDEX subscription_history_target_record_id ON subscription_history(target_record_id);
+CREATE INDEX subscription_history_tenant_record_id ON subscription_history(tenant_record_id);
+
+
+
DROP TABLE IF EXISTS bundles;
CREATE TABLE bundles (
record_id serial unique,
@@ -69,3 +123,23 @@ CREATE UNIQUE INDEX bundles_external_key ON bundles(external_key, tenant_record_
CREATE INDEX bundles_account ON bundles(account_id);
CREATE INDEX bundles_tenant_account_record_id ON bundles(tenant_record_id, account_record_id);
+DROP TABLE IF EXISTS bundle_history;
+CREATE TABLE bundle_history (
+ record_id serial unique,
+ id varchar(36) NOT NULL,
+ target_record_id bigint /*! unsigned */ not null,
+ external_key varchar(255) NOT NULL,
+ account_id varchar(36) NOT NULL,
+ last_sys_update_date datetime,
+ original_created_date datetime NOT NULL,
+ change_type varchar(6) NOT NULL,
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ updated_by varchar(50) NOT NULL,
+ updated_date datetime NOT NULL,
+ account_record_id bigint /*! unsigned */ not null,
+ tenant_record_id bigint /*! unsigned */ not null default 0,
+ PRIMARY KEY(record_id)
+) /*! CHARACTER SET utf8 COLLATE utf8_bin */;
+CREATE INDEX bundle_history_target_record_id ON bundle_history(target_record_id);
+CREATE INDEX bundle_history_tenant_record_id ON bundle_history(tenant_record_id);
diff --git a/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/BundleSqlDao.sql.stg b/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/BundleSqlDao.sql.stg
index 886d776..5b606dd 100644
--- a/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/BundleSqlDao.sql.stg
+++ b/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/BundleSqlDao.sql.stg
@@ -1,7 +1,7 @@
import "org/killbill/billing/util/entity/dao/EntitySqlDao.sql.stg"
tableName() ::= "bundles"
-
+historyTableName() ::= "bundle_history"
tableFields(prefix) ::= <<
<prefix>external_key
diff --git a/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionEventSqlDao.sql.stg b/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionEventSqlDao.sql.stg
index b8399da..390ec91 100644
--- a/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionEventSqlDao.sql.stg
+++ b/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionEventSqlDao.sql.stg
@@ -1,6 +1,7 @@
import "org/killbill/billing/util/entity/dao/EntitySqlDao.sql.stg"
tableName() ::= "subscription_events"
+historyTableName() ::= "subscription_event_history"
andCheckSoftDeletionWithComma(prefix) ::= "and <prefix>is_active"
diff --git a/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.sql.stg b/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.sql.stg
index 3f9388d..e688e72 100644
--- a/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.sql.stg
+++ b/subscription/src/main/resources/org/killbill/billing/subscription/engine/dao/SubscriptionSqlDao.sql.stg
@@ -1,6 +1,7 @@
import "org/killbill/billing/util/entity/dao/EntitySqlDao.sql.stg"
tableName() ::= "subscriptions"
+historyTableName() ::= "subscription_history"
tableFields(prefix) ::= <<
<prefix>bundle_id
diff --git a/util/src/main/java/org/killbill/billing/util/dao/TableName.java b/util/src/main/java/org/killbill/billing/util/dao/TableName.java
index 5e6e068..f32c9a2 100644
--- a/util/src/main/java/org/killbill/billing/util/dao/TableName.java
+++ b/util/src/main/java/org/killbill/billing/util/dao/TableName.java
@@ -28,7 +28,8 @@ public enum TableName {
ACCOUNT("accounts", ObjectType.ACCOUNT, ACCOUNT_HISTORY),
ACCOUNT_EMAIL_HISTORY("account_email_history"),
ACCOUNT_EMAIL("account_emails", ObjectType.ACCOUNT_EMAIL, ACCOUNT_EMAIL_HISTORY),
- BUNDLES("bundles", ObjectType.BUNDLE),
+ BUNDLE_HISTORY("bundle_history"),
+ BUNDLES("bundles", ObjectType.BUNDLE, BUNDLE_HISTORY),
BLOCKING_STATES("blocking_states", ObjectType.BLOCKING_STATES),
CUSTOM_FIELD_HISTORY("custom_field_history"),
CUSTOM_FIELD("custom_fields", ObjectType.CUSTOM_FIELD, CUSTOM_FIELD_HISTORY),
@@ -47,8 +48,10 @@ public enum TableName {
PAYMENT_TRANSACTION_HISTORY("payment_transaction_history"),
PAYMENT_TRANSACTIONS("payment_transactions", ObjectType.TRANSACTION, PAYMENT_TRANSACTION_HISTORY),
SERVICE_BRODCASTS("service_broadcasts", ObjectType.SERVICE_BROADCAST),
- SUBSCRIPTIONS("subscriptions", ObjectType.SUBSCRIPTION),
- SUBSCRIPTION_EVENTS("subscription_events", ObjectType.SUBSCRIPTION_EVENT),
+ SUBSCRIPTION_HISTORY("subscription_history"),
+ SUBSCRIPTIONS("subscriptions", ObjectType.SUBSCRIPTION, SUBSCRIPTION_HISTORY),
+ SUBSCRIPTION_EVENT_HISTORY("subscription_event_history"),
+ SUBSCRIPTION_EVENTS("subscription_events", ObjectType.SUBSCRIPTION_EVENT, SUBSCRIPTION_EVENT_HISTORY),
TAG_DEFINITION_HISTORY("tag_definition_history"),
TAG_DEFINITIONS("tag_definitions", ObjectType.TAG_DEFINITION, TAG_DEFINITION_HISTORY),
TAG_HISTORY("tag_history"),