/** * {@inheritDoc} */ @Override public int getNewMessagesCountFor(String username) { PrivateMessageStatus[] statuses = PrivateMessageStatus.getNewMessageStatus(); return ((Number) session().getNamedQuery("getNewMessagesCountFor") .setParameter("read", false) .setString("username", username) .setParameterList(STATUSES, statuses) .uniqueResult()) .intValue(); } }
/** * {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public Page<PrivateMessage> getAllFromUser(JCUser userFrom, PageRequest pageRequest) { PrivateMessageStatus[] statuses = PrivateMessageStatus.getOutboxStatus(); int totalCount = getOutboxMessageCount(userFrom, statuses); pageRequest.adjustPageNumber(totalCount); Query query = session().getNamedQuery("getAllFromUser") .setParameterList(STATUSES, statuses) .setEntity("user", userFrom); query.setFirstResult(pageRequest.getOffset()); query.setMaxResults(pageRequest.getPageSize()); List<PrivateMessage> messages = (List<PrivateMessage>) query.list(); return new PageImpl<PrivateMessage>(messages, pageRequest, totalCount); }
/** * {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public Page<PrivateMessage> getAllForUser(JCUser userTo, PageRequest pageRequest) { PrivateMessageStatus[] statuses = PrivateMessageStatus.getInboxStatus(); int totalCount = getInboxMessageCount(userTo, statuses); pageRequest.adjustPageNumber(totalCount); Query query = session().getNamedQuery("getAllToUser") .setParameterList(STATUSES, statuses) .setEntity("user", userTo); query.setFirstResult(pageRequest.getOffset()); query.setMaxResults(pageRequest.getPageSize()); List<PrivateMessage> messages = (List<PrivateMessage>) query.list(); return new PageImpl<PrivateMessage>(messages, pageRequest, totalCount); }
/** * Edit private message page. * * @param id {@link PrivateMessage} id * @return private message form view and populated form dto * @throws NotFoundException when message not found */ @RequestMapping(value = "/pm/drafts/{pmId}/edit", method = RequestMethod.GET) public ModelAndView editDraftPage(@PathVariable(PM_ID) Long id) throws NotFoundException { PrivateMessage pm = pmService.get(id); if (!pm.getStatus().equals(PrivateMessageStatus.DRAFT)) { // todo: 404? we need something more meaninful here throw new NotFoundException("Edit allowed only for draft messages."); } return new ModelAndView(PM_FORM).addObject(DTO, PrivateMessageDto.getFullPmDtoFor(pm)); }
private boolean hasCurrentUserAccessToPM(PrivateMessage privateMessage) throws NotFoundException { JCUser currentUser = userService.getCurrentUser(); PrivateMessageStatus messageStatus = privateMessage.getStatus(); if (currentUser.equals(privateMessage.getUserFrom()) && (messageStatus.equals(PrivateMessageStatus.DELETED_FROM_OUTBOX))) { return false; } return !(currentUserIsAuthor(currentUser, privateMessage) && (messageStatus.equals(PrivateMessageStatus.DELETED_FROM_INBOX))); }
/** * Checks if the private message should be marked as read. * The follwing conditions are checked: * <p>1. Current user is the recepient * <p>2. Message is not read already * <p>3. Message is not a draft * * @param pm private messag to be tested * @return if message should be marked as read */ private boolean ifMessageShouldBeMarkedAsRead(PrivateMessage pm) { return currentUserIsAuthor(userService.getCurrentUser(), pm) && !pm.isRead() && !pm.getStatus().equals(PrivateMessageStatus.DRAFT); }