📄 userrightgroup.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 + -