1 package org.appfuse.dao.ibatis; 2 3 import java.util.HashMap ; 4 import java.util.HashSet ; 5 import java.util.Iterator ; 6 import java.util.List ; 7 import java.util.Map ; 8 9 import org.acegisecurity.userdetails.UserDetails; 10 import org.acegisecurity.userdetails.UserDetailsService; 11 import org.acegisecurity.userdetails.UsernameNotFoundException; 12 import org.appfuse.dao.UserDao; 13 import org.appfuse.model.Role; 14 import org.appfuse.model.User; 15 import org.springframework.orm.ObjectRetrievalFailureException; 16 17 25 public class UserDaoiBatis extends BaseDaoiBATIS implements UserDao, UserDetailsService { 26 32 public User getUser(Long userId) { 33 User user = (User) getSqlMapClientTemplate().queryForObject("getUser", userId); 34 35 if (user == null) { 36 logger.warn("uh oh, user not found..."); 37 throw new ObjectRetrievalFailureException(User.class, userId); 38 } else { 39 List roles = getSqlMapClientTemplate().queryForList("getUserRoles", user); 40 user.setRoles(new HashSet (roles)); 41 } 42 43 return user; 44 } 45 46 49 public List getUsers(User user) { 50 List users = getSqlMapClientTemplate().queryForList("getUsers", null); 51 52 for (int i = 0; i < users.size(); i++) { 54 user = (User) users.get(i); 55 56 List roles = getSqlMapClientTemplate().queryForList("getUserRoles", user); 57 user.setRoles(new HashSet (roles)); 58 users.set(i, user); 59 } 60 61 return users; 62 } 63 64 68 private void deleteUserRoles(final Long userId) { 69 getSqlMapClientTemplate().update("deleteUserRoles", userId); 70 } 71 72 private void addUserRoles(final User user) { 73 if (user.getRoles() != null) { 74 for (Iterator it = user.getRoles().iterator(); it.hasNext();) { 75 Role role = (Role) it.next(); 76 Map newRole = new HashMap (); 77 newRole.put("userId", user.getId()); 78 newRole.put("roleId", role.getId()); 79 80 List userRoles = getSqlMapClientTemplate().queryForList("getUserRoles", user); 81 82 if (userRoles.isEmpty()) { 83 getSqlMapClientTemplate().update("addUserRole", newRole); 84 } 85 } 86 } 87 } 88 89 92 public void saveUser(final User user) { 93 prepareObjectForSaveOrUpdate(user); 94 95 if (user.getId() == null) { 96 Long id = (Long ) getSqlMapClientTemplate().insert("addUser", user); 97 user.setId(id); 98 addUserRoles(user); 99 } else { 100 getSqlMapClientTemplate().update("updateUser", user); 101 deleteUserRoles(user.getId()); 102 addUserRoles(user); 103 } 104 } 105 106 109 public void removeUser(Long userId) { 110 deleteUserRoles(userId); 111 getSqlMapClientTemplate().update("deleteUser", userId); 112 } 113 114 117 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { 118 User user = (User) getSqlMapClientTemplate().queryForObject("getUserByUsername", username); 119 120 if (user == null) { 121 logger.warn("uh oh, user not found..."); 122 throw new UsernameNotFoundException("user '" + username + "' not found..."); 123 } else { 124 List roles = getSqlMapClientTemplate().queryForList("getUserRoles", user); 125 user.setRoles(new HashSet (roles)); 126 } 127 128 return user; 129 } 130 } 131 | Popular Tags |