8,8 → 8,16 |
import ak.hostadmiral.util.ModelSecurityException; |
|
public class SystemUserManager |
implements UserBeforeDeleteListener |
{ |
private static SystemUserManager systemUserManager = null; |
private static boolean registered = false; |
|
public static SystemUserManager getInstance() |
{ |
return systemUserManager; |
} |
|
protected static void register() |
{ |
synchronized(SystemUserManager.class) { |
19,6 → 27,8 |
try { |
HibernateUtil.getConfiguration().addResource( |
"/ak/hostadmiral/core/model/SystemUser.hbm.xml"); |
|
systemUserManager = new SystemUserManager(); |
} |
catch(Exception ex) { |
ex.printStackTrace(); |
31,8 → 41,11 |
register(); |
} |
|
private Collection beforeDeleteListeners = new ArrayList(); |
|
private SystemUserManager() |
{ |
UserManager.getInstance().addBeforeDeleteListener(this); |
} |
|
public SystemUser create(User editor) |
165,6 → 178,31 |
} |
} |
|
public void addBeforeDeleteListener(SystemUserBeforeDeleteListener listener) |
{ |
beforeDeleteListeners.add(listener); |
} |
|
public void removeBeforeDeleteListener(SystemUserBeforeDeleteListener listener) |
{ |
beforeDeleteListeners.remove(listener); |
} |
|
public Collection beforeDelete(User editor, SystemUser user, Collection known) |
throws ModelException |
{ |
Collection cascade = new ArrayList(); |
|
for(Iterator i = beforeDeleteListeners.iterator(); i.hasNext(); ) { |
SystemUserBeforeDeleteListener listener = (SystemUserBeforeDeleteListener)i.next(); |
Collection subcascade = listener.systemUserBeforeDelete(editor, user, known); |
if(subcascade != null) |
cascade.addAll(subcascade); |
} |
|
return cascade; |
} |
|
public void delete(User editor, SystemUser systemUser) |
throws ModelException |
{ |
216,16 → 254,40 |
} |
} |
|
private static SystemUserManager systemUserManager = null; |
public Collection userBeforeDelete(User editor, User user, Collection known) |
throws ModelException |
{ |
Collection systemUsers; |
|
public static SystemUserManager getInstance() |
try { |
systemUsers = HibernateUtil.currentSession().find( |
"from SystemUser where owner = ?", |
user, Hibernate.entity(User.class) ); |
} |
catch(HibernateException ex) |
{ |
if(systemUserManager == null) |
systemUserManager = new SystemUserManager(); |
throw new ModelException(ex); |
} |
|
return systemUserManager; |
Collection cascade = new ArrayList(); |
for(Iterator i = systemUsers.iterator(); i.hasNext(); ) { |
SystemUser u = (SystemUser)i.next(); |
if(u.viewableBy(editor)) { |
if(u.deleteableBy(editor)) |
cascade.add(new CascadeDeleteElement(u, CascadeDeleteElement.DELETE, |
this.beforeDelete(editor, u, known))); |
else |
cascade.add(new CascadeDeleteElement(u, CascadeDeleteElement.FORBIDDEN, null)); |
} |
else { |
cascade.add(new CascadeDeleteElement(SystemUser.createLimitedCopy(u), |
CascadeDeleteElement.FORBIDDEN, null)); |
} |
} |
|
return cascade; |
} |
|
public static final Comparator UID_COMPARATOR = new UidComparator(); |
public static final Comparator NAME_COMPARATOR = new NameComparator(); |
|