killbill-memoizeit
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java 115(+115 -0)
Details
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
index e92ee96..cbc9f8d 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
@@ -17,6 +17,7 @@
package com.ning.billing.entitlement.api.billing;
import com.ning.billing.catalog.api.BillingPeriod;
+import com.ning.billing.catalog.api.CatalogApiException;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.catalog.api.InternationalPrice;
import org.joda.time.DateTime;
@@ -61,20 +62,6 @@ public interface BillingEvent extends Comparable<BillingEvent> {
/**
*
- * @return the international price for the event
- *
- */
- public InternationalPrice getPrice();
-
- /**
- *
- * @param currency the target currency for invoicing
- * @return the price of the plan phase in the specified currency
- */
- public BigDecimal getPrice(Currency currency);
-
- /**
- *
* @return the billing period for the active phase
*/
public BillingPeriod getBillingPeriod();
@@ -90,4 +77,16 @@ public interface BillingEvent extends Comparable<BillingEvent> {
* @return the description of the billing event
*/
public String getDescription();
+
+ /**
+ *
+ * @return the fixed price for the phase
+ */
+ public InternationalPrice getFixedPrice();
+
+ /**
+ *
+ * @return the recurring price for the phase
+ */
+ public InternationalPrice getRecurringPrice();
}
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
index 7c6cabc..4fed5ff 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
@@ -16,30 +16,20 @@
package com.ning.billing.entitlement.api.billing;
-import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
import org.joda.time.DateTime;
-import com.ning.billing.account.api.IAccount;
-
public interface EntitlementBillingApi {
/**
*
- * @return the list of accounts which have active subscriptions
- */
- public List<IAccount> getActiveAccounts();
-
- /**
- *
- * @param subscriptionId the subscriptionId of interest for a gievn account
- * @return an ordered list of billing event
+ * @param accountId
+ * @return an ordered list of billing events for the given account
*
- * Note: The user api allows to get list of subscription bundle / subscriptions for an account
*/
- public SortedSet<BillingEvent> getBillingEventsForSubscription(UUID subscriptionId);
+ public SortedSet<BillingEvent> getBillingEventsForSubscription(UUID accountId);
public void setChargedThroughDate(UUID subscriptionId, DateTime ctd);
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java b/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
index c94fc9d..6db08fb 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
@@ -68,4 +68,6 @@ public interface Subscription {
public List<SubscriptionTransition> getActiveTransitions();
+ public List<SubscriptionTransition> getAllTransitions();
+
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
new file mode 100644
index 0000000..11633e9
--- /dev/null
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
@@ -0,0 +1,115 @@
+/*
+ * 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.entitlement.api.billing;
+
+import java.math.BigDecimal;
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+
+import com.ning.billing.catalog.api.BillingPeriod;
+import com.ning.billing.catalog.api.CatalogApiException;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.catalog.api.InternationalPrice;
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
+
+public class DefaultBillingEvent implements BillingEvent {
+ final private int billCycleDay;
+ final private UUID subscriptionId;
+ final private DateTime effectiveDate;
+ final private String planPhaseName;
+ final private String planName;
+ final private InternationalPrice fixedPrice;
+ final private InternationalPrice recurringPrice;
+ final private String description;
+ final private BillingMode billingMode;
+ final private BillingPeriod billingPeriod;
+
+ public DefaultBillingEvent(SubscriptionTransition transition) {
+ billCycleDay;
+ subscriptionId = transition.getSubscriptionId();
+ effectiveDate = transition.getEffectiveTransitionTime();
+ planPhaseName = transition.getNextPhase().getName();
+ planName = transition.getNextPlan().getName();
+ fixedPrice = transition.getNextPhase().getFixedPrice();
+ recurringPrice = transition.getNextPhase().getRecurringPrice();
+ description = transition.getTransitionType().toString();
+ billingMode=BillingMode.IN_ADVANCE;
+ billingPeriod = transition.getNextPhase().getBillingPeriod();
+
+ }
+
+ @Override
+ public int compareTo(BillingEvent e1) {
+ if (getSubscriptionId().equals(e1.getSubscriptionId())) {
+ return getEffectiveDate().compareTo(e1.getEffectiveDate());
+ } else {
+ return getSubscriptionId().compareTo(e1.getSubscriptionId());
+ }
+ }
+
+ @Override
+ public int getBillCycleDay() {
+ return billCycleDay;
+ }
+
+ @Override
+ public UUID getSubscriptionId() {
+ return subscriptionId;
+ }
+
+ @Override
+ public DateTime getEffectiveDate() {
+ return effectiveDate;
+ }
+
+ @Override
+ public String getPlanPhaseName() {
+ return planPhaseName;
+ }
+
+ @Override
+ public String getPlanName() {
+ return planName;
+ }
+
+ @Override
+ public BillingPeriod getBillingPeriod() {
+ return billingPeriod;
+ }
+
+ @Override
+ public BillingMode getBillingMode() {
+ return billingMode;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public InternationalPrice getFixedPrice() {
+ return fixedPrice;
+ }
+
+ @Override
+ public InternationalPrice getRecurringPrice() {
+ return recurringPrice;
+ }
+
+}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
index 1704a0a..e16f2b5 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
@@ -16,18 +16,22 @@
package com.ning.billing.entitlement.api.billing;
+import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
+import java.util.TreeSet;
import java.util.UUID;
import org.joda.time.DateTime;
import com.google.inject.Inject;
-import com.ning.billing.account.api.IAccount;
+import com.ning.billing.entitlement.api.user.Subscription;
+import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionData;
import com.ning.billing.entitlement.api.user.SubscriptionFactory.SubscriptionBuilder;
-
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
import com.ning.billing.entitlement.engine.dao.EntitlementDao;
+import com.ning.billing.entitlement.events.EntitlementEvent;
public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
@@ -40,13 +44,29 @@ public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
}
@Override
- public List<IAccount> getActiveAccounts() {
- return null;
+ public SortedSet<BillingEvent> getBillingEventsForSubscription(
+ UUID accountId) {
+
+ List<SubscriptionBundle> bundles = dao.getSubscriptionBundleForAccount(accountId);
+ List<Subscription> subscriptions = new ArrayList<Subscription>();
+ for (SubscriptionBundle bundle: bundles) {
+ subscriptions.addAll(dao.getSubscriptions(bundle.getId()));
+ }
+ List<SubscriptionTransition> transitions = new ArrayList<SubscriptionTransition>();
+ for (Subscription subscription: subscriptions) {
+ transitions.addAll(subscription.getAllTransitions());
+ }
+
+ SortedSet<BillingEvent> result = new TreeSet<BillingEvent>();
+
+ for (SubscriptionTransition transition : transitions) {
+ result.add(createBillingEvent(transition));
+ }
+ return result;
}
- @Override
- public SortedSet<BillingEvent> getBillingEventsForSubscription(
- UUID subscriptionId) {
+ private BillingEvent createBillingEvent(SubscriptionTransition transition) {
+
return null;
}
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 12333a2..7561305 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
@@ -183,6 +183,19 @@ public class SubscriptionData implements Subscription {
return activeTransitions;
}
+ @Override
+ public List<SubscriptionTransition> getAllTransitions() {
+ if (transitions == null) {
+ return Collections.emptyList();
+ }
+
+ List<SubscriptionTransition> result = new ArrayList<SubscriptionTransition>();
+ for (SubscriptionTransition cur : transitions) {
+ result.add(cur);
+ }
+ return result;
+ }
+
public SubscriptionTransition getLatestTranstion() {