8,7 → 8,11 |
import ak.hostadmiral.util.ModelSecurityException; |
|
public class MailAliasManager |
implements UserBeforeDeleteListener |
implements |
UserBeforeDeleteListener, |
UserDeletingListener, |
InetDomainBeforeDeleteListener, |
InetDomainDeletingListener |
{ |
private static MailAliasManager mailAliasManager = null; |
private static boolean registered = false; |
45,6 → 49,7 |
private Collection createdListeners = new ArrayList(); |
private Collection modifiedListeners = new ArrayList(); |
private Collection beforeDeleteListeners = new ArrayList(); |
private Collection deletingListeners = new ArrayList(); |
private Collection deletedListeners = new ArrayList(); |
|
private MailAliasManager() |
197,6 → 202,16 |
beforeDeleteListeners.remove(listener); |
} |
|
public void addDeletingListener(MailAliasDeletingListener listener) |
{ |
deletingListeners.add(listener); |
} |
|
public void removeDeletingListener(MailAliasDeletingListener listener) |
{ |
deletingListeners.remove(listener); |
} |
|
public void addDeletedListener(MailAliasDeletedListener listener) |
{ |
deletedListeners.add(listener); |
229,6 → 244,12 |
if(!mailAlias.deleteableBy(editor)) |
throw new ModelSecurityException(); |
|
// inform deleting listeners |
for(Iterator i = deletingListeners.iterator(); i.hasNext(); ) { |
MailAliasDeletingListener listener = (MailAliasDeletingListener)i.next(); |
listener.mailAliasDeleting(editor, mailAlias); |
} |
|
// backup copy |
MailAlias oldMailAlias = new MailAlias(mailAlias); |
|
241,7 → 262,7 |
throw new ModelException(ex); |
} |
|
// inform listeners |
// inform deleted listeners |
for(Iterator i = deletedListeners.iterator(); i.hasNext(); ) { |
MailAliasDeletedListener listener = (MailAliasDeletedListener)i.next(); |
listener.mailAliasDeleted(editor, oldMailAlias); |
309,6 → 330,64 |
return iterateBeforeDelete(editor, mailAliases, known); |
} |
|
public void userDeleting(User editor, User user) |
throws ModelException |
{ |
Collection mailAliases; |
|
try { |
mailAliases = HibernateUtil.currentSession().find( |
"from MailAlias where owner = ?", |
user, Hibernate.entity(User.class) ); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
|
for(Iterator i = mailAliases.iterator(); i.hasNext(); ) { |
delete(editor, (MailAlias)i.next()); |
} |
} |
|
public Collection inetDomainBeforeDelete(User editor, InetDomain domain, Collection known) |
throws ModelException |
{ |
Collection mailAliases; |
|
try { |
mailAliases = HibernateUtil.currentSession().find( |
"from MailAlias where domain = ?", |
domain, Hibernate.entity(InetDomain.class) ); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
|
return iterateBeforeDelete(editor, mailAliases, known); |
} |
|
public void inetDomainDeleting(User editor, InetDomain domain) |
throws ModelException |
{ |
Collection mailAliases; |
|
try { |
mailAliases = HibernateUtil.currentSession().find( |
"from MailAlias where domain = ?", |
domain, Hibernate.entity(InetDomain.class) ); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
|
for(Iterator i = mailAliases.iterator(); i.hasNext(); ) { |
delete(editor, (MailAlias)i.next()); |
} |
} |
|
private Collection iterateBeforeDelete(User editor, Collection mailAliases, Collection known) |
throws ModelException |
{ |