c88menudao.java

来自「使用spring ,hibernate 框架的稽查管理系统」· Java 代码 · 共 177 行

JAVA
177
字号
package com.je.ims.dao;

import java.util.LinkedList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.je.ims.hibernate.Menu;
import com.je.ims.hibernate.RoleTypeMenu;

public class C88MenuDAO extends HibernateDaoSupport{
	
	 public C88MenuDAO(){
		 super();
	 }
	
	 public List GetAll(){
		String hql="select menu from Menu menu order by  menu.baseItem , menu.showId";
		List list=this.getHibernateTemplate().find(hql);
		return list;
	 }
	 public List GetPart(){
			String hql="select menu from Menu menu where menu.isDirectory = "+0+"order by  menu.baseItem , menu.showId";
			List list=this.getHibernateTemplate().find(hql);
			return list;
	}
	 public List GetPart(Long roleTypeId){
			String hql1="select menu from Menu menu where menu.isDirectory = "+0+"order by  menu.baseItem , menu.showId";
			String hql2="from RoleTypeMenu where id.roleTypeId = "+roleTypeId;
			List L1=this.getHibernateTemplate().find(hql1);
			List L2=this.getHibernateTemplate().find(hql2);
			for(int i=0;i<L1.size();i++){
				Menu menu=(Menu) L1.get(i);
				for(int j=0;j<L2.size();j++){
					RoleTypeMenu roleTypeMenu = (RoleTypeMenu) L2.get(j);
					if(menu.getMenuId().equals(roleTypeMenu.getId().getMenuId())){
						L1.remove(i);
						break;
					}
				}
			}
			return L1;
	}

	 //通過menuId返回Menu對象
	 public Menu GetById(String menuId){
		  List L1=this.getHibernateTemplate().find("from Menu where menuId =?",new Object[] {menuId});
		  if (L1.size()>0)
	        	return (Menu)L1.get(0);
	        else return null;   
		}
	 
	 //通過menuName返回Menu對象
	 public Menu GetByName(String menuName){
		    List L1=this.getHibernateTemplate().find("from Menu where menuName =?",new Object[] {menuName});
	        if (L1.size()>0)
	        	return (Menu)L1.get(0);
	        else return null;   
	    }
	 
	 public String GetNameByID(String menuId){
	        List L1=getHibernateTemplate().find("select menuName from Menu where menuId=?",menuId);
	        if (L1.size()>0)
	        	return (String)L1.get(0);
	        else return null;
		   
	    }
	 
	 //当用户新增menu时,把父菜单的is_dir改为1,父菜单的programq改为null
	 public void insert(final Menu menu){
		 
			getHibernateTemplate().execute(new HibernateCallback() { 

				public Object doInHibernate(Session session) throws HibernateException {
					
					session.save(menu);
					if(!menu.getBaseItem().equals("root")){
						final Menu parent=GetByName(menu.getBaseItem().trim());
						parent.setIsDirectory(new Long(1));
						parent.setProgram("null");
						session.update(parent);
						}
					return null;
				}      }); 
	    
     }

	 //刪除 Menu以及相關表信息,包括RoleTypeMenu,刪除時判斷該menu的父菜單是否還有其他的
	 //子菜單,如果沒有,則IS_DIR=0;
	 public void delete(final String menuId) {
		final Menu menu=GetById(menuId);
		final String baseItem=menu.getBaseItem().trim();
		final List L1=this.getHibernateTemplate().find("from RoleTypeMenu where id.menuId =?",new Object[] {menuId});
		final List L2=this.getHibernateTemplate().find("from Menu where baseItem =?",new Object[] {baseItem});
		Menu parent=null;
		if(L2.size()==1){
		    parent=GetById(baseItem);
			parent.setIsDirectory(new Long(0));
		}
		final Menu par=parent;
		
		getHibernateTemplate().execute(new HibernateCallback() { 

			public Object doInHibernate(Session session) throws HibernateException {
				
				for(int i=0;i<L1.size();i++)
					session.delete(L1.get(i));
				if (par!=null)
					session.update(par);
				session.delete(menu);
				return null;
			}      }); 
	 
	}

	 /*判断父菜单的Is_dir是否需要更新
	  *更新新的父菜单的Is_dir
	  *更新菜单的lvl
	  */
	public void update(Menu menu,String parentName) {

		if(menu.getBaseItem().equals(parentName))
			getHibernateTemplate().update(menu);
		else {
			
				Menu old_parent=GetByName(parentName);
				List L1=this.getHibernateTemplate().find("from Menu where baseItem =?",new Object[] {parentName});
				if(L1.size()==1)
					old_parent.setIsDirectory(new Long(0));
			
				Menu new_parent=GetByName(menu.getBaseItem());
				new_parent.setIsDirectory(new Long(1));
				new_parent.setProgram("null");
		
				menu.setLvl(new Long(new_parent.getLvl().intValue()+1));
			
				final Menu menu1=menu;
				final Menu old_par=old_parent;
				final Menu new_par=new_parent;
			
				getHibernateTemplate().execute(new HibernateCallback() { 
					public Object doInHibernate(Session session) throws HibernateException {
						if(old_par!=null)
							session.update(old_par);
						if(new_par!=null)
							session.update(new_par);
						if(menu1!=null)
							session.update(menu1);
						return null;
					}      }); 
				}
		
	}
	public void update(Menu menu) {
		getHibernateTemplate().update(menu);
	}
	public List GetAllEscape(String menuId) {
		List L1=GetAll();
		for(int i=0;i<L1.size();i++){
			if(((Menu)L1.get(i)).getMenuId().equals(menuId))
				L1.remove(i);
		}
		return L1;
	}
//	如果存在,返回true,不存在,返回false
	public boolean checkId(String menuId) {
		List L1=this.getHibernateTemplate().find("from Menu where menuId =?",new Object[] {menuId});
		if(L1.size()>0)
			return true;
		else
		    return false;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?