📄 userdaoimpl.java
字号:
package com.jlobo.data.impl;
/***********************************************************************
* Module: UserDaoImpl.java
* Author: Administrator
* Purpose: Defines the Class UserDaoImpl
***********************************************************************/
import java.util.List;
import org.apache.myfaces.custom.tree2.TreeNodeChecked;
import org.hibernate.Query;
import org.hibernate.Transaction;
import com.jlobo.data.DaoSupport;
import com.jlobo.data.IUserDao;
import com.jlobo.hibernate.HibernateSessionFactory;
import com.jlobo.identity.Group;
import com.jlobo.identity.Membership;
import com.jlobo.identity.Permissions;
import com.jlobo.identity.User;
import com.jlobo.web.beans.Department;
import com.jlobo.web.beans.ModulePermissions;
/** @pdOid 728582ea-17ac-4ee1-a96c-18bd6e9fc02e */
public class UserDaoImpl extends DaoSupport implements IUserDao {
public Department getDepartment(Long did) {
String hql = "FROM Department WHERE id = ?";
List l = this.session.createQuery(hql).setParameter(0, did).list();
if (l.size() > 0)
return (Department) l.get(0);
return null;
}
public User getUser(Long uid) {
String hql = "FROM User WHERE id = ?";
List l = this.session.createQuery(hql).setParameter(0, uid).list();
if (l.size() > 0)
return (User) l.get(0);
return null;
}
public User getUserByNameAndPassword(String name, String password) {
// TODO Auto-generated method stub
return null;
}
public User login(String account, String password) {
String hql = "from User where account = '" + account
+ "' and password ='" + password + "'";
if (this.session == null) {
this.setSession(HibernateSessionFactory.getSession());
}
List users = this.session.createQuery(hql).list();
if (users.size() == 1)
return (User) users.get(0);
return null;
}
public String getCurDepartmentPath(Long did) {
// TODO Auto-generated method stub
return null;
}
public List getDepartmentUsersByParent(Long did) {
String hql = "FROM DepartmentUser WHERE parent = ?";
Query q = this.session.createQuery(hql).setParameter(0, did);
List l = q.list();
return l;
}
public boolean deleteDepartment(Department department) {
this.session.delete(department);
return true;
}
public boolean deleteUser(User user) {
String hql = "FROM Membership WHERE user.id = "+user.getId();
List lt = this.session.createQuery(hql).list();
Transaction tx = this.session.beginTransaction();
tx.begin();
for(int i=0;i<lt.size();i++){
Membership membership = (Membership)lt.get(i);
user.getMemberships().remove(membership);
membership.setUser(null);
membership.getGroup().getMemberships().remove(membership);
membership.setGroup(null);
this.session.delete(membership);
}
this.session.delete(user);
tx.commit();
this.session.close();
return true;
}
public TreeNodeChecked getPermissionModuleByUser(User user) {
String hql = "select T.*,case when p.action_ is null then '0' else p.action_ end action_ \r\n"+
" from (select G.*,level as Level_ \r\n"+
" from (select id_, class_,parent_,name_,localname_,sort_,status_,type_ \r\n"+
" from jot_id_group \r\n"+
" where id_ != parent_ \r\n"+
" ) G \r\n"+
" start with parent_= -1 \r\n"+
" connect by prior id_=parent_) T \r\n"+
" left join (Select * from jot_id_permissions where entity_ = 0) P on T.id_ = name_ " +
" where t.class_ = 'M'";
if (this.session == null) {
this.setSession(HibernateSessionFactory.getSession());
}
TreeNodeChecked treeData = new TreeNodeChecked("category", "系统功能", "YYYY0001",true,false);
List lt = this.session.createSQLQuery(hql).addEntity(ModulePermissions.class).list();
ModulePermissions[] permission = new ModulePermissions[lt.size()];
if(lt.size()>0){
int root = 0;
int[] position = new int[lt.size()];
position[0] = 0;
TreeNodeChecked[] tree = new TreeNodeChecked[lt.size()];
for(int i=0;i<lt.size();i++){
permission[i] = (ModulePermissions)lt.get(i);
if(permission[i].get_class().equals("P"))
tree[i] = new TreeNodeChecked("permissionModuleDepartment",permission[i].getLocalName()+":部门人员",permission[i].getId()+"|"+permission[i].get_class(),(permission[i].getAction().equals("1")?true:false),false);
else
tree[i] = new TreeNodeChecked("permissionModuleDepartment",permission[i].getLocalName(),permission[i].getId()+"|"+permission[i].get_class(),(permission[i].getAction().equals("1")?true:false),false);
if(i>0){
if(permission[i].getLevel().equals(permission[0].getLevel())){
root++;
position[root] = i;
}
}
}
if(root>0){
for(int i=0;i<permission.length;i++){
for(int j = 0;j<permission.length;j++){
if(permission[j].getParent().equals(permission[i].getId())){
tree[i].getChildren().add(tree[j]);
}
}
}
for(int i=0;i<root+1;i++){
treeData.getChildren().add(tree[position[i]]);
}
return treeData;
} else{
tree[0] = new TreeNodeChecked("permissionModuleDepartment", permission[0].getLocalName(), permission[0].getId()+"|"+permission[0].get_class(), (permission[0].getAction().equals("1")?true:false),false);
for(int i=0;i<permission.length;i++){
for(int j = 0;j<permission.length;j++){
if(permission[j].getParent().equals(permission[i].getId())){
tree[i].getChildren().add(tree[j]);
}
}
}
return tree[0];
}
}
return null;
}
public TreeNodeChecked getPermissionRoadByUser(User user) {
// TODO Auto-generated method stub
return null;
}
public boolean updateDepartment(Department department) {
this.session.merge(department);
return true;
}
public boolean updatePermission(Long uid, TreeNodeChecked module,String permissions) {
String[] permissionList = {};
if(permissions.length()>0){
permissionList = permissions.split(";");
}
List moduleList = module.getChildren();
for (int i = 0; i < moduleList.size(); i++) {
TreeNodeChecked child = (TreeNodeChecked) moduleList.get(i);
String id = child.getIdentifier();
String type = id.substring(id.indexOf("|")+1,id.length());
id = id.substring(0,id.indexOf("|"));
Permissions permission = null;
String hql = "FROM Permissions WHERE entity = " + uid
+ " and name = '" + id + "'";
List list = this.session.createQuery(hql).list();
if (list.size() > 0) {
permission = (Permissions) list.get(0);
} else {
permission = new Permissions();
}
permission.setEntity(uid + "");
permission.setName(id);
if (child.isChecked())
permission.setAction("1");
else
permission.setAction("0");
if(type.equals("P")){
int moduleId = -1;
for(int k=0;k<permissionList.length;k++){
if(id.equals(permissionList[k].substring(0,permissionList[k].indexOf("|")))){
moduleId = k;
break;
}
}
if(moduleId != -1) {
permission.setType(permissionList[moduleId].substring(permissionList[moduleId].indexOf("|")+1,permissionList[moduleId].length()));
}
}
this.session.saveOrUpdate(permission);
System.out.println("Module : " + child.getDescription() + "Id:"
+ child.getIdentifier());
List childList = child.getChildren();
for (int j = 0; j < childList.size(); j++) {
child = (TreeNodeChecked) childList.get(j);
id = child.getIdentifier();
type = id.substring(id.indexOf("|")+1,id.length());
id = id.substring(0,id.indexOf("|"));
System.out.println(child.getDescription() + "Id:"
+ child.getIdentifier());
List officeList = child.getChildren();
String department = "";
hql = "FROM Permissions WHERE entity = " + uid
+ " and name = '" + id + "'";
list = this.session.createQuery(hql).list();
if (list.size() > 0) {
permission = (Permissions) list.get(0);
} else {
permission = new Permissions();
}
permission.setEntity(uid + "");
permission.setName(id);
if (child.isChecked()) {
permission.setAction("1");
} else {
permission.setAction("0");
department = "";
}
if(type.equals("P")){
int moduleId = -1;
for(int k=0;k<permissionList.length;k++){
if(id.equals(permissionList[k].substring(0,permissionList[k].indexOf("|")))){
moduleId = k;
break;
}
}
if(moduleId != -1) {
permission.setType(permissionList[moduleId].substring(permissionList[moduleId].indexOf("|")+1,permissionList[moduleId].length()));
}
}
//permission.setType(department);
this.session.saveOrUpdate(permission);
System.out.println(department);
}
}
return true;
}
public boolean updateUser(User user) {
this.session.saveOrUpdate(user);
return true;
}
public boolean updateUser(User user, Department department) {
Membership membership = new Membership();
Group group = new Group();
String hql = "FROM Group WHERE id = ?";
List list = this.session.createQuery(hql).setParameter(0, department.getId()).list();
if(list.size()>0){
group = (Group)list.get(0);
}
hql = "FROM Membership WHERE group.id = ? and user.id = ?";
list = this.session.createQuery(hql).setParameter(0, group.getId()).setParameter(1, user.getId()).list();
this.session.merge(user);
if(list.size()>0){
membership = (Membership)list.get(0);
if((membership.getLocalName()==null) ||(membership.getLocalName().equals("")) ||(membership.getLocalName().length()<1)){
membership.setLocalName("business/bs_da_stat.jsf");
}
} else {
membership.setGroup(group);
membership.setUser(user);
membership.setSort(user.getSort());
membership.setLocalName("business/bs_da_stat.jsf");
}
this.session.saveOrUpdate(membership);
return true;
}
public Department getDepartment(User user) {
Membership membership = new Membership();
String hql = "FROM Membership WHERE user.id = " + user.getId();
List lt = this.session.createQuery(hql).list();
if (lt.size() > 0) {
membership = (Membership) lt.get(0);
Group group = membership.getGroup();
return getDepartment(group.getId());
}
return null;
}
public Group getGroup(Long gid){
return (Group)this.session.get(Group.class, gid);
}
public String getPermissionsList(User user){
String hql = "FROM Permissions WHERE entity ="+user.getId();
List lt = this.session.createQuery(hql).list();
String permissionsList = "";
for(int i=0;i<lt.size();i++){
Permissions permissions = (Permissions)lt.get(i);
if(!(permissions.getType() == null)){
permissionsList = permissionsList + permissions.getName()+"|"+permissions.getType()+";";
} else {
permissionsList = permissionsList + permissions.getName()+"|"+";";
}
}
if(permissionsList.length()>0){
permissionsList = permissionsList.substring(0,permissionsList.length()-1);
}
if(permissionsList.length()<1){
hql = "FROM Group WHERE (_class ='M' OR _class = 'P') AND parent.id != -1 ORDER BY id";
lt = this.session.createQuery(hql).list();
for(int i=0;i<lt.size();i++){
Group g = (Group)lt.get(i);
permissionsList = permissionsList + g.getId()+"|"+";";
}
permissionsList = permissionsList.substring(0,permissionsList.length()-1);
}
return permissionsList;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -