@Override public List<MailboxAnnotation> getAnnotationsByKeysWithOneDepth(MailboxPath mailboxPath, MailboxSession session, Set<MailboxAnnotationKey> keys) throws MailboxException { AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); final MailboxId mailboxId = checkThenGetMailboxId(mailboxPath, session); return annotationMapper.execute( () -> annotationMapper.getAnnotationsByKeysWithOneDepth(mailboxId, keys)); }
@Override public void event(Event event) { if (event instanceof EventFactory.MailboxDeletionImpl) { try { AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(event.getSession()); MailboxId mailboxId = ((EventFactory.MailboxDeletionImpl) event).getMailbox().getMailboxId(); deleteRelatedAnnotations(mailboxId, annotationMapper); } catch (MailboxException e) { logger.error("Unable to look up AnnotationMapper", e); } } }
@Override public List<MailboxAnnotation> getAnnotationsByKeys(MailboxPath mailboxPath, MailboxSession session, final Set<MailboxAnnotationKey> keys) throws MailboxException { AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); MailboxId mailboxId = checkThenGetMailboxId(mailboxPath, session); return annotationMapper.execute( () -> annotationMapper.getAnnotationsByKeys(mailboxId, keys)); }
@Override public List<MailboxAnnotation> getAnnotationsByKeysWithAllDepth(MailboxPath mailboxPath, MailboxSession session, Set<MailboxAnnotationKey> keys) throws MailboxException { AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); MailboxId mailboxId = checkThenGetMailboxId(mailboxPath, session); return annotationMapper.execute( () -> annotationMapper.getAnnotationsByKeysWithAllDepth(mailboxId, keys)); } }
@Override public List<MailboxAnnotation> getAllAnnotations(MailboxPath mailboxPath, MailboxSession session) throws MailboxException { AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); MailboxId mailboxId = checkThenGetMailboxId(mailboxPath, session); return annotationMapper.execute( () -> annotationMapper.getAllAnnotations(mailboxId)); }
@Override public void updateAnnotations(MailboxPath mailboxPath, MailboxSession session, List<MailboxAnnotation> mailboxAnnotations) throws MailboxException { AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); MailboxId mailboxId = checkThenGetMailboxId(mailboxPath, session); annotationMapper.execute(Mapper.toTransaction(() -> { for (MailboxAnnotation annotation : mailboxAnnotations) { if (annotation.isNil()) { annotationMapper.deleteAnnotation(mailboxId, annotation.getKey()); } else if (canInsertOrUpdate(mailboxId, annotation, annotationMapper)) { annotationMapper.insertAnnotation(mailboxId, annotation); } } })); }