Пример #1
0
 @Override
 public <T extends OverdueCheckNotificationKey> void clearOverdueCheckNotifications(
     final UUID accountId,
     final String overdueQueueName,
     final Class<T> clazz,
     final InternalCallContext context) {
   try {
     final NotificationQueue checkOverdueQueue =
         notificationQueueService.getNotificationQueue(
             DefaultOverdueService.OVERDUE_SERVICE_NAME, overdueQueueName);
     transactionalSqlDao.execute(
         new EntitySqlDaoTransactionWrapper<Void>() {
           @Override
           public Void inTransaction(
               final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory)
               throws Exception {
             final Collection<NotificationEventWithMetadata<T>> futureNotifications =
                 getFutureNotificationsForAccountInTransaction(
                     entitySqlDaoWrapperFactory, checkOverdueQueue, accountId, clazz, context);
             for (final NotificationEventWithMetadata<T> notification : futureNotifications) {
               checkOverdueQueue.removeNotificationFromTransaction(
                   entitySqlDaoWrapperFactory.getSqlDao(), notification.getRecordId());
             }
             return null;
           }
         });
   } catch (NoSuchNotificationQueue e) {
     log.error("Attempting to clear items from a non-existent queue (DefaultOverdueCheck).", e);
   }
 }
Пример #2
0
  @Override
  public <T extends OverdueCheckNotificationKey> void insertOverdueNotification(
      final UUID accountId,
      final DateTime futureNotificationTime,
      final String overdueQueueName,
      final T notificationKey,
      final InternalCallContext context) {

    try {
      final NotificationQueue overdueQueue =
          notificationQueueService.getNotificationQueue(
              DefaultOverdueService.OVERDUE_SERVICE_NAME, overdueQueueName);

      transactionalSqlDao.execute(
          new EntitySqlDaoTransactionWrapper<Void>() {
            @Override
            public Void inTransaction(
                final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory)
                throws Exception {

              // Check if we already have notifications for that key
              final Class<T> clazz = (Class<T>) notificationKey.getClass();
              final Collection<NotificationEventWithMetadata<T>> futureNotifications =
                  getFutureNotificationsForAccountInTransaction(
                      entitySqlDaoWrapperFactory, overdueQueue, accountId, clazz, context);

              boolean shouldInsertNewNotification =
                  cleanupFutureNotificationsFormTransaction(
                      entitySqlDaoWrapperFactory,
                      futureNotifications,
                      futureNotificationTime,
                      overdueQueue);
              if (shouldInsertNewNotification) {
                log.debug(
                    "Queuing overdue check notification. Account id: {}, timestamp: {}",
                    accountId.toString(),
                    futureNotificationTime.toString());
                overdueQueue.recordFutureNotificationFromTransaction(
                    entitySqlDaoWrapperFactory.getSqlDao(),
                    futureNotificationTime,
                    notificationKey,
                    context.getUserToken(),
                    context.getAccountRecordId(),
                    context.getTenantRecordId());
              } else {
                log.debug(
                    "Skipping queuing overdue check notification. Account id: {}, timestamp: {}",
                    accountId.toString(),
                    futureNotificationTime.toString());
              }
              return null;
            }
          });
    } catch (NoSuchNotificationQueue e) {
      log.error("Attempting to put items on a non-existent queue (DefaultOverdueCheck).", e);
      return;
    }
  }
Пример #3
0
 private Long getTagRecordId(final UUID tagId) {
   return transactionalSqlDao.execute(
       new EntitySqlDaoTransactionWrapper<Long>() {
         @Override
         public Long inTransaction(
             final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory)
             throws Exception {
           return entitySqlDaoWrapperFactory
               .become(TagSqlDao.class)
               .getRecordId(tagId.toString(), internalCallContext);
         }
       });
 }
Пример #4
0
 private void insertTag(final TagModelDao modelDao) {
   transactionalSqlDao.execute(
       new EntitySqlDaoTransactionWrapper<Void>() {
         @Override
         public Void inTransaction(
             final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory)
             throws Exception {
           entitySqlDaoWrapperFactory
               .become(TagSqlDao.class)
               .create(modelDao, internalCallContext);
           return null;
         }
       });
 }