killbill-aplcache

entitlement: remove start_date column in bundles table We

6/28/2012 1:57:10 PM

Details

diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundle.java b/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundle.java
index 61c76ee..479dbf5 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundle.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionBundle.java
@@ -18,20 +18,14 @@ package com.ning.billing.entitlement.api.user;
 
 import java.util.UUID;
 
-import org.joda.time.DateTime;
-
 import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.overdue.OverdueState;
 import com.ning.billing.util.entity.Entity;
 
 public interface SubscriptionBundle extends Blockable, Entity {
-
     public UUID getAccountId();
 
-    public DateTime getStartDate();
-
     public String getKey();
 
     public OverdueState<SubscriptionBundle> getOverdueState();
-
 }
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 be076ba..ede9ec0 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
@@ -16,6 +16,7 @@
 
 package com.ning.billing.entitlement.api.user;
 
+import javax.annotation.Nullable;
 import java.util.UUID;
 
 import org.joda.time.DateTime;
@@ -24,28 +25,24 @@ 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 startDate;
     private final DateTime lastSysTimeUpdate;
     private final OverdueState<SubscriptionBundle> overdueState;
 
     public SubscriptionBundleData(final String name, final UUID accountId, final DateTime startDate) {
-        this(UUID.randomUUID(), name, accountId, startDate, startDate);
+        this(UUID.randomUUID(), name, accountId, startDate);
     }
 
-    public SubscriptionBundleData(final UUID id, final String key, final UUID accountId, final DateTime startDate, final DateTime lastSysUpdate) {
-        this(id, key, accountId, startDate, lastSysUpdate, null);
+    public SubscriptionBundleData(final UUID id, final String key, final UUID accountId, final DateTime lastSysUpdate) {
+        this(id, key, accountId, lastSysUpdate, null);
     }
 
-    public SubscriptionBundleData(final UUID id, final String key, final UUID accountId, final DateTime startDate, final DateTime lastSysUpdate, final OverdueState<SubscriptionBundle> overdueState) {
-        super();
+    public SubscriptionBundleData(final UUID id, final String key, final UUID accountId, final DateTime lastSysUpdate, @Nullable final OverdueState<SubscriptionBundle> overdueState) {
         this.id = id;
         this.key = key;
         this.accountId = accountId;
-        this.startDate = startDate;
         this.lastSysTimeUpdate = lastSysUpdate;
         this.overdueState = overdueState;
     }
@@ -65,12 +62,6 @@ public class SubscriptionBundleData implements SubscriptionBundle {
         return accountId;
     }
 
-    // STEPH do we need it ? and should we return that and when is that populated/updated?
-    @Override
-    public DateTime getStartDate() {
-        return startDate;
-    }
-
     public DateTime getLastSysUpdateTime() {
         return lastSysTimeUpdate;
     }
@@ -84,4 +75,57 @@ public class SubscriptionBundleData implements SubscriptionBundle {
     public BlockingState getBlockingState() {
         throw new UnsupportedOperationException();
     }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("SubscriptionBundleData");
+        sb.append("{accountId=").append(accountId);
+        sb.append(", id=").append(id);
+        sb.append(", key='").append(key).append('\'');
+        sb.append(", lastSysTimeUpdate=").append(lastSysTimeUpdate);
+        sb.append(", overdueState=").append(overdueState);
+        sb.append('}');
+        return sb.toString();
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        final SubscriptionBundleData that = (SubscriptionBundleData) o;
+
+        if (accountId != null ? !accountId.equals(that.accountId) : that.accountId != null) {
+            return false;
+        }
+        if (id != null ? !id.equals(that.id) : that.id != null) {
+            return false;
+        }
+        if (key != null ? !key.equals(that.key) : that.key != null) {
+            return false;
+        }
+        if (lastSysTimeUpdate != null ? !lastSysTimeUpdate.equals(that.lastSysTimeUpdate) : that.lastSysTimeUpdate != null) {
+            return false;
+        }
+        if (overdueState != null ? !overdueState.equals(that.overdueState) : that.overdueState != null) {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = id != null ? id.hashCode() : 0;
+        result = 31 * result + (key != null ? key.hashCode() : 0);
+        result = 31 * result + (accountId != null ? accountId.hashCode() : 0);
+        result = 31 * result + (lastSysTimeUpdate != null ? lastSysTimeUpdate.hashCode() : 0);
+        result = 31 * result + (overdueState != null ? overdueState.hashCode() : 0);
+        return result;
+    }
 }
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
index bd27e4e..b80a18f 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
@@ -29,7 +29,7 @@ import org.skife.jdbi.v2.sqlobject.Bind;
 import org.skife.jdbi.v2.sqlobject.Binder;
 import org.skife.jdbi.v2.sqlobject.SqlQuery;
 import org.skife.jdbi.v2.sqlobject.SqlUpdate;
-import org.skife.jdbi.v2.sqlobject.customizers.Mapper;
+import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
 import org.skife.jdbi.v2.sqlobject.mixins.CloseMe;
 import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
 import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
@@ -46,9 +46,9 @@ import com.ning.billing.util.dao.MapperBase;
 import com.ning.billing.util.entity.dao.EntitySqlDao;
 
 @ExternalizedSqlViaStringTemplate3()
+@RegisterMapper(BundleSqlDao.ISubscriptionBundleSqlMapper.class)
 public interface BundleSqlDao extends Transactional<BundleSqlDao>, EntitySqlDao<SubscriptionBundle>,
                                       AuditSqlDao, CloseMe, Transmogrifier {
-
     @SqlUpdate
     public void insertBundle(@Bind(binder = SubscriptionBundleBinder.class) SubscriptionBundleData bundle,
                              @CallContextBinder final CallContext context);
@@ -57,22 +57,18 @@ public interface BundleSqlDao extends Transactional<BundleSqlDao>, EntitySqlDao<
     public void updateBundleLastSysTime(@Bind("id") String id, @Bind("lastSysUpdateDate") Date lastSysUpdate);
 
     @SqlQuery
-    @Mapper(ISubscriptionBundleSqlMapper.class)
     public SubscriptionBundle getBundleFromId(@Bind("id") String id);
 
     @SqlQuery
-    @Mapper(ISubscriptionBundleSqlMapper.class)
     public SubscriptionBundle getBundleFromKey(@Bind("externalKey") String externalKey);
 
     @SqlQuery
-    @Mapper(ISubscriptionBundleSqlMapper.class)
     public List<SubscriptionBundle> getBundleFromAccount(@Bind("accountId") String accountId);
 
     public static class SubscriptionBundleBinder extends BinderBase implements Binder<Bind, SubscriptionBundleData> {
         @Override
         public void bind(@SuppressWarnings("rawtypes") final SQLStatement stmt, final Bind bind, final SubscriptionBundleData bundle) {
             stmt.bind("id", bundle.getId().toString());
-            stmt.bind("startDate", getDate(bundle.getStartDate()));
             stmt.bind("externalKey", bundle.getKey());
             stmt.bind("accountId", bundle.getAccountId().toString());
             stmt.bind("lastSysUpdateDate", getDate(bundle.getLastSysUpdateTime()));
@@ -85,9 +81,8 @@ public interface BundleSqlDao extends Transactional<BundleSqlDao>, EntitySqlDao<
             final UUID id = UUID.fromString(r.getString("id"));
             final String key = r.getString("external_key");
             final UUID accountId = UUID.fromString(r.getString("account_id"));
-            final DateTime startDate = getDate(r, "start_date");
             final DateTime lastSysUpdateDate = getDate(r, "last_sys_update_date");
-            return new SubscriptionBundleData(id, key, accountId, startDate, lastSysUpdateDate);
+            return new SubscriptionBundleData(id, key, accountId, lastSysUpdateDate);
         }
     }
 }
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql b/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
index ae45518..66628e8 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
@@ -51,7 +51,6 @@ DROP TABLE IF EXISTS bundles;
 CREATE TABLE bundles (
     record_id int(11) unsigned NOT NULL AUTO_INCREMENT,
     id char(36) NOT NULL,
-    start_date datetime, /*NOT NULL*/
     external_key varchar(64) NOT NULL,
     account_id char(36) NOT NULL,
     last_sys_update_date datetime,
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg
index 367330f..1ecf151 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg
@@ -2,7 +2,6 @@ group BundleSqlDao;
 
 fields(prefix) ::= <<
     <prefix>id,
-    <prefix>start_date,
     <prefix>external_key,
     <prefix>account_id,
     <prefix>last_sys_update_date
@@ -10,7 +9,7 @@ fields(prefix) ::= <<
 
 insertBundle() ::= <<
     insert into bundles (<fields()>)
-    values (:id, :startDate, :externalKey, :accountId, :lastSysUpdateDate);
+    values (:id, :externalKey, :accountId, :lastSysUpdateDate);
 >>
 
 updateBundleLastSysTime()  ::= <<
@@ -65,4 +64,4 @@ auditFields(prefix) ::= <<
 insertAuditFromTransaction() ::= <<
     INSERT INTO audit_log(<auditFields()>)
     VALUES(:tableName, :recordId, :changeType, :createdDate, :userName, :reasonCode, :comment, :userToken);
->>
\ No newline at end of file
+>>
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 27727e7..2a26425 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,8 +18,6 @@ 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.BlockingApi;
 import com.ning.billing.junction.api.BlockingState;
@@ -44,10 +42,6 @@ public class BlockingSubscriptionBundle implements SubscriptionBundle {
         return subscriptionBundle.getId();
     }
 
-    public DateTime getStartDate() {
-        return subscriptionBundle.getStartDate();
-    }
-
     public String getKey() {
         return subscriptionBundle.getKey();
     }
@@ -64,4 +58,46 @@ public class BlockingSubscriptionBundle implements SubscriptionBundle {
         return blockingState;
     }
 
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("BlockingSubscriptionBundle");
+        sb.append("{blockingApi=").append(blockingApi);
+        sb.append(", subscriptionBundle=").append(subscriptionBundle);
+        sb.append(", blockingState=").append(blockingState);
+        sb.append('}');
+        return sb.toString();
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        final BlockingSubscriptionBundle that = (BlockingSubscriptionBundle) o;
+
+        if (blockingApi != null ? !blockingApi.equals(that.blockingApi) : that.blockingApi != null) {
+            return false;
+        }
+        if (blockingState != null ? !blockingState.equals(that.blockingState) : that.blockingState != null) {
+            return false;
+        }
+        if (subscriptionBundle != null ? !subscriptionBundle.equals(that.subscriptionBundle) : that.subscriptionBundle != null) {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = subscriptionBundle != null ? subscriptionBundle.hashCode() : 0;
+        result = 31 * result + (blockingApi != null ? blockingApi.hashCode() : 0);
+        result = 31 * result + (blockingState != null ? blockingState.hashCode() : 0);
+        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 d625137..60da96b 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
@@ -61,11 +61,6 @@ public class MockEntitlementUserApi implements EntitlementUserApi {
             }
 
             @Override
-            public DateTime getStartDate() {
-                throw new UnsupportedOperationException();
-            }
-
-            @Override
             public String getKey() {
                 return key;
             }