public Label put(Label label) { return labels.put(label.getId(), label); }
/** * Returns map of label (ID, name) pairs. * * @return */ public Map<Integer, String> getNameMap() { Map<Integer, String> nameMap = new HashMap<Integer, String>(labels.size()); for (Label label : labels.values()) { nameMap.put(label.getId(), label.getName()); } return nameMap; }
@Override public Message filter(Message message) { if (message.getMinorHeader(MimeParser.MIME_HEADER_SPAM) != null && message.getMinorHeader(MimeParser.MIME_HEADER_SPAM).equalsIgnoreCase(MIME_HEADER_SPAM_VALUE)) { logger.debug("Applying filter for SPAM"); message.addLabel(ReservedLabels.SPAM.getId()); } return message; } }
@Override public Message filter(Message message) { // by default store in Inbox if(message.getLabels().isEmpty()) { message.addLabel(ReservedLabels.INBOX.getId()); // add to POP3 if enabled if (Configurator.isLmtpPop3Enabled()) { logger.debug("Adding message received via LMTP to POP3"); message.addLabel(ReservedLabels.POP3.getId()); } } return message; } }
message.addLabel(ReservedLabels.NOTIFICATIONS.getId());
@Override public void remove(String... uids) throws IOException { logger.debug("POP3: Removing messages {} from {}", uids, mailbox); Set<Integer> labels = new HashSet<Integer>(1); labels.add(ReservedLabels.POP3.getId()); List<UUID> uuids = new ArrayList<UUID>(uids.length); for (String uid : uids) { uuids.add(Base64UUIDUtils.decode(uid)); } dao.modify(mailbox, uuids, new MessageModification.Builder().removeLabels(labels).build()); }
/** * Initialise a list of messages visible for the current session * * @return List of messages */ private List<MessageMetaData> getPOP3MessageList() { // get list of messages Map<UUID, Message> messages = dao.getMessageIdsWithMetadata( mailbox, ReservedLabels.POP3.getId(), null, MAX_POP3_SESSION_MESSAGES, true, false); // convert to James Protocols list List<MessageMetaData> list = new ArrayList<MessageMetaData>(messages.size()); for (Map.Entry<UUID, Message> entry : messages.entrySet()) { MessageMetaData md = new MessageMetaData( Base64UUIDUtils.encode(entry.getKey()), entry.getValue().getSize()); list.add(md); } return list; }
Label label = new Label(l.getId(), l.getName()); labels.put(label);
@Override public void setCounters(Mailbox mailbox, LabelMap newCounters) { Map<Integer, LabelCounters> existingCounters = LabelCounterPersistence.getAll(mailbox.getId()); // begin batch operation Mutator<String> m = createMutator(keyspace, strSe); // update with the new counter values for (Label label : newCounters.values()) { int labelId = label.getId(); LabelCounters diff = new LabelCounters(label.getCounters()); if (existingCounters.containsKey(labelId)) { diff.add(existingCounters.get(labelId).getInverse()); } logger.debug( "Recalculated counters for label {}:\n\tCurrent: {}\n\tCalculated: {}\n\tDiff: {}", new Object[] { labelId, existingCounters.get(labelId), label.getCounters(), diff }); LabelCounterPersistence.add(m, mailbox.getId(), labelId, diff); } // reset non-existing counters for (int labelId : existingCounters.keySet()) { if (!newCounters.containsId(labelId)) { LabelCounterPersistence.subtract( m, mailbox.getId(), labelId, existingCounters.get(labelId)); } } m.execute(); }
ReservedLabels.ALL_MAILS.getId(), start, BatchConstants.BATCH_READS, true);
@Override public void update(Mailbox mailbox, Label label) throws IOException { // get all existing labels LabelMap existingLabels = AccountPersistence.getLabels(mailbox.getId()); // validate only if name is changed (skips letter case changes) if (label.getName() != null && !existingLabels.containsName(label.getName())) { LabelUtils.validateLabelName(label.getName(), existingLabels); } // check if label id reserved if (ReservedLabels.contains(label.getId())) { throw new ExistingLabelException("This is reserved label and can't be modified"); } // check if label id exists if (!existingLabels.containsId(label.getId())) { throw new IllegalLabelException("Label does not exist"); } // begin batch operation Mutator<String> mutator = createMutator(keyspace, strSe); // set new name AccountPersistence.putLabel(mutator, mailbox.getId(), label); // commit batch operation mutator.execute(); }
@Override public int add(Mailbox mailbox, Label label) { // get all existing labels LabelMap existingLabels = AccountPersistence.getLabels(mailbox.getId()); LabelUtils.validateLabelName(label.getName(), existingLabels); try { // generate new label id int labelId = LabelUtils.getNewLabelId(existingLabels.getIds()); label.setId(labelId); } catch (IllegalLabelException ile) { // log and rethrow logger.warn("{} reached max random label id attempts with {} labels", mailbox, existingLabels.size()); throw ile; } // begin batch operation Mutator<String> mutator = createMutator(keyspace, strSe); // add new label AccountPersistence.putLabel(mutator, mailbox.getId(), label); // commit batch operation mutator.execute(); return label.getId(); }
if ((labelId == ReservedLabels.ALL_MAILS.getId()) && (labelCounters.getTotalBytes() != 0)) { HCounterColumn<Composite> col = countersToCompositeColumn( labelId, CN_SUBTYPE_BYTES, labelCounters.getTotalBytes());
if (mod.getLabelsToRemove().contains(ReservedLabels.ALL_MAILS.getId())) { throw new IllegalLabelException("This label cannot be removed");
if (labelId == ReservedLabels.ALL_MAILS.getId()) { c = countersToCompositeColumn(labelId, CN_SUBTYPE_BYTES, labelCounters.getTotalMessages()); mutator.addDeletion(mailbox, CF_COUNTERS, c.getName(), new CompositeSerializer());