/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUserManager.java |
---|
31,6 → 31,7 |
throws ModelException |
{ |
UserManager.getInstance().addBeforeDeleteListener(this); |
UserManager.getInstance().addDeletingListener(this); |
} |
public SystemUser create(User editor) |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailboxManager.java |
---|
36,8 → 36,11 |
throws ModelException |
{ |
UserManager.getInstance().addBeforeDeleteListener(this); |
UserManager.getInstance().addDeletingListener(this); |
SystemUserManager.getInstance().addBeforeDeleteListener(this); |
SystemUserManager.getInstance().addDeletingListener(this); |
InetDomainManager.getInstance().addBeforeDeleteListener(this); |
InetDomainManager.getInstance().addDeletingListener(this); |
} |
public Mailbox create(User editor) |
303,6 → 306,7 |
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()); |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/store/hibernate/MailAliasHibernate.java |
---|
14,6 → 14,7 |
import ak.hostadmiral.util.hibernate.HibernateUtil; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.InetDomain; |
import ak.hostadmiral.core.model.Mailbox; |
import ak.hostadmiral.core.model.MailAlias; |
import ak.hostadmiral.core.model.MailAliasManager; |
import ak.hostadmiral.core.model.store.MailAliasStore; |
209,7 → 210,7 |
{ |
throw new ModelStoreException(ex); |
} |
} |
} |
public Collection listMailAliasesForDomain(InetDomain domain) |
throws ModelStoreException |
223,8 → 224,23 |
{ |
throw new ModelStoreException(ex); |
} |
} |
} |
public Collection listMailAliasesForMailbox(Mailbox mailbox) |
throws ModelStoreException |
{ |
try { |
return HibernateUtil.currentSession().find( |
"select a from MailAlias a left join fetch a.owner" |
+ " left join fetch a.destinations as dest where dest.mailbox = ?", |
mailbox, Hibernate.entity(Mailbox.class) ); |
} |
catch(HibernateException ex) |
{ |
throw new ModelStoreException(ex); |
} |
} |
protected static Map sortKeys = new HashMap(); |
protected static Map sortKeysSql = new HashMap(); |
private static boolean sortKeysInitialized = false; |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/store/MailAliasStore.java |
---|
5,6 → 5,7 |
import ak.hostadmiral.util.ModelStoreException; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.InetDomain; |
import ak.hostadmiral.core.model.Mailbox; |
import ak.hostadmiral.core.model.MailAlias; |
public interface MailAliasStore |
40,4 → 41,7 |
public Collection listMailAliasesForDomain(InetDomain domain) |
throws ModelStoreException; |
public Collection listMailAliasesForMailbox(Mailbox mailbox) |
throws ModelStoreException; |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasManager.java |
---|
18,7 → 18,8 |
UserBeforeDeleteListener, |
UserDeletingListener, |
InetDomainBeforeDeleteListener, |
InetDomainDeletingListener |
InetDomainDeletingListener, |
MailboxDeletingListener |
{ |
private MailAliasStore store; |
33,6 → 34,11 |
throws ModelException |
{ |
UserManager.getInstance().addBeforeDeleteListener(this); |
UserManager.getInstance().addDeletingListener(this); |
InetDomainManager.getInstance().addBeforeDeleteListener(this); |
InetDomainManager.getInstance().addDeletingListener(this); |
// FIXME register for mailbox before delete event? or silently delete destinations? |
MailboxManager.getInstance().addDeletingListener(this); |
} |
public MailAlias create(User editor) |
85,6 → 91,8 |
public void save(User editor, MailAlias mailAlias) |
throws ModelException |
{ |
// FIXME: how the onwer can save new destinations if he has no right to save the alias? |
// security check |
if(!mailAlias.editableBy(editor)) |
throw new ModelSecurityException(); |
309,6 → 317,28 |
return cascade; |
} |
public void mailboxDeleting(User editor, Mailbox mailbox) |
throws ModelException |
{ |
Collection mailAliases = store.listMailAliasesForMailbox(mailbox); |
for(Iterator i = mailAliases.iterator(); i.hasNext(); ) { |
MailAlias mailAlias = (MailAlias)i.next(); |
System.out.println("mailboxDeleting: " + mailAlias); |
// FIXME is it possible that editor has right to delete mailbox |
// but has no right to change alias? |
if(mailAlias.mayChangeDestinations(editor)) { |
for(Iterator j = mailAlias.getDestinations(editor).iterator(); j.hasNext(); ) { |
MailAliasDestination dest = (MailAliasDestination)j.next(); |
if(mailbox == dest.getMailbox()) j.remove(); |
} |
save(editor, mailAlias); |
} |
} |
} |
public static final Integer SORT_ADDRESS = new Integer(1); |
public static final Integer SORT_DOMAIN = new Integer(2); |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasDestination.java |
---|
135,7 → 135,7 |
+ (alias == null ? "_none_" : alias.getAddress() + "@" |
+ (alias.getDomain() == null ? "_none_" : alias.getDomain().getName())) |
+ "] mailbox=[" + (mailbox == null ? "_none_" : mailbox.getLogin() + "@" |
+ (mailbox.getDomain() == null ? "_none_" : mailbox.getDomain().getName())) + "]" |
+ (mailbox.getDomain() == null ? "_none_" : mailbox.getDomain().getName())) |
+ "] email=[" + (email == null ? "_none_" : email) + "]"; |
} |
} |