1 16 package com.blandware.atleap.persistence.hibernate.core; 17 18 import com.blandware.atleap.common.util.PartialCollection; 19 import com.blandware.atleap.common.util.QueryInfo; 20 import com.blandware.atleap.model.core.*; 21 import com.blandware.atleap.persistence.core.UserDAO; 22 import org.hibernate.Hibernate; 23 import org.hibernate.type.Type; 24 25 import java.util.ArrayList ; 26 import java.util.List ; 27 import java.util.Map ; 28 import java.util.HashMap ; 29 30 31 41 public class UserDAOHibernate extends BaseDAOHibernate implements UserDAO { 42 43 45 47 50 public void createUser(User user) { 51 getHibernateTemplate().save(user); 52 } 53 54 57 public User retrieveUser(String userName) { 58 return (User) getHibernateTemplate().get(User.class, userName); 59 } 60 61 64 public void updateUser(User user) { 65 getHibernateTemplate().update(user); 66 } 67 68 71 public void deleteUser(User user) { 72 List rolesAssociation = new ArrayList (user.getRolesAssociations()); 74 for ( int i = 0; i < rolesAssociation.size(); i++ ) { 75 UserRoleAssociation userRoleAssociation = (UserRoleAssociation) rolesAssociation.get(i); 76 Role role = userRoleAssociation.getRole(); 77 Group group = userRoleAssociation.getGroup(); 78 user.removeRole(role, group); 79 } 80 81 getHibernateTemplate().delete(user); 82 83 List groups = new ArrayList (user.getGroups()); 85 for ( int i = 0; i < groups.size(); i++ ) { 86 Group group = (Group) groups.get(i); 87 group.removeUser(user); 88 } 89 } 90 91 93 96 public PartialCollection listUsers(QueryInfo queryInfo) { 97 98 String whereClause = new String (); 99 String orderByClause = new String (); 100 Map queryParameters = new HashMap (); 101 boolean freeRolesFilterEnabled = false; 102 if ( queryInfo != null ) { 103 whereClause = queryInfo.getWhereClause(); 104 orderByClause = queryInfo.getOrderByClause(); 105 queryParameters = queryInfo.getQueryParameters(); 106 if (queryParameters != null) { 107 freeRolesFilterEnabled = "true".equalsIgnoreCase((String ) queryParameters.get("freeRolesFilterEnabled")); 108 } 109 if ( whereClause != null && whereClause.length() != 0 ) { 110 if (freeRolesFilterEnabled) { 111 whereClause = " where ((fra.group is null) and (" + whereClause + "))"; 112 } else { 113 whereClause = " where " + whereClause; 114 } 115 } else { 116 if (freeRolesFilterEnabled) { 117 whereClause = " where fra.group is null "; 118 } else { 119 whereClause = new String (); 120 } 121 } 122 if ( orderByClause != null && orderByClause.length() != 0 ) { 123 orderByClause = " order by " + orderByClause; 124 } else { 125 orderByClause = new String (); 126 } 127 } 128 129 List list = null; 130 Integer total = null; 131 String hqlPart = "from User u left outer join u.rolesAssociations as fra left outer join u.groups as g" + whereClause; 132 if ( queryInfo != null && (queryInfo.getLimit() != null || queryInfo.getOffset() != null) ) { 133 String hqlForTotal = "select count(distinct u.name) " + hqlPart; 134 total = (Integer ) findUniqueResult(hqlForTotal); 135 if ( total == null ) { 136 total = new Integer (0); 137 } 138 } 139 if ( total == null || total.intValue() > 0 ) { 142 String hql = "select distinct u " + hqlPart + orderByClause; 143 list = executeFind(hql, queryInfo); 144 if ( total == null ) { 145 total = new Integer (list.size()); 146 } 147 } else { 148 list = new ArrayList (); 149 } 150 151 return new PartialCollection(list, total); 152 } 153 154 156 158 161 public Long createUserCookie(UserCookie userCookie, User user) { 162 userCookie.setUser(user); 163 return (Long ) getHibernateTemplate().save(userCookie); 164 } 165 166 169 public UserCookie retrieveUserCookie(String cookieId) { 170 return (UserCookie) findUniqueResult("from UserCookie c where c.cookieId = ?", new Object []{cookieId}); 171 } 172 173 176 public void deleteUserCookies(String userName) { 177 String hql = "from UserCookie c where c.user.name = ?"; 178 List cookies = executeFind(hql, new Object []{userName}, new Type[]{Hibernate.STRING}); 179 if (cookies != null && cookies.size() > 0) { 180 for (int i = 0; i < cookies.size(); i++) { 181 UserCookie userCookie = (UserCookie) cookies.get(i); 182 getHibernateTemplate().delete(userCookie); 183 } 184 } 185 } 186 187 } 188 | Popular Tags |