KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > javabb > dao > hibernate > UserHibernateDAO


1 package org.javabb.dao.hibernate;
2
3 import java.sql.SQLException JavaDoc;
4 import java.util.List JavaDoc;
5
6 import net.sf.hibernate.Criteria;
7 import net.sf.hibernate.HibernateException;
8 import net.sf.hibernate.Session;
9 import net.sf.hibernate.Transaction;
10 import net.sf.hibernate.expression.Expression;
11
12 import org.apache.commons.logging.Log;
13 import org.apache.commons.logging.LogFactory;
14 import org.javabb.dao.entity.IUserDAO;
15 import org.javabb.dao.entity.IUserSecurityDAO;
16 import org.javabb.infra.Utils;
17 import org.javabb.vo.User;
18 import org.javabb.vo.UserRank;
19 import org.springframework.orm.hibernate.HibernateCallback;
20
21 /*
22  * Copyright 2004 JavaFree.org
23  *
24  * Licensed under the Apache License, Version 2.0 (the "License");
25  * you may not use this file except in compliance with the License.
26  * You may obtain a copy of the License at
27  *
28  * http://www.apache.org/licenses/LICENSE-2.0
29  *
30  * Unless required by applicable law or agreed to in writing, software
31  * distributed under the License is distributed on an "AS IS" BASIS,
32  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
33  * See the License for the specific language governing permissions and
34  * limitations under the License.
35  */

36
37 /**
38  * $Id: UserHibernateDAO.java,v 1.17.2.3.2.1.2.2 2006/04/17 17:46:27 daltoncamargo Exp $
39  * @author Dalton Camargo - <a HREF="mailto:dalton@javabb.org">dalton@javabb.org </a> <br>
40  * @author Ronald Tetsuo Miura
41  */

42 public class UserHibernateDAO extends HibernateDAO implements IUserDAO {
43     
44     protected final Log log = LogFactory.getLog(UserHibernateDAO.class);
45     
46     private IUserSecurityDAO userSecurityDAO;
47     public void setUserSecurityDAO(IUserSecurityDAO userSecurityDAO) {
48         this.userSecurityDAO = userSecurityDAO;
49     }
50
51     /**
52      * @see org.javabb.dao.entity.IUserDAO#loadUser(java.lang.Long)
53      */

54     public User loadUser(Long JavaDoc userId) {
55         return (User) getHibernateTemplate().load(User.class, userId);
56     }
57
58     /**
59      * @see org.javabb.dao.entity.IUserDAO#update(org.javabb.vo.User)
60      */

61     public void update(User user) {
62         getHibernateTemplate().update(user);
63     }
64
65     /**
66      * @see org.javabb.dao.entity.IUserDAO#create(org.javabb.vo.User)
67      */

68     public void create(User user) throws Exception JavaDoc{
69         Transaction tx = null;
70         tx = getSession().beginTransaction();
71         Long JavaDoc userId = (Long JavaDoc) getHibernateTemplate().save(user);
72         getSession().flush();
73         tx.commit();
74 // Setting the userCode for this user...
75
userSecurityDAO.createHashCode(userId, Utils.getCodeUser(userId.toString()));
76         
77     }
78
79     /**
80      * @see org.javabb.dao.entity.IUserDAO#lastUserRegistered()
81      */

82     public User lastUserRegistered() {
83         User retornUser = null;
84         List JavaDoc list = getList("from {vo}User order by data_registro desc", 0, 1);
85
86         if (!list.isEmpty()) {
87             retornUser = (User) list.get(0);
88         }
89
90         return retornUser;
91     }
92
93     /**
94      * @see org.javabb.dao.entity.IUserDAO#verificaLogin(java.lang.String, java.lang.String)
95      */

96     public User verificaLogin(final String JavaDoc name, final String JavaDoc passwd) {
97         return (User) getHibernateTemplate().execute(new HibernateCallback() {
98             public Object JavaDoc doInHibernate(Session session) throws HibernateException, SQLException JavaDoc {
99                 User returnUsuario = null;
100                 Criteria criteria = session.createCriteria(User.class);
101                 criteria.add(Expression.eq("user", name));
102                 criteria.add(Expression.eq("passwordHash", passwd));
103                 returnUsuario = (User) criteria.uniqueResult();
104                 session.clear();
105
106                 return returnUsuario;
107             }
108         });
109     }
110
111     /**
112      * Delete an user and move your messages to user Anonymous - ID=1
113      * @see org.javabb.dao.entity.IUserDAO#deleteUser(org.javabb.vo.User)
114      */

115     public void deleteUser(User user) {
116         user = (User) getHibernateTemplate().load(User.class, user.getIdUser());
117         long idUser = user.getIdUser().longValue();
118         
119         //Obtain the userName of user with ID=1 (Anonymous user)
120
User anomUser = (User) getHibernateTemplate().load(User.class, new Long JavaDoc(1));
121         
122         String JavaDoc sqlForum = "update jbb_forum set last_post_user_id=1, last_post_user_name='"+ anomUser.getUser() +"'" +
123                             " where last_post_user_id=" + idUser;
124         String JavaDoc sqlPosts = "update jbb_posts set id_user=1 " + "where id_user=" + idUser;
125         String JavaDoc sqlTopics = "update jbb_topics set id_user=1 " + "where id_user=" + idUser;
126
127         executeSQL(sqlForum);
128         executeSQL(sqlPosts);
129         executeSQL(sqlTopics);
130         getHibernateTemplate().delete(user);
131     }
132
133     /**
134      * @see org.javabb.dao.entity.IUserDAO#findByEmail(java.lang.String, java.lang.String)
135      */

136     public List JavaDoc findByEmail(final String JavaDoc email, final Long JavaDoc userId) {
137         return find(User.class,
138             "o.email = ? and o.idUser != ?",
139             new Object JavaDoc[] { email, userId },
140             "o.idUser",
141             ALL_PAGES,
142             ALL_PAGES);
143     }
144     
145     /**
146      * @see org.javabb.dao.entity.IUserDAO#findByEmail(java.lang.String)
147      */

148     public List JavaDoc findByEmail(final String JavaDoc email) {
149         return find(User.class,
150             "o.email = ? ",
151             new Object JavaDoc[] { email },
152             "o.idUser",
153             ALL_PAGES,
154             ALL_PAGES);
155     }
156
157     /**
158      * @see org.javabb.dao.entity.IUserDAO#loadByUsername(java.lang.String)
159      */

160     public User loadByUsername(final String JavaDoc username) {
161         return (User) loadByUniqueAttribute(User.class, "o.user", username);
162     }
163
164     /**
165      * @see org.javabb.dao.entity.IUserDAO#loadByUsercode(java.lang.String)
166      */

167     public User loadByUsercode(final String JavaDoc usercode) {
168         return (User) loadByUniqueAttribute(User.class, "o.userCode", usercode);
169     }
170
171     /**
172      * @see org.javabb.dao.entity.IUserDAO#countAllUsers()
173      */

174     public int countAllUsers() {
175         return countRowsWhere(User.class, "o.idUser", "o.idUser != ?", new Object JavaDoc[] { new Long JavaDoc(0) });
176     }
177
178     /**
179      * @see org.javabb.dao.entity.IUserDAO#findAllUsernameLike(java.lang.String, int, int)
180      */

181     public List JavaDoc findAllUsernameLike(String JavaDoc userName, int pageNumber, int itemsPerPage) {
182         return find(User.class, "o.idUser != 0 AND o.user LIKE ?", //
183
new Object JavaDoc[] { "%" + userName + "%" }, //
184
"o.idUser ASC", pageNumber, itemsPerPage);
185     }
186
187     /**
188      * @see org.javabb.dao.entity.IUserDAO#findAllUserAdmin(int, int)
189      */

190     public List JavaDoc findAllUserAdmin(int pageNumber, int itemsPerPage) {
191         return findAll(User.class,
192                 new String JavaDoc[]{"admin"},
193                 new String JavaDoc[]{"1"},
194                 new String JavaDoc[]{"user"},
195                 new String JavaDoc[]{"asc"},
196                 pageNumber-1, itemsPerPage);
197     }
198     
199     /**
200      * @see org.javabb.dao.entity.IUserDAO#findAllSortedBy(int, int, java.lang.String, java.lang.String)
201      */

202     public List JavaDoc findAllSortedBy(int pageNumber, int itemsPerPage, String JavaDoc orderBy, String JavaDoc ascDesc) {
203         return findAll(User.class, orderBy + " " + ascDesc, pageNumber, itemsPerPage);
204     }
205
206     /**
207      * @see org.javabb.dao.entity.IUserDAO#findAll(int, int)
208      */

209     public List JavaDoc findAll(int pageNumber, int itemsPerPage) {
210         return find(User.class,
211             "o.idUser != ?",
212             new Object JavaDoc[] { new Long JavaDoc(0) },
213             "o.idUser",
214             pageNumber,
215             itemsPerPage);
216     }
217     
218     public List JavaDoc loadListByUsername(String JavaDoc username) {
219         username = username.replaceAll("'","\"");
220         return getList("from User user where user.user like '"+username+"%'");
221     }
222
223     public List JavaDoc loadUserRanks() {
224         return getList("from UserRank u order by u.rankMax desc");
225     }
226
227     public UserRank getUserRank(Long JavaDoc postCount) {
228         List JavaDoc lst = getList("from UserRank");
229         if(lst != null && lst.size() > 0){
230             return (UserRank)lst.get(0);
231         } else {
232             return null;
233         }
234     }
235     
236 }
Popular Tags