8,7 → 8,9 |
import ak.hostadmiral.util.ModelSecurityException; |
|
public class UserManager |
implements UserBeforeDeleteListener |
implements |
UserBeforeDeleteListener, |
UserDeletingListener |
{ |
private static UserManager userManager = null; |
private static boolean registered = false; |
25,7 → 27,7 |
|
registered = true; |
try { |
/* |
/* FIMXE: do the same for all classes |
HibernateUtil.getConfiguration().addResource( |
"ak/hostadmiral/core/model/User.hbm.xml"); |
HibernateUtil.getConfiguration().addResource( |
47,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 Map loggedinUsers = new WeakHashMap(); |
|
53,6 → 56,7 |
private UserManager() |
{ |
addBeforeDeleteListener(this); |
addDeletingListener(this); |
} |
|
public User create(User editor) |
218,6 → 222,16 |
deletedListeners.remove(listener); |
} |
|
public void addDeletingListener(UserDeletingListener listener) |
{ |
deletingListeners.add(listener); |
} |
|
public void removeDeletingListener(UserDeletingListener listener) |
{ |
deletingListeners.remove(listener); |
} |
|
public Collection beforeDelete(User editor, User user, Collection known) |
throws ModelException |
{ |
240,6 → 254,12 |
if(!user.deleteableBy(editor)) |
throw new ModelSecurityException(); |
|
// inform deleting listeners |
for(Iterator i = deletingListeners.iterator(); i.hasNext(); ) { |
UserDeletingListener listener = (UserDeletingListener)i.next(); |
listener.userDeleting(editor, user); |
} |
|
// backup copy |
User oldUser = new User(user); |
|
251,7 → 271,7 |
throw new ModelException(ex); |
} |
|
// inform listeners |
// inform delete listeners |
for(Iterator i = deletedListeners.iterator(); i.hasNext(); ) { |
UserDeletedListener listener = (UserDeletedListener)i.next(); |
listener.userDeleted(editor, oldUser); |
373,6 → 393,25 |
return cascade; |
} |
|
public void userDeleting(User editor, User user) |
throws ModelException |
{ |
Collection subusers; |
|
try { |
subusers = HibernateUtil.currentSession().find( |
"from User where boss = ?", |
user, Hibernate.entity(User.class) ); |
} |
catch(HibernateException ex) { |
throw new ModelException(ex); |
} |
|
for(Iterator i = subusers.iterator(); i.hasNext(); ) { |
delete(editor, (User)i.next()); |
} |
} |
|
public static final Comparator LOGIN_COMPARATOR = new LoginComparator(); |
public static final Comparator LOGINS_TIME_COMPARATOR = new LoginsTimeComparator(); |
|