diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java
index 3162a75..368dbb5 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java
@@ -13,12 +13,12 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.entitlement.api.timeline;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -48,20 +48,17 @@ import com.ning.billing.entitlement.glue.DefaultEntitlementModule;
import com.ning.billing.util.callcontext.CallContext;
public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
-
private final EntitlementDao dao;
private final SubscriptionFactory factory;
private final RepairEntitlementLifecycleDao repairDao;
private final CatalogService catalogService;
-
private enum RepairType {
BASE_REPAIR,
ADD_ON_REPAIR,
STANDALONE_REPAIR
}
-
@Inject
public DefaultEntitlementTimelineApi(@Named(DefaultEntitlementModule.REPAIR_NAMED) final SubscriptionFactory factory, final CatalogService catalogService,
@Named(DefaultEntitlementModule.REPAIR_NAMED) final RepairEntitlementLifecycleDao repairDao, final EntitlementDao dao) {
@@ -71,11 +68,8 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
this.factory = factory;
}
-
@Override
- public BundleTimeline getBundleRepair(final UUID bundleId)
- throws EntitlementRepairException {
-
+ public BundleTimeline getBundleRepair(final UUID bundleId) throws EntitlementRepairException {
try {
final SubscriptionBundle bundle = dao.getSubscriptionBundleFromId(bundleId);
if (bundle == null) {
@@ -93,19 +87,14 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
}
}
-
@Override
- public BundleTimeline repairBundle(final BundleTimeline input, final boolean dryRun, final CallContext context)
- throws EntitlementRepairException {
-
+ public BundleTimeline repairBundle(final BundleTimeline input, final boolean dryRun, final CallContext context) throws EntitlementRepairException {
try {
-
final SubscriptionBundle bundle = dao.getSubscriptionBundleFromId(input.getBundleId());
if (bundle == null) {
throw new EntitlementRepairException(ErrorCode.ENT_REPAIR_UNKNOWN_BUNDLE, input.getBundleId());
}
-
// Subscriptions are ordered with BASE subscription first-- if exists
final List<Subscription> subscriptions = dao.getSubscriptions(factory, input.getBundleId());
if (subscriptions.size() == 0) {
@@ -127,8 +116,6 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
final List<SubscriptionDataRepair> addOnSubscriptionInRepair = new LinkedList<SubscriptionDataRepair>();
final List<SubscriptionDataRepair> inRepair = new LinkedList<SubscriptionDataRepair>();
for (final Subscription cur : subscriptions) {
-
- //
final SubscriptionTimeline curRepair = findAndCreateSubscriptionRepair(cur.getId(), input.getSubscriptions());
if (curRepair != null) {
final SubscriptionDataRepair curInputRepair = ((SubscriptionDataRepair) cur);
@@ -163,7 +150,6 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
validateFirstNewEvent(curInputRepair, curRepair.getNewEvents().get(0), lastRemainingBPEventTime, lastRemainingEventTime);
}
-
final SubscriptionDataRepair curOutputRepair = createSubscriptionDataRepair(curInputRepair, newBundleStartDate, newSubscriptionStartDate, remaining);
repairDao.initializeRepair(curInputRepair.getId(), remaining);
inRepair.add(curOutputRepair);
@@ -191,7 +177,6 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
addOnSubscriptionInRepair.add(curOutputRepair);
}
}
-
break;
case ADD_ON_REPAIR:
// We need to set the baseSubscription as it is useful to calculate addon validity
@@ -201,17 +186,14 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
case STANDALONE_REPAIR:
default:
break;
-
}
validateBasePlanRecreate(isBasePlanRecreate, subscriptions, input.getSubscriptions());
validateInputSubscriptionsKnown(subscriptions, input.getSubscriptions());
-
final Collection<NewEvent> newEvents = createOrderedNewEventInput(input.getSubscriptions());
- final Iterator<NewEvent> it = newEvents.iterator();
- while (it.hasNext()) {
- final DefaultNewEvent cur = (DefaultNewEvent) it.next();
+ for (final NewEvent newEvent : newEvents) {
+ final DefaultNewEvent cur = (DefaultNewEvent) newEvent;
final SubscriptionDataRepair curDataRepair = findSubscriptionDataRepair(cur.getSubscriptionId(), inRepair);
if (curDataRepair == null) {
throw new EntitlementRepairException(ErrorCode.ENT_REPAIR_UNKNOWN_SUBSCRIPTION, cur.getSubscriptionId());
@@ -220,7 +202,6 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
}
if (dryRun) {
-
baseSubscriptionRepair.addFutureAddonCancellation(addOnSubscriptionInRepair, context);
final List<SubscriptionTimeline> repairs = createGetSubscriptionRepairList(subscriptions, convertDataRepair(inRepair));
@@ -236,7 +217,6 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
}
}
-
private RepairType getRepairType(final Subscription firstSubscription, final boolean gotBaseSubscription) {
if (firstSubscription.getCategory() == ProductCategory.BASE) {
return gotBaseSubscription ? RepairType.BASE_REPAIR : RepairType.ADD_ON_REPAIR;
@@ -247,7 +227,6 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
private void validateBasePlanRecreate(final boolean isBasePlanRecreate, final List<Subscription> subscriptions, final List<SubscriptionTimeline> input)
throws EntitlementRepairException {
-
if (!isBasePlanRecreate) {
return;
}
@@ -263,10 +242,8 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
}
}
-
private void validateInputSubscriptionsKnown(final List<Subscription> subscriptions, final List<SubscriptionTimeline> input)
throws EntitlementRepairException {
-
for (final SubscriptionTimeline cur : input) {
boolean found = false;
for (final Subscription s : subscriptions) {
@@ -306,14 +283,13 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
newEventSet.add(new DefaultNewEvent(cur.getId(), e.getPlanPhaseSpecifier(), e.getRequestedDate(), e.getSubscriptionTransitionType()));
}
}
+
return newEventSet;
}
-
private List<EntitlementEvent> getRemainingEventsAndValidateDeletedEvents(final SubscriptionDataRepair data, final DateTime firstBPDeletedTime,
final List<SubscriptionTimeline.DeletedEvent> deletedEvents)
throws EntitlementRepairException {
-
if (deletedEvents == null || deletedEvents.size() == 0) {
return data.getEvents();
}
@@ -343,13 +319,13 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
result.add(cur);
}
}
+
if (nbDeleted != deletedEvents.size()) {
for (final SubscriptionTimeline.DeletedEvent d : deletedEvents) {
boolean found = false;
for (final SubscriptionTransitionData cur : data.getAllTransitions()) {
if (cur.getId().equals(d.getEventId())) {
found = true;
- continue;
}
}
if (!found) {
@@ -358,10 +334,10 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
}
}
+
return result;
}
-
private String getViewId(final DateTime lastUpdateBundleDate, final List<Subscription> subscriptions) {
final StringBuilder tmp = new StringBuilder();
long lastOrderedId = -1;
@@ -371,6 +347,7 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
tmp.append(lastOrderedId);
tmp.append("-");
tmp.append(lastUpdateBundleDate.toDate().getTime());
+
return tmp.toString();
}
@@ -396,7 +373,6 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
return externalKey;
}
};
-
}
private List<SubscriptionTimeline> createGetSubscriptionRepairList(final List<Subscription> subscriptions, final List<SubscriptionTimeline> inRepair) throws CatalogApiException {
@@ -407,20 +383,22 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
repairIds.add(cur.getId());
result.add(cur);
}
+
for (final Subscription cur : subscriptions) {
if (!repairIds.contains(cur.getId())) {
result.add(new DefaultSubscriptionTimeline((SubscriptionDataRepair) cur, catalogService.getFullCatalog()));
}
}
+
return result;
}
-
private List<SubscriptionTimeline> convertDataRepair(final List<SubscriptionDataRepair> input) throws CatalogApiException {
final List<SubscriptionTimeline> result = new LinkedList<SubscriptionTimeline>();
for (final SubscriptionDataRepair cur : input) {
result.add(new DefaultSubscriptionTimeline(cur, catalogService.getFullCatalog()));
}
+
return result;
}
@@ -430,10 +408,10 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
return cur;
}
}
+
return null;
}
-
private SubscriptionDataRepair createSubscriptionDataRepair(final SubscriptionData curData, final DateTime newBundleStartDate, final DateTime newSubscriptionStartDate, final List<EntitlementEvent> initialEvents) {
final SubscriptionBuilder builder = new SubscriptionBuilder(curData);
builder.setActiveVersion(curData.getActiveVersion() + 1);
@@ -448,10 +426,9 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
cur.setActiveVersion(builder.getActiveVersion());
}
}
- final SubscriptionDataRepair result = (SubscriptionDataRepair) factory.createSubscription(builder, initialEvents);
- return result;
- }
+ return (SubscriptionDataRepair) factory.createSubscription(builder, initialEvents);
+ }
private SubscriptionTimeline findAndCreateSubscriptionRepair(final UUID target, final List<SubscriptionTimeline> input) {
for (final SubscriptionTimeline cur : input) {
@@ -459,6 +436,7 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
return new DefaultSubscriptionTimeline(cur);
}
}
+
return null;
}
}