@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); } }
@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; } }
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); } }); }
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; } }); }