/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.um.dao.impl;
import java.util.Iterator;
import java.util.List;
import com.jinhe.tss.core.persistence.BaseDao;
import com.jinhe.tss.core.util.EasyUtils;
import com.jinhe.tss.um.UMConstants;
import com.jinhe.tss.um.dao.IUserDao;
import com.jinhe.tss.um.entity.GroupUser;
import com.jinhe.tss.um.entity.User;
public class UserDao extends BaseDao<User> implements IUserDao {
public UserDao() {
super(User.class);
}
public User initUser(User obj) {
return create(obj);
}
public User removeUser(User user) {
delete(user);
Long deletedUserId = user.getId();
deleteAll(findUser2GroupByUserId(deletedUserId)); // 用户对组
deleteAll(findUser2RoleByUserId(deletedUserId)); // 用户对角色
/* 如果删除的是主用户组用户,则需要其在其他用户组里的用户对应关系。 */
List<?> users = getEntities("from User o where o.appUserId = " + deletedUserId);
if(null != users && !users.isEmpty()){
for(Iterator<?> it = users.iterator(); it.hasNext();){
User temp = (User)it.next();
temp.setAppUserId(null);
update(temp);
}
}
return user;
}
public User getUserByLoginName(String loginName) {
String hql = "from User o where o.loginName = ? and o.applicationId = ? ";
List<?> users = getEntities(hql, loginName, UMConstants.TSS_APPLICATION_ID);
return users.size() > 0 ? (User) users.get(0) : null;
}
public User getUser(String applicationId, String loginName){
String hql = "from User o where o.applicationId = ? and o.loginName = ? ";
List<?> users = getEntities(hql, applicationId, loginName);
return users.size() > 0 ? (User) users.get(0) : null;
}
public List<?> findUser2GroupByUserId(Long userId) {
return getEntities("from GroupUser o where o.userId = ? ", userId);
}
public List<?> findUser2RoleByUserId(Long userId) {
return getEntities("from RoleUser o where o.id.userId = ? and o.strategyId is null", userId);
}
public List<?> findRolesByUserId(Long userId) {
String hql = "select distinct r from RoleUser ru, Role r where ru.id.roleId = r.id and ru.id.userId = ? and ru.strategyId is null ";
return getEntities(hql, userId);
}
public GroupUser getGroup2User(Long groupId, Long userId) {
List<?> list = getEntities("from GroupUser o where o.groupId = ? and o.userId = ?", groupId, userId);
return !list.isEmpty() ? (GroupUser)list.get(0) : null;
}
public User getAppUser(Long appUserId, String userDepositoryCode) {
List<?> users = getEntities("from User o where o.appUserId = ? and o.applicationId = ?", appUserId, userDepositoryCode);
if(!EasyUtils.isNullOrEmpty(users)){
return (User) users.get(0);
}
return null;
}
}