@Override
public Void inTransaction(final BusinessOverdueStatusSqlDao transactional, final TransactionStatus status) throws Exception {
log.info("Started rebuilding overdue statuses for bundle id {}", bundleId);
transactional.deleteOverdueStatusesForBundle(bundleId.toString(), context);
final List<BlockingState> blockingHistory = junctionApi.getBlockingHistory(bundleId, context.toTenantContext());
if (blockingHistory != null && blockingHistory.size() > 0) {
final List<BlockingState> overdueStates = ImmutableList.<BlockingState>copyOf(blockingHistory);
final List<BlockingState> overdueStatesReversed = Lists.reverse(overdueStates);
DateTime previousStartDate = null;
for (final BlockingState state : overdueStatesReversed) {
final BusinessOverdueStatusModelDao overdueStatus = new BusinessOverdueStatusModelDao(accountKey, bundleId, previousStartDate,
externalKey, state.getTimestamp(), state.getStateName());
log.info("Adding overdue state {}", overdueStatus);
overdueStatusSqlDao.createOverdueStatus(overdueStatus, context);
previousStartDate = state.getTimestamp();
}
}
log.info("Finished rebuilding overdue statuses for bundle id {}", bundleId);
return null;
}
});