1 package com.panogenesis.dao.hibernate;
2
3 import java.util.List;
4
5 import com.panogenesis.dao.UserDAO;
6 import com.panogenesis.model.User;
7 import com.panogenesis.model.UserCookie;
8
9 import org.springframework.orm.ObjectRetrievalFailureException;
10
11 /***
12 * This class interacts with Spring's HibernateTemplate to save/delete and
13 * retrieve User objects.
14 *
15 * <p>
16 * <a href="UserDAOHibernate.java.html"><i>View Source</i></a>
17 * </p>
18 *
19 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
20 * Modified by <a href="mailto:dan@getrolling.com">Dan Kibler </a>
21 */
22 public class UserDAOHibernate extends BaseDAOHibernate implements UserDAO {
23 /***
24 * @see com.panogenesis.dao.UserDAO#getUser(java.lang.String)
25 */
26 public User getUser(String username) {
27 User user = (User) getHibernateTemplate().get(User.class, username);
28
29 if (user == null) {
30 log.warn("uh oh, user '" + username + "' not found...");
31 throw new ObjectRetrievalFailureException(User.class, username);
32 }
33
34 return user;
35 }
36
37 /***
38 * @see com.panogenesis.dao.UserDAO#getUsers(com.panogenesis.model.User)
39 */
40 public List getUsers(User user) {
41 return getHibernateTemplate().find("from User u order by upper(u.username)");
42 }
43
44 /***
45 * @see com.panogenesis.dao.UserDAO#saveUser(com.panogenesis.model.User)
46 */
47 public void saveUser(final User user) {
48 if (log.isDebugEnabled()) {
49 log.debug("user's id: " + user.getUsername());
50 }
51
52 getHibernateTemplate().saveOrUpdate(user);
53 }
54
55 /***
56 * @see com.panogenesis.dao.UserDAO#removeUser(java.lang.String)
57 */
58 public void removeUser(String username) {
59 removeUserCookies(username);
60
61 User user = getUser(username);
62 getHibernateTemplate().delete(user);
63 }
64
65 /***
66 * @see com.panogenesis.dao.UserDAO#getUserCookie(com.panogenesis.model.UserCookie)
67 */
68 public UserCookie getUserCookie(final UserCookie cookie) {
69 List cookies = getHibernateTemplate().find(
70 "from UserCookie c where c.username=? and c.cookieId=?",
71 new Object[]{cookie.getUsername(), cookie.getCookieId()});
72
73 if (cookies.size() == 0) {
74 return null;
75 }
76
77 return (UserCookie) cookies.get(0);
78 }
79
80 /***
81 * @see com.panogenesis.dao.UserDAO#removeUserCookies(java.lang.String)
82 */
83 public void removeUserCookies(String username) {
84
85 List cookies =
86 getHibernateTemplate().find("from UserCookie c where c.username=?",
87 username);
88
89 if ((cookies.size() > 0) && log.isDebugEnabled()) {
90 log.debug("deleting " + cookies.size() + " cookies for user '" +
91 username + "'");
92 }
93
94 getHibernateTemplate().deleteAll(cookies);
95 }
96
97 /***
98 * @see com.panogenesis.dao.UserDAO#saveUserCookie(com.panogenesis.model.UserCookie)
99 */
100 public void saveUserCookie(UserCookie cookie) {
101 getHibernateTemplate().saveOrUpdate(cookie);
102 }
103 }