1,39 → 1,28 |
package ak.hostadmiral.core.model; |
|
import java.util.*; |
import net.sf.hibernate.*; |
import ak.hostadmiral.util.HibernateUtil; |
import java.util.Collection; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.Map; |
import java.util.Comparator; |
|
import ak.hostadmiral.util.ConfigInit; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.util.ModelException; |
import ak.hostadmiral.util.ModelSecurityException; |
import ak.hostadmiral.core.model.store.MailAliasDestinationStore; |
|
public class MailAliasDestinationManager |
implements |
ConfigInit |
{ |
// FIXME create, delete and modify listeners are not implemented, bacause |
// all operations are done via MailAliasManager. Do we need them? |
|
private static boolean registered = false; |
protected static void register() |
{ |
synchronized(MailAliasDestinationManager.class) { |
if(registered) return; |
private MailAliasDestinationStore store; |
|
registered = true; |
try { |
HibernateUtil.getConfiguration().addResource( |
"ak/hostadmiral/core/model/MailAliasDestination.hbm.xml"); |
} |
catch(Exception ex) { |
ex.printStackTrace(); |
throw new RuntimeException(ex.getMessage()); |
} |
} |
} |
|
static { |
register(); |
} |
|
private MailAliasDestinationManager() |
public MailAliasDestinationManager() |
throws ModelException |
{ |
} |
|
54,17 → 43,8 |
public MailAliasDestination get(User editor, Long id) |
throws ModelException |
{ |
MailAliasDestination dest; |
MailAliasDestination dest = store.get(id); |
|
try { |
dest = (MailAliasDestination)HibernateUtil.currentSession() |
.load(MailAliasDestination.class, id); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
|
if(!dest.viewableBy(editor)) |
throw new ModelSecurityException(); |
|
80,14 → 60,8 |
//mailAliasDestination.setModUser(editor); // FIXME |
// FIXME: the mod_user is not set when changing a destination as element of collection |
|
try { |
HibernateUtil.currentSession().saveOrUpdate(mailAliasDestination); |
store.save(mailAliasDestination); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
} |
|
public void delete(User editor, MailAliasDestination mailAliasDestination) |
throws ModelException |
95,28 → 69,14 |
if(!mailAliasDestination.deleteableBy(editor)) |
throw new ModelSecurityException(); |
|
try { |
HibernateUtil.currentSession().delete(mailAliasDestination); |
store.delete(mailAliasDestination); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
} |
|
public Collection listMailAliasesDestination(MailAlias alias) |
throws ModelException |
{ |
try { |
return HibernateUtil.currentSession().find( |
"select d from MailAliasDestination d left join fetch d.mailbox where d.alias=?", |
alias, Hibernate.entity(MailAlias.class)); |
return store.listMailAliasesDestination(alias); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
} |
|
public boolean areMailAliasesDestinationsAvailable(User editor) |
throws ModelException |
124,16 → 84,6 |
return true; |
} |
|
private static MailAliasDestinationManager mailAliasDestinationManager = null; |
|
public static MailAliasDestinationManager getInstance() |
{ |
if(mailAliasDestinationManager == null) |
mailAliasDestinationManager = new MailAliasDestinationManager(); |
|
return mailAliasDestinationManager; |
} |
|
public static final Comparator EMAIL_COMPARATOR = new EmailComparator(); |
|
private static class EmailComparator |
162,4 → 112,25 |
return (obj instanceof EmailComparator); |
} |
} |
|
public void init(Map params) |
throws ModelException |
{ |
try { |
mailAliasDestinationManager = this; |
|
Class c = Class.forName((String)params.get("store")); |
store = (MailAliasDestinationStore)c.newInstance(); |
} |
catch(Exception ex) { |
throw new ModelException(ex); |
} |
} |
|
private static MailAliasDestinationManager mailAliasDestinationManager = null; |
|
public static MailAliasDestinationManager getInstance() |
{ |
return mailAliasDestinationManager; |
} |
} |