KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > appfuse > dao > hibernate > UserDaoHibernate


1 package org.appfuse.dao.hibernate;
2
3 import java.util.List JavaDoc;
4
5 import org.acegisecurity.userdetails.UserDetails;
6 import org.acegisecurity.userdetails.UserDetailsService;
7 import org.acegisecurity.userdetails.UsernameNotFoundException;
8 import org.appfuse.dao.UserDao;
9 import org.appfuse.model.User;
10 import org.springframework.orm.ObjectRetrievalFailureException;
11
12 /**
13  * This class interacts with Spring's HibernateTemplate to save/delete and
14  * retrieve User objects.
15  *
16  * <p><a HREF="UserDaoHibernate.java.htm"><i>View Source</i></a></p>
17  *
18  * @author <a HREF="mailto:matt@raibledesigns.com">Matt Raible</a>
19  * Modified by <a HREF="mailto:dan@getrolling.com">Dan Kibler</a>
20  * Extended to implement Acegi UserDetailsService interface by David Carter david@carter.net
21 */

22 public class UserDaoHibernate extends BaseDaoHibernate implements UserDao, UserDetailsService {
23     /**
24      * @see org.appfuse.dao.UserDao#getUser(Long)
25      */

26     public User getUser(Long JavaDoc userId) {
27         User user = (User) getHibernateTemplate().get(User.class, userId);
28
29         if (user == null) {
30             log.warn("uh oh, user '" + userId + "' not found...");
31             throw new ObjectRetrievalFailureException(User.class, userId);
32         }
33
34         return user;
35     }
36
37     /**
38      * @see org.appfuse.dao.UserDao#getUsers(org.appfuse.model.User)
39      */

40     public List JavaDoc getUsers(User user) {
41         return getHibernateTemplate().find("from User u order by upper(u.username)");
42     }
43
44     /**
45      * @see org.appfuse.dao.UserDao#saveUser(org.appfuse.model.User)
46      */

47     public void saveUser(final User user) {
48         if (log.isDebugEnabled()) {
49             log.debug("user's id: " + user.getId());
50         }
51         
52         getHibernateTemplate().saveOrUpdate(user);
53         // necessary to throw a DataIntegrityViolation and catch it in UserManager
54
getHibernateTemplate().flush();
55     }
56
57     /**
58      * @see org.appfuse.dao.UserDao#removeUser(Long)
59      */

60     public void removeUser(Long JavaDoc userId) {
61         getHibernateTemplate().delete(getUser(userId));
62     }
63
64     /**
65     * @see org.acegisecurity.userdetails.UserDetailsService#loadUserByUsername(java.lang.String)
66     */

67     public UserDetails loadUserByUsername(String JavaDoc username) throws UsernameNotFoundException {
68         List JavaDoc users = getHibernateTemplate().find("from User where username=?", username);
69         if (users == null || users.isEmpty()) {
70             throw new UsernameNotFoundException("user '" + username + "' not found...");
71         } else {
72             return (UserDetails) users.get(0);
73         }
74     }
75 }
76
Popular Tags