1 16 package dlog4j; 17 18 import java.util.Date ; 19 import java.util.List ; 20 21 import dlog4j.formbean.BookMarkBean; 22 import dlog4j.formbean.LogForm; 23 import dlog4j.formbean.ReplyForm; 24 import dlog4j.formbean.SiteForm; 25 import dlog4j.formbean.UserForm; 26 27 import net.sf.hibernate.Criteria; 28 import net.sf.hibernate.HibernateException; 29 import net.sf.hibernate.Query; 30 import net.sf.hibernate.Session; 31 import net.sf.hibernate.expression.Expression; 32 import net.sf.hibernate.expression.Order; 33 34 38 public class UserManager { 39 40 public final static String PASSWORD_CRYPT_KEY = "_jdlog_des_key_"; 41 48 public static UserForm updateUser(Session ssn, UserForm user) throws HibernateException{ 49 ssn.update(user); 50 return user; 51 } 52 59 public static UserForm createUser(Session ssn, UserForm user) throws HibernateException{ 60 if(user.getLogCount()<1) 61 user.setLoginCount(1); 62 if(user.getRegTime()==null) 63 user.setRegTime(new Date ()); 64 if(user.getLastTime()==null) 65 user.setLastTime(user.getRegTime()); 66 ssn.save(user); 67 return user; 68 } 69 70 78 public static UserForm getUserByName(Session ssn, SiteForm site, String nickname) throws HibernateException 79 { 80 UserForm u = null; 81 Criteria crit = ssn.createCriteria(UserForm.class); 82 if(site!=null) 83 crit = crit.add(Expression.eq("site.id", new Integer (site.getId()))); 84 crit = crit.add(Expression.eq("displayName",nickname)); 85 List users = crit.list(); 86 if(users.size()>0) 87 return (UserForm)users.get(0); 88 89 return null; 90 } 91 92 100 public static UserForm getUser(Session ssn, SiteForm site, String loginName) throws HibernateException 101 { 102 UserForm u = null; 103 Criteria crit = ssn.createCriteria(UserForm.class); 104 if(site!=null) 105 crit = crit.add(Expression.eq("site.id", new Integer (site.getId()))); 106 crit = crit.add(Expression.eq("loginName",loginName)); 107 List users = crit.list(); 108 if(users.size()>0) 109 return (UserForm)users.get(0); 110 111 return null; 112 } 113 121 public static List listUsers(Session ssn, SiteForm site, int from, int count, String username) 122 throws HibernateException { 123 Criteria crit = ssn.createCriteria(UserForm.class); 124 crit = crit.add(Expression.eq("site.id", new Integer (site.getId()))); 125 if(username!=null) 126 crit = crit.add(Expression.like("displayName",'%'+username+'%')); 127 crit = crit.addOrder(Order.desc("regTime")); 128 if(from>0) 129 crit = crit.setFirstResult(from); 130 if (count > 0) 131 crit = crit.setMaxResults(count); 132 return crit.list(); 133 } 134 142 public static List listUsers(Session ssn, SiteForm site, int count, String username) 143 throws HibernateException { 144 return listUsers(ssn,site,0,count,username); 145 } 146 154 public static int getUserCount(Session ssn, SiteForm site, int role, String username) throws HibernateException 155 { 156 Query query = null; 157 String hsql = " SELECT COUNT(user.id) FROM " + UserForm.class.getName() + " AS user WHERE user.site.id=?"; 158 if(role!=-2) 159 hsql += " AND user.userRole=?"; 160 if(username!=null) 161 hsql += " AND user.displayName LIKE ?"; 162 163 query = ssn.createQuery(hsql); 164 query.setInteger(0, site.getId()); 165 if(role!=-2){ 166 query.setInteger(1,role); 167 if(username!=null) 168 query.setString(2, '%'+username+'%'); 169 } 170 else if(username!=null) 171 query.setString(1, '%'+username+'%'); 172 List res = query.list(); 173 int uc = (res.size() > 0) ? ((Integer ) res.get(0)).intValue() : 0; 174 return uc; 175 } 176 184 public static UserForm getUser(Session ssn,int userid,boolean withDetails) throws HibernateException 185 { 186 UserForm user = (UserForm) ssn.load(UserForm.class, new Integer (userid)); 187 fillUserWithLogAndReplyCount(ssn, user, withDetails); 188 return user; 189 } 190 191 198 public static void fillUserWithLogAndReplyCount(Session ssn, UserForm user, boolean withLogsAndReplyies) throws HibernateException{ 199 if (user != null) { 200 Query query = ssn.createQuery("SELECT COUNT(log.id) FROM " 203 + LogForm.class.getName() 204 + " AS log WHERE log.owner.id=? AND log.status<>?"); 205 query.setInteger(0, user.getId()); 206 query.setInteger(1, LogForm.STATUS_DELETED); 207 List res = query.list(); 208 int logCount = (res.size()>0)?((Integer )res.get(0)).intValue():0; 209 user.setLogCount(logCount); 210 Query query2 =ssn.createQuery("SELECT COUNT(reply.id) FROM " 212 + ReplyForm.class.getName() 213 + " AS reply WHERE reply.author.id=? AND reply.log.status<>?"); 214 query2.setInteger(0, user.getId()); 215 query2.setInteger(1, LogForm.STATUS_DELETED); 216 List res2 = query2.list(); 217 int replyCount = (res2.size()>0)?((Integer )res2.get(0)).intValue():0; 218 user.setReplyCount(replyCount); 219 Query query3 =ssn.createQuery("SELECT COUNT(bm.id) FROM " 221 + BookMarkBean.class.getName() 222 + " AS bm WHERE bm.user.id=?"); 223 query2.setInteger(0, user.getId()); 224 res2 = query2.list(); 225 int bmCount = (res2.size()>0)?((Integer )res2.get(0)).intValue():0; 226 user.setBookMarkCount(bmCount); 227 228 if (withLogsAndReplyies) { 229 user.setLogs(ssn.createCriteria(LogForm.class).add( 230 Expression.eq("owner.id",new Integer (user.getId()))).addOrder(Order.desc("logTime")).list()); 231 user.setLogs(ssn.createCriteria(ReplyForm.class).add( 232 Expression.eq("author.id",new Integer (user.getId()))).addOrder(Order.desc("writeTime")).list()); 233 } 234 } 235 } 236 237 } 238 | Popular Tags |