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

📄 userrightgroup.java

📁 java系统通用框架 很实用的东东 一般人都看的懂,
💻 JAVA
字号:
package com.corp.bisc.ebiz.member;

import com.corp.bisc.ebiz.base.*;
import com.corp.bisc.ebiz.exception.*;
import com.corp.bisc.ebiz.security.*;
import java.sql.*;
import java.util.*;
import java.io.PrintStream;
import java.io.Serializable;
/**
 * 权限组。
 * 创建日期:(2002-5-23 17:33:58)
 * @author:PangWei
 */
public class UserRightGroup extends UserRight implements Serializable {
	 private Vector vtSubPrincipal = new Vector();
/**
 * UserRightGroup 构造子注解。
 */
public UserRightGroup() {
	super();
	setFolder(1);
}
  /**
	* 加入子权限
	*/
   public void addSubPrincipal(WebPrincipal wp)  throws Exception
   {
	  for(int i=0;i<vtSubPrincipal.size();i++){
		  WebPrincipal webprincipal = (WebPrincipal)vtSubPrincipal.elementAt(i);
		  if( webprincipal.getId() == wp.getId() ){
			  return;
		  }
	  }
	  vtSubPrincipal.add(wp);

   }
  /**
	* 将本权限组的定义加入数据库
	*/
   public void addToDB(Connection conn) throws SQLException
   {
	   System.out.println("USER Right Group---super.addToDB(conn)");
	   super.addToDB(conn);

	   String grpid=this.getId();
	   System.out.println("USER Right Group---grpid="+grpid);

	   long lid=new Long(grpid).longValue();

	  //更新S_PRINCIPALGROUP
	  String sql="insert into S_PRINCIPALGROUP (FuncID, SubFunc) values(" + lid + ",?)";
	  System.out.println("USER Right Group---sql="+sql);

	  PreparedStatement ps = conn.prepareStatement(sql);
	  for(int i=0; i<vtSubPrincipal.size(); i++)
	  {
		  WebPrincipal principal = (WebPrincipal)vtSubPrincipal.elementAt(i);
		  ps.setLong(1, new Long(principal.getId()).longValue());
		  ps.executeUpdate();
	  }
	  ps.close();

   }
/**
 * 此处插入方法描述。
 * 创建日期:(2002-5-23 17:49:46)
 * @return boolean
 */
public boolean checkEmbedPrincipal() throws SQLException {

	  for(int i=0; i<vtSubPrincipal.size(); i++)
	  {
		  UserRight aRight = (UserRight)vtSubPrincipal.elementAt(i);
		  if(aRight instanceof UserRightGroup)
		  {
			  UserRightGroup grp = (UserRightGroup)aRight;
			  if(grp.checkEmbedPrincipal(getName()))
				return true;
		  }
	  }
	  return false;
}
/**
 * 此处插入方法描述。
 * 创建日期:(2002-5-23 17:49:46)
 * @return boolean
 */
public boolean checkEmbedPrincipal(String sPrincipalName) throws SQLException {

	if(getName().equals(sPrincipalName))
		  return true;
	  for(int i=0; i<vtSubPrincipal.size(); i++)
	  {
		  UserRight aRight = (UserRight)vtSubPrincipal.elementAt(i);
		  if(aRight instanceof UserRightGroup)
		  {
			  UserRightGroup grp = (UserRightGroup)aRight;
			  if(grp.checkEmbedPrincipal(sPrincipalName))
				return true;
		  }
	  }
	  return false;
}
/**
 * 显示权限信息。
 * 创建日期:(2002-9-14 15:53:16)
 * @param ps java.io.PrintStream
 */
public void dump(PrintStream ps) {
	super.dump(ps);
	for(int i=0;i<vtSubPrincipal.size();i++){
		ps.println("right "+name+"--> sub functions");
		UserRight ur = (UserRight)vtSubPrincipal.elementAt(i);
		ur.dump(ps);
	}
}
/**
 * 此处插入方法描述。
 * 创建日期:(2002-7-15 19:16:45)
 */
public String fromRequest(RequestContext context,Connection conn,int type) throws Exception {

	System.out.println("USER Right Group---fromRequest");

	StringBuffer sb = new StringBuffer("");

	setFolder(1);
	setDescription((String)context.getParameter("description"));
	setName((String) context.getParameter("name"));


	String selecteditem = (String)context.getParameter("selectedid");
	vtSubPrincipal = null;
	vtSubPrincipal = new Vector();

	System.out.println("USER Right Group---fromRequest-selecteditem="+selecteditem);

	StringTokenizer st = new StringTokenizer(selecteditem,"@@");
	while(st.hasMoreTokens()){
		String subFuncId = (String)st.nextElement();
		long subfuncid = new Long(subFuncId).longValue();

		com.corp.bisc.ebiz.security.WebPrincipal wp = UserRightManager.findPrincipalById(subfuncid,conn);
		if(wp instanceof UserRightGroup){
			UserRightGroup urg = (UserRightGroup)wp;
			if(urg != null)
				if(urg.checkEmbedPrincipal(getName())){
					sb.append(subfuncid);
					sb.append("@@");
				}
		}
	}

	if(!sb.toString().equalsIgnoreCase(""))
		return sb.toString();

	StringTokenizer st1 = new StringTokenizer(selecteditem,"@@");
	while(st1.hasMoreTokens()){
		String subFuncId = (String)st1.nextElement();
		long subfuncid = new Long(subFuncId).longValue();

		com.corp.bisc.ebiz.security.WebPrincipal wp = UserRightManager.findPrincipalById(subfuncid,conn);
		System.out.println("USER Right Group---fromRequest-subfuncid="+subfuncid);
		if(wp != null){
			System.out.println("USER Right Group---fromRequest-wp != null");
			addSubPrincipal(wp);
		}
	}
	if(type == 0){
		System.out.println("USER Right Group---addToDB(conn)");
		addToDB(conn);
	}
	else{
		System.out.println("USER Right Group---updateDB(conn)");
		updateDB(conn);
	}
	return "";
}
/**
 * hasRight 方法注解。
 */
public boolean hasRight(long rightID){



	if(this.id == rightID)
		return true;
	for(int i=0;i<vtSubPrincipal.size();i++){
		UserRight ur = (UserRight)vtSubPrincipal.elementAt(i);
		if(ur.hasRight(rightID))
			return true;
	}

	return false;




}
/**
 * 根据权限的名称判断是否具有权限
 */
public boolean hasRight(String rightName) {

	if(this.name.equalsIgnoreCase(rightName))
		return true;
	for(int i=0;i<vtSubPrincipal.size();i++){
		UserRight ur = (UserRight)vtSubPrincipal.elementAt(i);
		if(ur.hasRight(rightName))
			return true;
	}

	return false;
}
/**
 * 此处插入方法描述。
 * 创建日期:(2002-6-1 11:06:14)
 * @return boolean
 * @param id java.lang.String
 */
 //蔡楚煌,0808,由于ur.getId返回String型,此处相应调整
public boolean ifSubFucn(String id)  throws Exception{
	int size = vtSubPrincipal.size();
	for(int i = 0;i<size;i++){
		UserRight ur = (UserRight)vtSubPrincipal.elementAt(i);
		if(ur.getId().equals(id))
			return true;
	}
	return false;
}
 public void loadSubRights(Connection conn) throws SQLException{

	 String sql = "select SubFunc from S_PRINCIPALGROUP where FuncID ="+this.getId();
	 Statement stat = conn.createStatement();
	 ResultSet rs = stat.executeQuery(sql);

	 try{

	 while(rs.next()){
		  long sSub = rs.getLong(1);
		  WebPrincipal principal = UserRightManager.findPrincipalById(sSub,conn);
		  if(principal == null){
			  System.out.println("There is error in the group definition");
			  System.out.println(this.getName());
		  }else{
			  //检查是否有递归嵌套的权限组
			  if(principal instanceof UserRightGroup){
				  if(!((UserRightGroup)principal).checkEmbedPrincipal(getName()))
					vtSubPrincipal.addElement(principal);
			  }else{
				  //如果是基本权限就直接添加
			  	vtSubPrincipal.addElement(principal);
			  }
		  }
	 }
	 rs.close();
	 stat.close();

	 }catch(SQLException e){

		 System.out.println("SQLException e="+e);

		 throw e;
	 }

   }
/**
 * 此处插入方法描述。
 * 创建日期:(2002-7-16 15:50:51)
 * @param args java.lang.String[]
 */
public static void main(String[] args) {

	try	{
		//oracle use
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@portaldb", "sseuser", "ibmsse");

		UserRightGroup urg = new UserRightGroup();
		urg.setId(41);
		urg.setDescription("测试修改组");
		urg.setFolder(1);
		urg.setName("修改小组");

		UserRight ur = new UserRight();
		ur.setId(4);
		urg.addSubPrincipal(ur);

		urg.deleteFromDB(conn);

	}catch(Exception e){
		System.out.println(e);
	}
}
 /**
	* 更新本权限组在数据库中的定义
	*/
   public void updateDB(Connection conn) throws SQLException
   {
	  System.out.println("USER Right Group---updateDB");

	   long nId = new Long(getId()).longValue();

	   System.out.println("USER Right Group---updateDB-nId="+nId);

	  //先删除原有的权限组中包含的子权限
	  PreparedStatement ps = conn.prepareStatement("delete from S_PRINCIPALGROUP where FuncId = ?");
	  ps.setLong(1, nId);
	  ps.executeUpdate();
	  ps.close();

	  System.out.println("USER Right Group---updateDB-删除原有的权限组中包含的子权限");

	  //再将现有的权限加入
	  //ps = conn.prepareStatement("insert into S_PRINCIPALGROUP (FuncID, SubFunc) values(" + this.getId() + ",?)");
	  ps = conn.prepareStatement("insert into S_PRINCIPALGROUP (FuncID, SubFunc) values("+nId+",?)");
	  for(int i=0; i<vtSubPrincipal.size(); i++)
	  {
		  WebPrincipal principal = (WebPrincipal)vtSubPrincipal.elementAt(i);
		  ps.setLong(1, new Long(principal.getId()).longValue());
		  ps.executeUpdate();
	  }
	  ps.close();
	  System.out.println("USER Right Group---updateDB-再将现有的权限加入");

	  //最后更新权限组定义
	  ps = conn.prepareStatement("update S_PRINCIPAL set Description=?, name=? where funcid=?");
	  ps.setString(1, this.getDescription());
	  ps.setString(2, this.getName());
	  ps.setLong(3, nId);
	  ps.executeUpdate();
	  ps.close();
	  System.out.println("USER Right Group---updateDB-最后更新权限组定义");

	}
}

⌨️ 快捷键说明

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