@Override public BlockingState getBlockingStateForService(final UUID blockableId, final BlockingStateType blockingStateType, final String serviceName, final InternalTenantContext context) { if (blockingState != null && blockingState.getBlockedId().equals(blockableId)) { return blockingState; } else { return new DefaultBlockingState(null, blockingStateType, OverdueWrapper.CLEAR_STATE_NAME, serviceName, false, false, false, null); } }
public DefaultBlockingState(final BlockingState input, final DateTime effectiveDate) { this(input.getBlockedId(), input.getType(), input.getStateName(), input.getService(), input.isBlockChange(), input.isBlockEntitlement(), input.isBlockBilling(), effectiveDate); }
final Map<UUID, List<BlockingState>> getPerTypeBlockingEvents(final BlockingStateType type, final List<BlockingState> blockingEvents) { final Iterable<BlockingState> bundleBlockingEvents = Iterables.filter(blockingEvents, new Predicate<BlockingState>() { @Override public boolean apply(final BlockingState input) { return type == input.getType(); } }); final Map<UUID, List<BlockingState>> perTypeBlockingEvents = new HashMap<UUID, List<BlockingState>>(); for (final BlockingState cur : bundleBlockingEvents) { if (!perTypeBlockingEvents.containsKey(cur.getBlockedId())) { perTypeBlockingEvents.put(cur.getBlockedId(), new ArrayList<BlockingState>()); } perTypeBlockingEvents.get(cur.getBlockedId()).add(cur); } return perTypeBlockingEvents; }
public void addBlockingState(final BlockingState currentBlockingState) { final BlockingState firstBlockingState = perObjectTypeFirstBlockingState.get(currentBlockingState.getBlockedId()); if (currentBlockingState.isBlockBilling() && firstBlockingState == null) { perObjectTypeFirstBlockingState.put(currentBlockingState.getBlockedId(), currentBlockingState); } else if (!currentBlockingState.isBlockBilling() && firstBlockingState != null) { addDisabledDuration(firstBlockingState, currentBlockingState.getEffectiveDate()); perObjectTypeFirstBlockingState.put(currentBlockingState.getBlockedId(), null); } }
@Override public boolean apply(final BlockingState input) { return input.getBlockedId().equals(blockedId); } }));
@Override public synchronized void setBlockingStatesAndPostBlockingTransitionEvent(final Map<BlockingState, Optional<UUID>> states, final InternalCallContext context) { for (final BlockingState state : states.keySet()) { if (blockingStates.get(state.getBlockedId()) == null) { blockingStates.put(state.getBlockedId(), new ArrayList<BlockingState>()); } blockingStates.get(state.getBlockedId()).add(state); if (blockingStatesPerAccountRecordId.get(context.getAccountRecordId()) == null) { blockingStatesPerAccountRecordId.put(context.getAccountRecordId(), new ArrayList<BlockingState>()); } blockingStatesPerAccountRecordId.get(context.getAccountRecordId()).add(state); } }
private void computeEvents(final LinkedList<SubscriptionEvent> allEvents, final Collection<BlockingState> blockingStates) { final Collection<UUID> allEntitlementUUIDs = new HashSet<UUID>(); for (final SubscriptionEvent subscriptionEvent : allEvents) { allEntitlementUUIDs.add(subscriptionEvent.getEntitlementId()); } for (final BlockingState blockingState : blockingStates) { if (blockingState.getType() == BlockingStateType.SUBSCRIPTION) { allEntitlementUUIDs.add(blockingState.getBlockedId()); } } BlockingStateOrdering.INSTANCE.computeEvents(new LinkedList<UUID>(allEntitlementUUIDs), blockingStates, internalCallContext, allEvents); } }
private void doCheckFutureBlockingStatesToCancel(final DefaultEntitlement addOnEntitlement, final DateTime effectiveCancellationDateTime, final Collection<BlockingState> blockingStatesForCancellation) { if (addOnEntitlement == null || effectiveCancellationDateTime == null) { Assert.assertEquals(blockingStatesForCancellation.size(), 0); } else { Assert.assertEquals(blockingStatesForCancellation.size(), 1); final BlockingState blockingState = blockingStatesForCancellation.iterator().next(); Assert.assertEquals(blockingState.getBlockedId(), addOnEntitlement.getId()); Assert.assertEquals(blockingState.getEffectiveDate(), effectiveCancellationDateTime); Assert.assertEquals(blockingState.getType(), BlockingStateType.SUBSCRIPTION); Assert.assertEquals(blockingState.getService(), KILLBILL_SERVICES.ENTITLEMENT_SERVICE.getServiceName()); Assert.assertEquals(blockingState.getStateName(), DefaultEntitlementApi.ENT_STATE_CANCELLED); } }
public DefaultBlockingState(final BlockingState input, final DateTime effectiveDate) { this(input.getBlockedId(), input.getType(), input.getStateName(), input.getService(), input.isBlockChange(), input.isBlockEntitlement(), input.isBlockBilling(), effectiveDate); }
private void checkBlockingStatesDAO(final DefaultEntitlement baseEntitlement, final DefaultEntitlement addOnEntitlement, final LocalDate effectiveBaseCancellationDate, final LocalDate effectiveAddOnCancellationDate, final boolean isBaseCancelled) { final List<BlockingState> blockingStatesForBaseEntitlement = blockingStatesForBlockedId(baseEntitlement.getId()); Assert.assertEquals(blockingStatesForBaseEntitlement.size(), isBaseCancelled ? 2 : 1); if (isBaseCancelled) { Assert.assertEquals(blockingStatesForBaseEntitlement.get(1).getBlockedId(), baseEntitlement.getId()); Assert.assertEquals(blockingStatesForBaseEntitlement.get(1).getEffectiveDate().toLocalDate(), effectiveBaseCancellationDate); Assert.assertEquals(blockingStatesForBaseEntitlement.get(1).getType(), BlockingStateType.SUBSCRIPTION); Assert.assertEquals(blockingStatesForBaseEntitlement.get(1).getService(), KILLBILL_SERVICES.ENTITLEMENT_SERVICE.getServiceName()); Assert.assertEquals(blockingStatesForBaseEntitlement.get(1).getStateName(), DefaultEntitlementApi.ENT_STATE_CANCELLED); } final List<BlockingState> blockingStatesForAddOn = blockingStatesForBlockedId(addOnEntitlement.getId()); Assert.assertEquals(blockingStatesForAddOn.size(), 2); Assert.assertEquals(blockingStatesForAddOn.get(1).getBlockedId(), addOnEntitlement.getId()); Assert.assertEquals(blockingStatesForAddOn.get(1).getEffectiveDate().toLocalDate(), effectiveAddOnCancellationDate); Assert.assertEquals(blockingStatesForAddOn.get(1).getType(), BlockingStateType.SUBSCRIPTION); Assert.assertEquals(blockingStatesForAddOn.get(1).getService(), KILLBILL_SERVICES.ENTITLEMENT_SERVICE.getServiceName()); Assert.assertEquals(blockingStatesForAddOn.get(1).getStateName(), DefaultEntitlementApi.ENT_STATE_CANCELLED); }
private void verifyBlockingStates(final Iterable<BlockingState> result, final List<BlockingState> expected) { int i = 0; final Iterator<BlockingState> iterator = result.iterator(); while (iterator.hasNext()) { final BlockingState cur = iterator.next(); final BlockingState expectedItem = expected.get(i); assertEquals(cur.isBlockBilling(), expectedItem.isBlockBilling()); assertEquals(cur.isBlockEntitlement(), expectedItem.isBlockEntitlement()); assertEquals(cur.isBlockChange(), expectedItem.isBlockChange()); assertEquals(cur.getService(), expectedItem.getService()); assertEquals(cur.getStateName(), expectedItem.getStateName()); assertEquals(cur.getBlockedId(), expectedItem.getBlockedId()); assertEquals(internalCallContext.toLocalDate(cur.getEffectiveDate()).compareTo(internalCallContext.toLocalDate(expectedItem.getEffectiveDate())), 0); i++; } assertEquals(i, expected.size()); }
private void doCheckActualBlockingStatesToCancel(final DefaultEntitlement addOnEntitlement, final DateTime effectiveCancellationDateTime, final boolean approximateDateCheck, final Collection<BlockingState> blockingStatesForCancellation) { if (effectiveCancellationDateTime == null) { Assert.assertEquals(blockingStatesForCancellation.size(), 0); } else { Assert.assertEquals(blockingStatesForCancellation.size(), 1); final BlockingState blockingState = blockingStatesForCancellation.iterator().next(); Assert.assertEquals(blockingState.getBlockedId(), addOnEntitlement.getId()); if (approximateDateCheck) { Assert.assertEquals(blockingState.getEffectiveDate().toLocalDate(), effectiveCancellationDateTime.toLocalDate()); Assert.assertEquals(blockingState.getEffectiveDate().getMinuteOfDay(), effectiveCancellationDateTime.getMinuteOfDay()); } else { Assert.assertEquals(blockingState.getEffectiveDate(), effectiveCancellationDateTime); } Assert.assertEquals(blockingState.getType(), BlockingStateType.SUBSCRIPTION); Assert.assertEquals(blockingState.getService(), KILLBILL_SERVICES.ENTITLEMENT_SERVICE.getServiceName()); Assert.assertEquals(blockingState.getStateName(), DefaultEntitlementApi.ENT_STATE_CANCELLED); } }
final List<BlockingState> blockingStates1 = blockingStateDao.getBlockingAllForAccountRecordId(catalog, internalCallContext); Assert.assertEquals(blockingStates1.size(), 1); Assert.assertEquals(blockingStates1.get(0).getBlockedId(), blockableId); Assert.assertEquals(blockingStates1.get(0).getStateName(), state); Assert.assertEquals(blockingStates1.get(0).getService(), serviceA); final List<BlockingState> blockingStates2 = blockingStateDao.getBlockingAllForAccountRecordId(catalog, internalCallContext); Assert.assertEquals(blockingStates2.size(), 1); Assert.assertEquals(blockingStates2.get(0).getBlockedId(), blockableId); Assert.assertEquals(blockingStates2.get(0).getStateName(), state); Assert.assertEquals(blockingStates2.get(0).getService(), serviceA); final List<BlockingState> blockingStates3 = blockingStateDao.getBlockingAllForAccountRecordId(catalog, internalCallContext); Assert.assertEquals(blockingStates3.size(), 2); Assert.assertEquals(blockingStates3.get(0).getBlockedId(), blockableId); Assert.assertEquals(blockingStates3.get(0).getStateName(), state); Assert.assertEquals(blockingStates3.get(0).getService(), serviceA); Assert.assertEquals(blockingStates3.get(0).getEffectiveDate(), stateDateTime); Assert.assertEquals(blockingStates3.get(1).getBlockedId(), blockableId); Assert.assertEquals(blockingStates3.get(1).getStateName(), state); Assert.assertEquals(blockingStates3.get(1).getService(), serviceB); final List<BlockingState> blockingStates4 = blockingStateDao.getBlockingAllForAccountRecordId(catalog, internalCallContext); Assert.assertEquals(blockingStates4.size(), 2); Assert.assertEquals(blockingStates4.get(0).getBlockedId(), blockableId); Assert.assertEquals(blockingStates4.get(0).getStateName(), state); Assert.assertEquals(blockingStates4.get(0).getService(), serviceA); Assert.assertEquals(blockingStates4.get(0).getEffectiveDate(), stateDateTime); Assert.assertEquals(blockingStates4.get(1).getBlockedId(), blockableId);
public BlockingStateJson(final BlockingState input, final AccountAuditLogs accountAuditLogs) { this(input.getBlockedId(), input.getStateName(), input.getService(), input.isBlockChange(), input.isBlockEntitlement(), input.isBlockBilling(), input.getEffectiveDate(), input.getType(), toAuditLogJson(accountAuditLogs == null ? null : accountAuditLogs.getAuditLogsForBlockingState(input.getId()))); }