261,7 → 261,7 |
{ |
Collection mailboxes = store.listOwnMailboxes(user); |
|
return iterateBeforeDelete(editor, mailboxes, known); |
return iterateBeforeDelete(editor, mailboxes, known, CascadeDeleteElement.DELETE); |
} |
|
public void userDeleting(User editor, User user) |
279,7 → 279,7 |
{ |
Collection mailboxes = store.listMailboxesForDomain(domain); |
|
return iterateBeforeDelete(editor, mailboxes, known); |
return iterateBeforeDelete(editor, mailboxes, known, CascadeDeleteElement.DELETE); |
} |
|
public void inetDomainDeleting(User editor, InetDomain domain) |
297,7 → 297,7 |
{ |
Collection mailboxes = store.listMailboxesForSystemUser(user); |
|
return iterateBeforeDelete(editor, mailboxes, known); |
return iterateBeforeDelete(editor, mailboxes, known, CascadeDeleteElement.CHANGE); |
} |
|
public void systemUserDeleting(User editor, SystemUser user) |
306,12 → 306,13 |
Collection mailboxes = store.listMailboxesForSystemUser(user); |
|
for(Iterator i = mailboxes.iterator(); i.hasNext(); ) { |
// FIXME do not delete, just reset system user (?) |
delete(editor, (Mailbox)i.next()); |
Mailbox mailbox = (Mailbox)i.next(); |
mailbox.setSystemUser(null); |
save(editor, mailbox); |
} |
} |
|
private Collection iterateBeforeDelete(User editor, Collection mailboxes, Collection known) |
private Collection iterateBeforeDelete(User editor, Collection mailboxes, Collection known, int action) |
throws ModelException |
{ |
Collection cascade = new ArrayList(); |
321,7 → 322,9 |
|
known.add(mailbox); |
if(mailbox.viewableBy(editor)) { |
if(mailbox.deleteableBy(editor)) |
if(action == CascadeDeleteElement.CHANGE && mailbox.editableBy(editor)) |
cascade.add(new CascadeDeleteElement(mailbox, CascadeDeleteElement.CHANGE, null)); |
else if(action == CascadeDeleteElement.DELETE && mailbox.deleteableBy(editor)) |
cascade.add(new CascadeDeleteElement(mailbox, CascadeDeleteElement.DELETE, |
this.beforeDelete(editor, mailbox, known))); |
else |