killbill-memoizeit

util: update audit for bundles Populate subscriptions and

8/13/2012 6:13:24 PM

Details

diff --git a/api/src/main/java/com/ning/billing/entitlement/api/timeline/BundleTimeline.java b/api/src/main/java/com/ning/billing/entitlement/api/timeline/BundleTimeline.java
index ff8823f..150af02 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/timeline/BundleTimeline.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/timeline/BundleTimeline.java
@@ -13,6 +13,7 @@
  * License for the specific language governing permissions and limitations
  * under the License.
  */
+
 package com.ning.billing.entitlement.api.timeline;
 
 import java.util.List;
diff --git a/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java b/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java
index c4e6bb2..6bf4220 100644
--- a/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java
+++ b/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java
@@ -19,7 +19,7 @@ package com.ning.billing.util.api;
 import java.util.List;
 import java.util.UUID;
 
-import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.entitlement.api.timeline.BundleTimeline;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoicePayment;
 import com.ning.billing.payment.api.Payment;
@@ -41,7 +41,7 @@ public interface AuditUserApi {
      * @param auditLevel audit level (verbosity)
      * @return all audit logs for these refunds
      */
-    public AuditLogsForBundles getAuditLogsForBundles(final List<SubscriptionBundle> bundles, final AuditLevel auditLevel);
+    public AuditLogsForBundles getAuditLogsForBundles(final List<BundleTimeline> bundles, final AuditLevel auditLevel);
 
     /**
      * Fetch all audit logs for invoice payments.
diff --git a/api/src/main/java/com/ning/billing/util/audit/AuditLogsForBundles.java b/api/src/main/java/com/ning/billing/util/audit/AuditLogsForBundles.java
index 0eecc75..4ae73cb 100644
--- a/api/src/main/java/com/ning/billing/util/audit/AuditLogsForBundles.java
+++ b/api/src/main/java/com/ning/billing/util/audit/AuditLogsForBundles.java
@@ -28,6 +28,11 @@ public interface AuditLogsForBundles {
     public Map<UUID, List<AuditLog>> getBundlesAuditLogs();
 
     /**
+     * @return mapping between subscription id and associated audit logs
+     */
+    public Map<UUID, List<AuditLog>> getSubscriptionsAuditLogs();
+
+    /**
      * @return mapping between subscription event id and associated audit logs
      */
     public Map<UUID, List<AuditLog>> getSubscriptionEventsAuditLogs();
diff --git a/api/src/main/java/com/ning/billing/util/dao/ObjectType.java b/api/src/main/java/com/ning/billing/util/dao/ObjectType.java
index 7fcf838..1eb1537 100644
--- a/api/src/main/java/com/ning/billing/util/dao/ObjectType.java
+++ b/api/src/main/java/com/ning/billing/util/dao/ObjectType.java
@@ -25,6 +25,7 @@ public enum ObjectType {
     INVOICE_ITEM("invoice item"),
     INVOICE_PAYMENT("invoice payment"),
     SUBSCRIPTION("subscription"),
+    SUBSCRIPTION_EVENT("subscription event"),
     PAYMENT_METHOD("payment method"),
     REFUND("refund"),
     TAG_DEFINITION("tag definition");
diff --git a/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java b/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java
index 25b7a8a..7ced15e 100644
--- a/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java
+++ b/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java
@@ -23,7 +23,9 @@ import java.util.UUID;
 
 import javax.inject.Inject;
 
-import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.entitlement.api.timeline.BundleTimeline;
+import com.ning.billing.entitlement.api.timeline.SubscriptionTimeline;
+import com.ning.billing.entitlement.api.timeline.SubscriptionTimeline.ExistingEvent;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoiceItem;
 import com.ning.billing.invoice.api.InvoicePayment;
@@ -58,13 +60,21 @@ public class DefaultAuditUserApi implements AuditUserApi {
     }
 
     @Override
-    public AuditLogsForBundles getAuditLogsForBundles(final List<SubscriptionBundle> bundles, final AuditLevel auditLevel) {
+    public AuditLogsForBundles getAuditLogsForBundles(final List<BundleTimeline> bundles, final AuditLevel auditLevel) {
         final Map<UUID, List<AuditLog>> bundlesAuditLogs = new HashMap<UUID, List<AuditLog>>();
-        for (final SubscriptionBundle bundle : bundles) {
-            bundlesAuditLogs.put(bundle.getId(), getAuditLogs(bundle.getId(), ObjectType.BUNDLE, auditLevel));
+        final Map<UUID, List<AuditLog>> subscriptionsAuditLogs = new HashMap<UUID, List<AuditLog>>();
+        final Map<UUID, List<AuditLog>> subscriptionEventsAuditLogs = new HashMap<UUID, List<AuditLog>>();
+        for (final BundleTimeline bundle : bundles) {
+            bundlesAuditLogs.put(bundle.getBundleId(), getAuditLogs(bundle.getBundleId(), ObjectType.BUNDLE, auditLevel));
+            for (final SubscriptionTimeline subscriptionTimeline : bundle.getSubscriptions()) {
+                subscriptionsAuditLogs.put(subscriptionTimeline.getId(), getAuditLogs(subscriptionTimeline.getId(), ObjectType.SUBSCRIPTION, auditLevel));
+                for (final ExistingEvent event : subscriptionTimeline.getExistingEvents()) {
+                    subscriptionEventsAuditLogs.put(event.getEventId(), getAuditLogs(event.getEventId(), ObjectType.SUBSCRIPTION_EVENT, auditLevel));
+                }
+            }
         }
 
-        return new DefaultAuditLogsForBundles(bundlesAuditLogs);
+        return new DefaultAuditLogsForBundles(bundlesAuditLogs, subscriptionsAuditLogs, subscriptionEventsAuditLogs);
     }
 
     @Override
diff --git a/util/src/main/java/com/ning/billing/util/audit/DefaultAuditLogsForBundles.java b/util/src/main/java/com/ning/billing/util/audit/DefaultAuditLogsForBundles.java
index 4e35a2d..c47e44f 100644
--- a/util/src/main/java/com/ning/billing/util/audit/DefaultAuditLogsForBundles.java
+++ b/util/src/main/java/com/ning/billing/util/audit/DefaultAuditLogsForBundles.java
@@ -23,9 +23,15 @@ import java.util.UUID;
 public class DefaultAuditLogsForBundles implements AuditLogsForBundles {
 
     private final Map<UUID, List<AuditLog>> bundlesAuditLogs;
+    private final Map<UUID, List<AuditLog>> subscriptionsAuditLogs;
+    private final Map<UUID, List<AuditLog>> subscriptionEventsAuditLogs;
 
-    public DefaultAuditLogsForBundles(final Map<UUID, List<AuditLog>> bundlesAuditLogs) {
+    public DefaultAuditLogsForBundles(final Map<UUID, List<AuditLog>> bundlesAuditLogs,
+                                      final Map<UUID, List<AuditLog>> subscriptionsAuditLogs,
+                                      final Map<UUID, List<AuditLog>> subscriptionEventsAuditLogs) {
         this.bundlesAuditLogs = bundlesAuditLogs;
+        this.subscriptionsAuditLogs = subscriptionsAuditLogs;
+        this.subscriptionEventsAuditLogs = subscriptionEventsAuditLogs;
     }
 
     @Override
@@ -34,9 +40,13 @@ public class DefaultAuditLogsForBundles implements AuditLogsForBundles {
     }
 
     @Override
+    public Map<UUID, List<AuditLog>> getSubscriptionsAuditLogs() {
+        return subscriptionsAuditLogs;
+    }
+
+    @Override
     public Map<UUID, List<AuditLog>> getSubscriptionEventsAuditLogs() {
-        // TODO
-        return null;
+        return subscriptionEventsAuditLogs;
     }
 
     @Override
@@ -44,6 +54,8 @@ public class DefaultAuditLogsForBundles implements AuditLogsForBundles {
         final StringBuilder sb = new StringBuilder();
         sb.append("DefaultAuditLogsForBundles");
         sb.append("{bundlesAuditLogs=").append(bundlesAuditLogs);
+        sb.append(", subscriptionsAuditLogs=").append(subscriptionsAuditLogs);
+        sb.append(", subscriptionEventsAuditLogs=").append(subscriptionEventsAuditLogs);
         sb.append('}');
         return sb.toString();
     }
@@ -62,12 +74,21 @@ public class DefaultAuditLogsForBundles implements AuditLogsForBundles {
         if (bundlesAuditLogs != null ? !bundlesAuditLogs.equals(that.bundlesAuditLogs) : that.bundlesAuditLogs != null) {
             return false;
         }
+        if (subscriptionEventsAuditLogs != null ? !subscriptionEventsAuditLogs.equals(that.subscriptionEventsAuditLogs) : that.subscriptionEventsAuditLogs != null) {
+            return false;
+        }
+        if (subscriptionsAuditLogs != null ? !subscriptionsAuditLogs.equals(that.subscriptionsAuditLogs) : that.subscriptionsAuditLogs != null) {
+            return false;
+        }
 
         return true;
     }
 
     @Override
     public int hashCode() {
-        return bundlesAuditLogs != null ? bundlesAuditLogs.hashCode() : 0;
+        int result = bundlesAuditLogs != null ? bundlesAuditLogs.hashCode() : 0;
+        result = 31 * result + (subscriptionsAuditLogs != null ? subscriptionsAuditLogs.hashCode() : 0);
+        result = 31 * result + (subscriptionEventsAuditLogs != null ? subscriptionEventsAuditLogs.hashCode() : 0);
+        return result;
     }
 }
diff --git a/util/src/main/java/com/ning/billing/util/dao/TableName.java b/util/src/main/java/com/ning/billing/util/dao/TableName.java
index 7aec216..5bbf68c 100644
--- a/util/src/main/java/com/ning/billing/util/dao/TableName.java
+++ b/util/src/main/java/com/ning/billing/util/dao/TableName.java
@@ -36,7 +36,7 @@ public enum TableName {
     PAYMENT_METHOD_HISTORY("payment_method_history"),
     PAYMENT_METHODS("payment_methods", ObjectType.PAYMENT_METHOD, PAYMENT_METHOD_HISTORY),
     SUBSCRIPTIONS("subscriptions", ObjectType.SUBSCRIPTION),
-    SUBSCRIPTION_EVENTS("subscription_events"),
+    SUBSCRIPTION_EVENTS("subscription_events", ObjectType.SUBSCRIPTION_EVENT),
     REFUND_HISTORY("refund_history"),
     REFUNDS("refunds", ObjectType.REFUND, REFUND_HISTORY),
     TAG_DEFINITIONS("tag_definitions", ObjectType.TAG_DEFINITION),
diff --git a/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java b/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java
index debece4..f4a79d1 100644
--- a/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java
+++ b/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java
@@ -26,7 +26,7 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
-import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.entitlement.api.timeline.BundleTimeline;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoiceItem;
 import com.ning.billing.invoice.api.InvoicePayment;
@@ -71,9 +71,12 @@ public class TestDefaultAuditUserApi extends AuditLogsTestBase {
 
     @Test(groups = "fast")
     public void testForBundles() throws Exception {
-        final List<SubscriptionBundle> bundles = createMocks(SubscriptionBundle.class);
-
-        // TODO check SubscriptionEventsAuditLogs
+        final List<BundleTimeline> bundles = new ArrayList<BundleTimeline>();
+        for (final UUID objectId : objectIds) {
+            final BundleTimeline entity = Mockito.mock(BundleTimeline.class);
+            Mockito.when(entity.getBundleId()).thenReturn(objectId);
+            bundles.add(entity);
+        }
 
         for (final AuditLevel level : AuditLevel.values()) {
             final AuditLogsForBundles auditLogsForBundles = auditUserApi.getAuditLogsForBundles(bundles, level);
diff --git a/util/src/test/java/com/ning/billing/util/audit/TestDefaultAuditLogsForBundles.java b/util/src/test/java/com/ning/billing/util/audit/TestDefaultAuditLogsForBundles.java
index 5ba4a40..1b84c96 100644
--- a/util/src/test/java/com/ning/billing/util/audit/TestDefaultAuditLogsForBundles.java
+++ b/util/src/test/java/com/ning/billing/util/audit/TestDefaultAuditLogsForBundles.java
@@ -28,7 +28,22 @@ public class TestDefaultAuditLogsForBundles extends AuditLogsTestBase {
     @Test(groups = "fast")
     public void testEquals() throws Exception {
         final Map<UUID, List<AuditLog>> bundlesAuditLogs = createAuditLogsAssociation();
-        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs).getBundlesAuditLogs(), bundlesAuditLogs);
-        Assert.assertNotEquals(new DefaultAuditLogsForBundles(createAuditLogsAssociation()).getBundlesAuditLogs(), bundlesAuditLogs);
+        final Map<UUID, List<AuditLog>> subscriptionsAuditLogs = createAuditLogsAssociation();
+        final Map<UUID, List<AuditLog>> subscriptionEventsAuditLogs = createAuditLogsAssociation();
+        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, subscriptionsAuditLogs, subscriptionEventsAuditLogs).getBundlesAuditLogs(), bundlesAuditLogs);
+        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, subscriptionsAuditLogs, subscriptionEventsAuditLogs).getSubscriptionsAuditLogs(), subscriptionsAuditLogs);
+        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, subscriptionsAuditLogs, subscriptionEventsAuditLogs).getSubscriptionEventsAuditLogs(), subscriptionEventsAuditLogs);
+
+        Assert.assertNotEquals(new DefaultAuditLogsForBundles(createAuditLogsAssociation(), subscriptionsAuditLogs, subscriptionEventsAuditLogs).getBundlesAuditLogs(), bundlesAuditLogs);
+        Assert.assertEquals(new DefaultAuditLogsForBundles(createAuditLogsAssociation(), subscriptionsAuditLogs, subscriptionEventsAuditLogs).getSubscriptionsAuditLogs(), subscriptionsAuditLogs);
+        Assert.assertEquals(new DefaultAuditLogsForBundles(createAuditLogsAssociation(), subscriptionsAuditLogs, subscriptionEventsAuditLogs).getSubscriptionEventsAuditLogs(), subscriptionEventsAuditLogs);
+
+        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, createAuditLogsAssociation(), subscriptionEventsAuditLogs).getBundlesAuditLogs(), bundlesAuditLogs);
+        Assert.assertNotEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, createAuditLogsAssociation(), subscriptionEventsAuditLogs).getSubscriptionsAuditLogs(), subscriptionsAuditLogs);
+        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, createAuditLogsAssociation(), subscriptionEventsAuditLogs).getSubscriptionEventsAuditLogs(), subscriptionEventsAuditLogs);
+
+        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, subscriptionsAuditLogs, createAuditLogsAssociation()).getBundlesAuditLogs(), bundlesAuditLogs);
+        Assert.assertEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, subscriptionsAuditLogs, createAuditLogsAssociation()).getSubscriptionsAuditLogs(), subscriptionsAuditLogs);
+        Assert.assertNotEquals(new DefaultAuditLogsForBundles(bundlesAuditLogs, subscriptionsAuditLogs, createAuditLogsAssociation()).getSubscriptionEventsAuditLogs(), subscriptionEventsAuditLogs);
     }
 }