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