44,7 → 44,10 |
register(); |
} |
|
private Collection createdListeners = new ArrayList(); |
private Collection modifiedListeners = new ArrayList(); |
private Collection beforeDeleteListeners = new ArrayList(); |
private Collection deletedListeners = new ArrayList(); |
|
private MailboxManager() |
{ |
137,6 → 140,8 |
if(!mailbox.editableBy(editor)) |
throw new ModelSecurityException(); |
|
boolean isNew = mailbox.isNew(); |
|
//mailbox.setModUser(editor); // FIXME |
|
try { |
146,8 → 151,44 |
{ |
throw new ModelException(ex); |
} |
|
// inform listeners |
if(isNew) { |
for(Iterator i = createdListeners.iterator(); i.hasNext(); ) { |
MailboxCreatedListener listener = (MailboxCreatedListener)i.next(); |
listener.mailboxCreated(editor, mailbox); |
} |
} |
else { |
Mailbox oldMailbox = mailbox.getOrigin(); |
if(oldMailbox == null) oldMailbox = mailbox; |
for(Iterator i = modifiedListeners.iterator(); i.hasNext(); ) { |
MailboxModifiedListener listener = (MailboxModifiedListener)i.next(); |
listener.mailboxModified(editor, mailbox, oldMailbox); |
} |
} |
} |
|
public void addCreatedListener(MailboxCreatedListener listener) |
{ |
createdListeners.add(listener); |
} |
|
public void removeCreatedListener(MailboxCreatedListener listener) |
{ |
createdListeners.remove(listener); |
} |
|
public void addModifiedListener(MailboxModifiedListener listener) |
{ |
modifiedListeners.add(listener); |
} |
|
public void removeModifiedListener(MailboxModifiedListener listener) |
{ |
modifiedListeners.remove(listener); |
} |
|
public void addBeforeDeleteListener(MailboxBeforeDeleteListener listener) |
{ |
beforeDeleteListeners.add(listener); |
158,6 → 199,16 |
beforeDeleteListeners.remove(listener); |
} |
|
public void addDeletedListener(MailboxDeletedListener listener) |
{ |
deletedListeners.add(listener); |
} |
|
public void removeDeletedListener(MailboxDeletedListener listener) |
{ |
deletedListeners.remove(listener); |
} |
|
public Collection beforeDelete(User editor, Mailbox mailbox, Collection known) |
throws ModelException |
{ |
176,9 → 227,14 |
public void delete(User editor, Mailbox mailbox) |
throws ModelException |
{ |
// check rights |
if(!mailbox.deleteableBy(editor)) |
throw new ModelSecurityException(); |
|
// backup copy |
Mailbox oldMailbox = new Mailbox(mailbox); |
|
// delete it |
try { |
HibernateUtil.currentSession().delete(mailbox); |
} |
186,6 → 242,12 |
{ |
throw new ModelException(ex); |
} |
|
// inform listeners |
for(Iterator i = deletedListeners.iterator(); i.hasNext(); ) { |
MailboxDeletedListener listener = (MailboxDeletedListener)i.next(); |
listener.mailboxDeleted(editor, oldMailbox); |
} |
} |
|
public Collection listMailboxes(User editor) |