killbill-memoizeit

analytics: separate EventBus from Dao integration We need

11/16/2011 9:19:35 PM

Details

diff --git a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
index f0e9c0e..6ca7414 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
@@ -41,6 +41,7 @@ public class AnalyticsListener
     private final IEntitlementUserApi entitlementApi;
     private final IAccountUserApi accountApi;
     private final IEventBus eventBus;
+    private final BusinessSubscriptionTransitionRecorder bstRecorder;
 
     @Inject
     public AnalyticsListener(final BusinessSubscriptionTransitionDao dao, final IEntitlementUserApi entitlementApi, final IAccountUserApi accountApi, final IEventBus eventBus)
@@ -49,6 +50,7 @@ public class AnalyticsListener
         this.entitlementApi = entitlementApi;
         this.accountApi = accountApi;
         this.eventBus = eventBus;
+        this.bstRecorder = new BusinessSubscriptionTransitionRecorder(dao);
     }
 
     @Subscribe
@@ -158,21 +160,6 @@ public class AnalyticsListener
         final BusinessSubscription prevSubscription = new BusinessSubscription(transition.getPreviousPlan(), transition.getPreviousPhase(), currency, previousEffectiveTransitionTime, transition.getPreviousState(), transition.getSubscriptionId(), transition.getBundleId());
         final BusinessSubscription nextSubscription = new BusinessSubscription(transition.getNextPlan(), transition.getNextPhase(), currency, transition.getEffectiveTransitionTime(), transition.getNextState(), transition.getSubscriptionId(), transition.getBundleId());
 
-        recordTransition(transitionKey, transition.getRequestedTransitionTime(), event, prevSubscription, nextSubscription);
-    }
-
-    // Public for now for internal reasons
-    public void recordTransition(final String key, final DateTime requestedDateTime, final BusinessSubscriptionEvent event, final BusinessSubscription prevSubscription, final BusinessSubscription nextSubscription)
-    {
-        final BusinessSubscriptionTransition transition = new BusinessSubscriptionTransition(
-            key,
-            requestedDateTime,
-            event,
-            prevSubscription,
-            nextSubscription
-        );
-
-        log.info(transition.getEvent() + " " + transition);
-        dao.createTransition(transition);
+        bstRecorder.record(transitionKey, transition.getRequestedTransitionTime(), event, prevSubscription, nextSubscription);
     }
 }
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
new file mode 100644
index 0000000..781926b
--- /dev/null
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at:
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.analytics;
+
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionDao;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BusinessSubscriptionTransitionRecorder
+{
+    private static final Logger log = LoggerFactory.getLogger(BusinessSubscriptionTransitionRecorder.class);
+
+    private final BusinessSubscriptionTransitionDao dao;
+
+    public BusinessSubscriptionTransitionRecorder(final BusinessSubscriptionTransitionDao dao)
+    {
+        this.dao = dao;
+    }
+
+    public void record(final String key, final DateTime requestedDateTime, final BusinessSubscriptionEvent event, final BusinessSubscription prevSubscription, final BusinessSubscription nextSubscription)
+    {
+        final BusinessSubscriptionTransition transition = new BusinessSubscriptionTransition(
+            key,
+            requestedDateTime,
+            event,
+            prevSubscription,
+            nextSubscription
+        );
+
+        log.info(transition.getEvent() + " " + transition);
+        dao.createTransition(transition);
+    }
+}