1 package org.javabb.dao.hibernate; 2 3 import java.sql.SQLException ; 4 import java.util.List ; 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 36 37 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 54 public User loadUser(Long userId) { 55 return (User) getHibernateTemplate().load(User.class, userId); 56 } 57 58 61 public void update(User user) { 62 getHibernateTemplate().update(user); 63 } 64 65 68 public void create(User user) throws Exception { 69 Transaction tx = null; 70 tx = getSession().beginTransaction(); 71 Long userId = (Long ) getHibernateTemplate().save(user); 72 getSession().flush(); 73 tx.commit(); 74 userSecurityDAO.createHashCode(userId, Utils.getCodeUser(userId.toString())); 76 77 } 78 79 82 public User lastUserRegistered() { 83 User retornUser = null; 84 List 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 96 public User verificaLogin(final String name, final String passwd) { 97 return (User) getHibernateTemplate().execute(new HibernateCallback() { 98 public Object doInHibernate(Session session) throws HibernateException, SQLException { 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 115 public void deleteUser(User user) { 116 user = (User) getHibernateTemplate().load(User.class, user.getIdUser()); 117 long idUser = user.getIdUser().longValue(); 118 119 User anomUser = (User) getHibernateTemplate().load(User.class, new Long (1)); 121 122 String 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 sqlPosts = "update jbb_posts set id_user=1 " + "where id_user=" + idUser; 125 String 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 136 public List findByEmail(final String email, final Long userId) { 137 return find(User.class, 138 "o.email = ? and o.idUser != ?", 139 new Object [] { email, userId }, 140 "o.idUser", 141 ALL_PAGES, 142 ALL_PAGES); 143 } 144 145 148 public List findByEmail(final String email) { 149 return find(User.class, 150 "o.email = ? ", 151 new Object [] { email }, 152 "o.idUser", 153 ALL_PAGES, 154 ALL_PAGES); 155 } 156 157 160 public User loadByUsername(final String username) { 161 return (User) loadByUniqueAttribute(User.class, "o.user", username); 162 } 163 164 167 public User loadByUsercode(final String usercode) { 168 return (User) loadByUniqueAttribute(User.class, "o.userCode", usercode); 169 } 170 171 174 public int countAllUsers() { 175 return countRowsWhere(User.class, "o.idUser", "o.idUser != ?", new Object [] { new Long (0) }); 176 } 177 178 181 public List findAllUsernameLike(String userName, int pageNumber, int itemsPerPage) { 182 return find(User.class, "o.idUser != 0 AND o.user LIKE ?", new Object [] { "%" + userName + "%" }, "o.idUser ASC", pageNumber, itemsPerPage); 185 } 186 187 190 public List findAllUserAdmin(int pageNumber, int itemsPerPage) { 191 return findAll(User.class, 192 new String []{"admin"}, 193 new String []{"1"}, 194 new String []{"user"}, 195 new String []{"asc"}, 196 pageNumber-1, itemsPerPage); 197 } 198 199 202 public List findAllSortedBy(int pageNumber, int itemsPerPage, String orderBy, String ascDesc) { 203 return findAll(User.class, orderBy + " " + ascDesc, pageNumber, itemsPerPage); 204 } 205 206 209 public List findAll(int pageNumber, int itemsPerPage) { 210 return find(User.class, 211 "o.idUser != ?", 212 new Object [] { new Long (0) }, 213 "o.idUser", 214 pageNumber, 215 itemsPerPage); 216 } 217 218 public List loadListByUsername(String username) { 219 username = username.replaceAll("'","\""); 220 return getList("from User user where user.user like '"+username+"%'"); 221 } 222 223 public List loadUserRanks() { 224 return getList("from UserRank u order by u.rankMax desc"); 225 } 226 227 public UserRank getUserRank(Long postCount) { 228 List 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 |