⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userdaoimpl.java

📁 jsf在线考试系统的实例
💻 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 + -