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

📄 hnsybusersmanager.java

📁 用java 实现的IE browser适合于学者
💻 JAVA
字号:
/*
 * Created on 2004-8-25
 *
 * This Class is part of HengNgai Jewelry Group(Panyu)'s Product
 * 
 */
package com.hnjchina.securityManager;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
import java.util.TreeSet;
import java.util.Vector;

//import com.hnjchina.dbapis.IDbAPI;

/**
 * @author fm
 *
 * 
 * 
 */
//public class HnSybUsersManager extends UsersManager implements IDbAPI{
public class HnSybUsersManager extends UsersManager {	
	private Connection database;
	private PreparedStatement stmUserID;
	private PreparedStatement stmUserName;
	private PreparedStatement stmUserGroupingsByUser;
	private PreparedStatement stmUserGroupingsByGroup;
	private TreeSet history = new TreeSet(PropUser.comparator);
	
	//used in the getProperty() function,define which column to get
	protected final int PROPERTY_USERID = 0;
	protected final int PROPERTY_USERNAME = 1;
	protected final int PROPERTY_DESCRIPTION =2;
	protected final int PROPERTY_PASSWORD = 3;
	protected final int PROPERTY_PRIORITY = 4;
	protected final int PROPERTY_STATUS = 5;
	protected final int PROPERTY_TYPE = 6;
	
	/* (non-Javadoc)
	 * @see com.hnjchina.users.UsersManager#getUserID(java.lang.String)
	 */
	public HnSybUsersManager(Connection adb_Master){
		try {
			if (adb_Master != null && !adb_Master.isClosed()){
				ResultSet lrs_tmp;
				String[] ls_aType = {"Table"};		
				if (adb_Master != null) {
					DatabaseMetaData metadata;
					try {
						metadata = adb_Master.getMetaData();
						lrs_tmp = metadata.getTables(null, null, "security_users", ls_aType);
						if (lrs_tmp.next()) {
							database =adb_Master;
							stmUserName = database.prepareStatement(
									"select * from security_users where name = ? ");
							stmUserID = database.prepareStatement(
									"select * from security_users where userid = ? ");
							stmUserGroupingsByUser = database.prepareStatement(
									"select grpid from security_groupings where userid = ? ");
							stmUserGroupingsByGroup = database.prepareStatement(
									"select userid from security_groupings where grpid = ? ");
						}
						else System.out.println("Target db is not the one I want");				
					}catch(SQLException e) {
						System.out.println("SQL Error:"+e.toString());
					}			
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 
	 * @param userID the User's ID
	 * @param property should be one of PROPERTY_USERID/PROPERTY_USERNAME/PROPERTY_DESCRIPTION/PROPERTY_PASSWORD
	 * 									PROPERTY_PRIORITY/PROPERTY_STATUS
	 * @return String or Integer,you convert it to what you want
	 */
	protected Object getUserProperty(int userID,int property){
		HnSybPropUser user = (HnSybPropUser)getUserProperty(userID);
		if (user == null) return null;
		switch(property){
			case PROPERTY_USERNAME:
				return user.userName.toLowerCase();
			case PROPERTY_DESCRIPTION:
				return user.description;
			case PROPERTY_PASSWORD:
				return user.passWord;
			case PROPERTY_PRIORITY:
				return new Integer(user.priority);
			case PROPERTY_STATUS:
				return new Integer(user.status);
			case PROPERTY_TYPE:
				return new Integer(user.userType);
			default:
				return null;
		}
	}
	public int getUserID(String userName){
		boolean found = false;
		HnSybPropUser user;
		
		user = new HnSybPropUser();
		user.userName = userName;		
		if (history.contains(user)){
			user =(HnSybPropUser) history.tailSet(user).iterator().next();
			found = true;
		}else{
			try {
				stmUserName.clearParameters();
				stmUserName.setString(1,userName);
				ResultSet lrs_Tmp = stmUserName.executeQuery();
				if (lrs_Tmp.next()){
					user = getPropertyFromResultSet(lrs_Tmp);
					found = true;
				}
				lrs_Tmp.close();
				if (found) history.add(user);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}		
		if (found){
			return user.userID;
		}else{
			return -1;
		}
	}
	
	protected HnSybPropUser getPropertyFromResultSet(ResultSet rs){
		HnSybPropUser rc = new HnSybPropUser();
		try {
			rc.userID = rs.getInt("userid");		
			rc.userName = rs.getString("name");
			rc.description = rs.getString("description");
			rc.priority = rs.getInt("priority");
			rc.status = rs.getInt("status");
			rc.passWord = rs.getString("password");	//Perhaps this need to be crypted
			rc.userType = rs.getInt("user_type");
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return rc;
	}

	/* (non-Javadoc)
	 * @see com.hnjchina.users.UsersManager#getUserName(int)
	 */
	public String getUserName(int userID) {
		return (String) getUserProperty(userID,PROPERTY_USERNAME);
	}

	/* (non-Javadoc)
	 * @see com.hnjchina.users.UsersManager#getUserDescription(int)
	 */
	public String getUserDescription(int userID) {
		return (String) getUserProperty(userID,PROPERTY_DESCRIPTION);
	}

	/* (non-Javadoc)
	 * 
	 * @see com.hnjchina.users.UsersManager#getType(int)
	 */
	public int getType(int userID) {
		//In sybase System,255,means group,zero means user
		if (((Integer)getUserProperty(userID,PROPERTY_TYPE)).intValue() == 255) return UsersManager.TYPE_GROUP;
		return UsersManager.TYPE_USER;		
	}

	/* (non-Javadoc)
	 * @see com.hnjchina.users.UsersManager#getUserGroups(int)
	 */
	public int[] getUserGroups(int userID) {
		return getGroupings(userID,UsersManager.TYPE_USER);
	}
	/**
	 * Just cleanup the History
	 */
	public void refresh(){
		history.clear();
	}
	/* (non-Javadoc)
	 * @see com.hnjchina.users.UsersManager#getGroupUsers(int)
	 */
	public int[] getGroupUsers(int userID) {
		return getGroupings(userID,UsersManager.TYPE_GROUP);
	}
	protected int[] getGroupings(int userID,int type){
		Vector vector;
		PreparedStatement statement;
		if (getType(userID) == type){
			try{
				vector = new Vector();
				if (type == UsersManager.TYPE_GROUP){
					statement = stmUserGroupingsByGroup;
				}else{
					statement = stmUserGroupingsByUser;
				}
				statement.clearParameters();
				statement.setInt(1,userID);
				ResultSet rs = statement.executeQuery();
				while(rs.next()){
					vector.add(new Integer(rs.getInt(1)));
				}
				rs.close();
				Iterator iterator = vector.iterator();
				int rc[] = new int[vector.size()];
				int i = 0;
				while(iterator.hasNext()){
					rc[i++]=((Integer)iterator.next()).intValue();
				}
				return rc;
			}catch (SQLException e){
				e.printStackTrace();				
			}
		}
		return null;
	}
	/* (non-Javadoc)
	 * @see com.hnjchina.users.UsersManager#addUser(com.hnjchina.dbapis.PropUser)
	 */
	public int addUser(PropUser user) {
		if (! (user instanceof HnSybPropUser)) return UsersManager.UPDATE_DATANOTREADY;
		if (user.userName.length()<=0) return UsersManager.UPDATE_DATANOTREADY;
		if (getUserID(user.userName)>0) return UsersManager.UPDATE_DUPLICATED;
		HnSybPropUser myUser = (HnSybPropUser) user;
		myUser.userType = (myUser.userType == UsersManager.TYPE_GROUP ? 255:0  );	//Wrapping goes here		
		if (myUser.userID<=0) {
			//TODO:: Generated one userID for the user
			//myUser.userID = getAvailableID();
		}
		try {
			Statement stm = database.createStatement();
			int rc = stm.executeUpdate(" insert into security_users(userid,name,description,priority,password,status,user_type" + 
					" values ("+myUser.userID+","+myUser.userName+","+myUser.description+","+myUser.priority+","+myUser.status+","+myUser.userType+")");
			if (rc>0){
				database.commit();
				return UsersManager.UPDATE_SUCCESSFULLY;
			}else{
				return UsersManager.UPDATE_DBERROR;
			}
		} catch (SQLException e) {
			e.printStackTrace();
			return UsersManager.UPDATE_DBERROR;
		}
	}
	/* (non-Javadoc)
	 * @see com.hnjchina.users.UsersManager#getUserProperty(int)
	 */
	public PropUser getUserProperty(int userID) {
		HnSybPropUser user;
		boolean found = false;
		
		user = new HnSybPropUser();
		user.userID = userID;
		if (history.contains(user)){
			user = (HnSybPropUser)history.tailSet(user).iterator().next();
			found = true;
		}else{
			try{
				stmUserID.clearParameters();
				stmUserID.setInt(1,userID);
				ResultSet rs = stmUserID.executeQuery();
				if (rs.next()){
					found = true;
					user = getPropertyFromResultSet(rs);
				}
				rs.close();
			}catch (SQLException e){
				e.printStackTrace();
			}
		}
		if (found) {
			return user;
		}else{
			return null;
		}
	}
	public void printHistory(){
		Iterator iterator = history.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
	}
}

⌨️ 快捷键说明

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