@Override public Message deleteMessage(Message message) throws PortalException, SystemException { // Message messagePersistence.remove(message); // Attachments attachmentLocalService.deleteAttachments(message.getCompanyId(), message.getMessageId()); // Indexer Indexer indexer = IndexerRegistryUtil.getIndexer(Message.class); indexer.delete(message); return message; }
public Message saveDraft( long accountId, long messageId, String to, String cc, String bcc, String subject, String body, List<MailFile> mailFiles) throws PortalException, SystemException { Account account = AccountLocalServiceUtil.getAccount(accountId); StringBundler sb = new StringBundler(); sb.append(user.getFullName()); sb.append(" <"); sb.append(account.getAddress()); sb.append(StringPool.GREATER_THAN); String sender = sb.toString(); Address[] toAddresses = parseAddresses(to); Address[] ccAddresses = parseAddresses(cc); Address[] bccAddresses = parseAddresses(bcc); if ((toAddresses.length == 0) && (ccAddresses.length == 0) && (bccAddresses.length == 0)) { throw new MailException(MailException.MESSAGE_HAS_NO_RECIPIENTS); } Message message = null; if (messageId != 0) { message = MessageLocalServiceUtil.updateMessage( messageId, account.getDraftFolderId(), sender, InternetAddressUtil.toString(toAddresses), InternetAddressUtil.toString(ccAddresses), InternetAddressUtil.toString(bccAddresses), null, subject, body, String.valueOf(MailConstants.FLAG_DRAFT), 0); } else { message = MessageLocalServiceUtil.addMessage( user.getUserId(), account.getDraftFolderId(), sender, to, cc, bcc, null, subject, body, String.valueOf(MailConstants.FLAG_DRAFT), 0); } if (mailFiles == null) { return message; } for (MailFile mailFile : mailFiles) { AttachmentLocalServiceUtil.addAttachment( user.getUserId(), message.getMessageId(), null, mailFile.getFileName(), mailFile.getSize(), mailFile.getFile()); } return message; }
@Override protected void doDelete(Object obj) throws Exception { SearchContext searchContext = new SearchContext(); searchContext.setSearchEngineId(getSearchEngineId()); if (obj instanceof Account) { Account account = (Account) obj; BooleanQuery booleanQuery = BooleanQueryFactoryUtil.create(searchContext); booleanQuery.addRequiredTerm(Field.PORTLET_ID, PORTLET_ID); booleanQuery.addRequiredTerm("accountId", account.getAccountId()); Hits hits = SearchEngineUtil.search( getSearchEngineId(), account.getCompanyId(), booleanQuery, QueryUtil.ALL_POS, QueryUtil.ALL_POS); for (int i = 0; i < hits.getLength(); i++) { Document document = hits.doc(i); SearchEngineUtil.deleteDocument( getSearchEngineId(), account.getCompanyId(), document.get(Field.UID)); } } else if (obj instanceof Folder) { Folder folder = (Folder) obj; BooleanQuery booleanQuery = BooleanQueryFactoryUtil.create(searchContext); booleanQuery.addRequiredTerm(Field.PORTLET_ID, PORTLET_ID); booleanQuery.addRequiredTerm("folderId", folder.getFolderId()); Hits hits = SearchEngineUtil.search( getSearchEngineId(), folder.getCompanyId(), booleanQuery, QueryUtil.ALL_POS, QueryUtil.ALL_POS); for (int i = 0; i < hits.getLength(); i++) { Document document = hits.doc(i); SearchEngineUtil.deleteDocument( getSearchEngineId(), folder.getCompanyId(), document.get(Field.UID)); } } else if (obj instanceof Message) { Message message = (Message) obj; Document document = new DocumentImpl(); document.addUID(PORTLET_ID, message.getMessageId()); SearchEngineUtil.deleteDocument( getSearchEngineId(), message.getCompanyId(), document.get(Field.UID)); } }