usermanagebean.java

来自「用JSP开发的考勤系统 编译器为myeclipse」· Java 代码 · 共 137 行

JAVA
137
字号
package kq.model.bean;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;

import xtu.cie.common.MyLogger;

import kq.model.Config;
import kq.model.datatype.User;

public class UserManageBean {
	private UserManageBean(){};
	private static UserManageBean instance = null;
	public static UserManageBean getInstance(){
		if(instance == null){
			instance = new UserManageBean();
			instance.init();
		}
		return instance;
	}
	
	private Hashtable<String,User> userTable = null;
	private BufferedReader br = null;
	private FileWriter writer = null;
	private void loadUserData(Hashtable<String,User> userTable){
		try {
			if(br == null)
				br = new BufferedReader(new FileReader(Config.USER_FILE_PATH));
			String line = br.readLine();
			while(line != null){
				User user = new User();
				String[] infos = line.split("[|]");
				user.setUsername(infos[0]);
				user.setPassword(infos[1]);
				user.setRealName(infos[2]);
				user.setDepartment(infos[3]);
				List<String> roleList = new ArrayList<String>();
				for(int i=4;i<infos.length;i++){
					roleList.add(infos[i]);
				}
				user.setRole(roleList);
				userTable.put(user.getUsername(), user);
				line = br.readLine();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			MyLogger.getLogger().debug(e.getMessage());
		}
	}
	private void init(){
		userTable = new Hashtable<String,User>();
		loadUserData(userTable);
	}
	
	public User getUserInfo(String userName){
		return userTable.get(userName);
	}
	private static boolean isString(String str,boolean onlyLetter){
		char[] chars = str.toLowerCase().toCharArray();
		if(chars.length == 0)
			return false;
		for(int i=0;i<chars.length;i++){
			if(!onlyLetter && i==0 && (chars[i] == '_' || chars[i] == '.'))
				return false;
			if((chars[i] >= 'a' && chars[i] <= 'z') 
				|| (chars[i] >= '0' && chars[i] <= '9'))
				continue;
			if(!onlyLetter && (chars[i] == '_' || chars[i] == '.'))
				continue;
			
			return false;
		}
		return true;
	}
	public static boolean validateEmail(String email){
		if(email == null || email.equals("") 
				|| email.indexOf("@") == -1)
			return false;
		String prefix = email.substring(0, email.indexOf("@"));
		if(!isString(prefix,false))
			return false;
		
		String suffix = email.substring(email.indexOf("@")+1,email.length());
		if(!suffix.endsWith(".edu") && !suffix.endsWith(".edu.cn"))
			return false;
		if(!isString(suffix.substring(0, suffix.indexOf('.')),true))
			return false;
		
		return true;
	}
	public boolean validateUser(String username,String password){
		if(username == null || password == null)
			return false;
		if(!userTable.containsKey(username))
			return false;
		if(!userTable.get(username).getPassword().equals(password))
			return false;
		return true;
	}
	public boolean existUser(String username){
		return userTable.containsKey(username);
	}
	
	public boolean addUser(User transientUser){
		StringBuffer sb = new StringBuffer();
		sb.append(transientUser.getUsername()+"|");
		sb.append(transientUser.getPassword()+"|");
		sb.append(transientUser.getRealName()+"|");
		sb.append(transientUser.getDepartment()+"|");
		for(int i=0;i<transientUser.getRole().size();i++){
			sb.append(transientUser.getRole().get(i));
			if(i < transientUser.getRole().size()-1)
				sb.append("|");
		}		
		try {
			if(writer == null)
				writer = new FileWriter(Config.USER_FILE_PATH, true);
			synchronized(this){
	            writer.write("\r\n"+sb);  
	            writer.close();
	            userTable.put(transientUser.getUsername(), transientUser);
			}            
            return true;
        } catch (IOException e){  
        	MyLogger.getLogger().debug(e.getMessage());
            return false;
        } 
	}
}

⌨️ 快捷键说明

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