/** * Delete all indexes * * @param mutator * @param mailbox */ public static void deleteIndexes(Mutator<String> mutator, final String mailbox) { // get all labels LabelMap labels = AccountPersistence.getLabels(mailbox); for (Integer labelId : labels.getIds()) { deleteIndex(mutator, mailbox, labelId); } // delete purge index String key = getLabelKey(mailbox, PurgeIndexPersistence.PURGE_LABEL_ID); mutator.addDeletion(key, CF_LABEL_INDEX, null, strSe); }
LabelIndexPersistence.remove(mutator, mailbox.getId(), validMessageIds, labels.getIds()); for (Integer labelId : labels.getIds()) { LabelCounterPersistence.subtract(mutator, mailbox.getId(), labelId, labels.get(labelId).getCounters()); LabelIndexPersistence.remove(mutator, mailbox.getId(), invalidMessageIds, allLabels.getIds());
@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(); }