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

📄 usermanager.java

📁 一个日本流行的,功能较全的开源Web办公管理(Groupware)系统。
💻 JAVA
字号:
package jp.co.sjts.gsession.main;
/*
 * 儐乕僓儅僱乕僕儍乕  UserManager.java
 * Copyright (C) 1999-2000 Japan Total System Co,LTD
 *    Satoru K  <koni@sjts.co.jp>
 */

import java.io.File;
import java.io.Serializable;
import java.util.Map;
import java.util.ArrayList;
import jp.co.sjts.gsession.tools.*;

public class UserManager extends GSUserManager implements Serializable {
	//MainBaseServlet gsession=null;

	// 僐儞僗僩儔僋僞
//  	public UserManager(String dataDir,MainBaseServlet gsession) throws GSException
//  	{
//  		super(dataDir);
//  		this.gsession = gsession;
//  	}
	public UserManager(String dataDir) throws GSException {
		super(dataDir);
		//this.gsession = gsession;
	}

	/*
	* password,group,僼傽僀儖傪撉傒崬傓
	* in:	側偟
	* out:	側偟
	*/
	public synchronized void Load() throws GSException {
		// group僼傽僀儖撉崬傒
		GroupF.Load();
		PassF.Load();
	}

	/*
	* 僌儖乕僾ID偐傜強懏偟偰偄傞娗棟幰偺儐乕僓ID攝楍傪曉偡
	* in:	gid(int)		僌儖乕僾ID
	*
	* out:	(int[])			娗棟幰偲偟偰強懏偟偰偄傞儐乕僓偺儐乕僓ID攝楍
	*/
	public synchronized int[] GetAdminUserArray(int gid) {
		int[] uids = GroupF.getUserArray(gid);
		if(uids==null)
			return null;

		ArrayList auids = new ArrayList(uids.length);
		for(int i=0;i<uids.length;i++) {
			if(PassF.isAdmin(gid,uids[i]))
				auids.add(new Integer(uids[i]));
		}
		int[] retauids = new int[auids.size()];
		for(int i=0;i<auids.size();i++)
			retauids[i] = ((Integer)auids.get(i)).intValue();

		return retauids;
	}

	/*
	* 儐乕僓ID偐傜IPassword傪曉偡
	* in:	uid(int)		儐乕僓ID
	*
	* out:	(IPassword)		奩摉偡傞IPassword
	*/
	public synchronized IPassword getPassword(int uid) throws GSException {
		return (IPassword)PassF.UidToPassword(uid);
	}

	/*
	* 儐乕僓ID偐傜僷僗儚乕僪傪曉偡
	* in:	uid(int)		儐乕僓ID
	*
	* out:	(String)		僷僗儚乕僪
	*/
	public synchronized String getMDPass(int uid) {
		return PassF.getMDPass(uid);
	}

	/*
	* 儐乕僓ID偺僷僗儚乕僪傪愝掕偡傞
	* in:	uid(int)		儐乕僓ID
	*		mdpass(String)	僷僗儚乕僪
	*
	* out:	側偟
	*/
	public synchronized void setMDPass(int uid,String mdpass) throws GSException {
		PassF.setMDPass(uid,mdpass);
		PassF.Save();
	}

	/*
	* 僌儖乕僾ID偐傜IGroup傪曉偡
	* in:	gid(int)		僌儖乕僾ID
	*
	* out:	(IGroup)		奩摉偡傞IGroup
	*/
	public synchronized IGroup getGroup(int gid) throws GSException {
		return (IGroup)GroupF.GidToGroup(gid);
	}

	/*
	* 怴婯僌儖乕僾搊榐
	* in:	name(String)	僌儖乕僾偺柤慜
	*		note(String)	僌儖乕僾偺愢柧
	*
	* out:	側偟
	*/
	public synchronized void addNewGroup(String name,String note) throws GSException {
		GroupF.addGroup(name,note);
		GroupF.Save();
	}

	/*
	* 僌儖乕僾忣曬偺曄峏
	* in:	gid(int)		曄峏偡傞僌儖乕僾偺僌儖乕僾ID
	* 		name(String)	僌儖乕僾偺柤慜
	*		note(String)	僌儖乕僾偺愢柧
	*
	* out:	側偟
	*/
	public synchronized void setGroup(int gid,String name,String note) throws GSException {
		GroupF.setGroup(gid,name,note);
		GroupF.Save();
	}

	/*
	* 巜掕儐乕僓ID偺儐乕僓柤傪曄峏偡傞
	* in:	uid(int)	儐乕僓ID
	*
	* out:	(String)	儐乕僓柤
	*/
	public synchronized void setUserName(int uid,String name) throws GSException {
		PassF.setUserName(uid,name);
		PassF.Save();
	}

	/*
	* 儐乕僓ID偐傜強懏偟偰偄傞僌儖乕僾偺攝楍傪曉偡丅
	* in:	uid(int)	儐乕僓ID
	*
	* out:	(Password.GroupAuth[])	僌儖乕僾ID,尃尷
	*/
	public synchronized IPassword.GroupAuth[] getGroupAuthArray(int uid) {
		return PassF.GetGroupAuthArray(uid);
	}

	/*
	* 儐乕僓ID偺嵟廔儘僌僀儞帪娫傪愝掕偡傞
	* in:	uid(int)	儐乕僓ID
	*		time(String)	YYYYMMDDHHmmss
	*
	* out:	側偟
	*/
	public synchronized void setLastLoginTime(int uid,String time) throws GSException {
		PassF.SetLastLoginTime(uid,time);
		PassF.Save();
	}

	/*
	* 儐乕僓丒僷僗儚乕僪偺僠僃僢僋
	* in:	user(String)		儐乕僓幆暿
	*		pass(String)		僷僗儚乕僪
	*
	* out:	(int)儐乕僓ID
	*/
	public synchronized int canLogin(String user,String pass) throws GSException {
		Password password = PassF.UserToPassword(user);
		if(password != null)
			if(password.isEqualPass(pass))
				return password.GetUserID();

		return -1;
	}

	/*
	* 儐乕僓幆暿偑婛偵搊榐偝傟偰偄傞偐傪僠僃僢僋
	* in:	user(String)		儐乕僓幆暿
	*
	* out:	(boolean)			搊榐偝傟偰偄傞応崌	:true
	*							偦傟埲奜偼			:false
	*/
	public synchronized boolean existsUser(String user) throws GSException {
		Password password = PassF.UserToPassword(user);
		if(password == null)
			return false;
		return true;
	}

	/*
	* 怴婯儐乕僓搊榐
	*
	* in:	user(User)				搊榐偡傞儐乕僓偺僨乕僞
	*		gids(int[])				搊榐偡傞儐乕僓偑強懏偡傞僌儖乕僾偺GID
	*		logonID					儘僌僆儞偵巊梡偡傞儐乕僓ID
	*		exPasswd(String)		埫崋嵪傒僷僗儚乕僪
	*		pathShashin(String)		幨恀僼傽僀儖(僥儞億儔儕)偺僷僗
	*
	* out:	側偟
	*/
	public synchronized void addNewUser(User user,int[] gids,String logonID,String exPasswd,String pathShashin)
		throws GSException {

		int uid;
		// PassF偺峏怴
		try {
			uid = PassF.addUser(logonID,exPasswd,user.getName(),gids);
		} catch(GSException e) {
			throw new GSException(e.toString(),e);
		}

		// GroupF偺峏怴
		try {
			GroupF.addUser(gids,uid);
		} catch(GSException e) {
			PassF.delUser(uid);
			throw new GSException(e.toString(),e);
		}

		// Password僼傽僀儖偺曐懚
		try {
			PassF.Save();
		} catch(GSException e) {
			PassF.delUser(uid);
			GroupF.delUser(gids,uid);
			throw new GSException(e.toString(),e);
		}

		// 僌儖乕僾僼傽僀儖偺曐懚
		try{
			GroupF.Save();
		} catch(GSException e) {
			PassF.delUser(uid);
			GroupF.delUser(gids,uid);
			PassF.Save();
			throw new GSException(e.toString(),e);
		}

		// 儐乕僓僼傽僀儖偺嶌惉
		UserFile userFile = new UserFile(dataDir+GSFilename.GS_DIR_USER+File.separator+Integer.toString(uid));

		userFile.setName(user.getName());
		userFile.setKana(user.getKana());
		userFile.setEmail(user.getEmail());
		userFile.setPosition(user.getPosition());
		userFile.setPostno(user.getPostno());
		userFile.setAddress1(user.getAddress1());
		userFile.setAddress2(user.getAddress2());
		userFile.setTel(user.getTel());
		userFile.setFax(user.getFax());
		userFile.setPtel1(user.getPtel1());
		userFile.setPtel2(user.getPtel2());
		userFile.setMemo(user.getMemo());
		userFile.setDefaultGroup(user.getDefaultGroup());
		// 幨恀僼傽僀儖偺僐僺乕
		if( (pathShashin!=null)&&(pathShashin.length()>0)) {
			File src=new File(pathShashin);
			File dst=new File(dataDir+GSFilename.GS_DIR_USER+File.separator+Integer.toString(uid)
							  +File.separator+"shashin.gif");
			GSTool.copyFile(src,dst);
			userFile.setShashin(true);
		}
		userFile.Save();


		IndexSearch idxSearch=null;
		// 偐側僀儞僨僢僋僗僼傽僀儖偺嶌惉
		idxSearch=new KanaIndexSearch(dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_KANA);
		idxSearch.addIdx(uid,user.getKana());

		// mail僀儞僨僢僋僗僼傽僀儖偺嶌惉
		idxSearch=new EmailIndexSearch(dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_MAIL);
		idxSearch.addIdx(uid,user.getEmail());
	}

	/*
	* 僌儖乕僾娗棟幰偵愝掕偡傞
	*
	* in:	gid(int)		懳徾偺僌儖乕僾ID
	*		uid(int[])		娗棟幰偵偡傞儐乕僓偺ID偺攝楍
	*
	* out:	側偟
	*/
	public synchronized void setAdmin(int gid,int[] uid) throws GSException {
		for(int i=0;i<uid.length;i++) {
			PassF.setAdmin(gid,uid[i]);
		}
		PassF.Save();
	}

	/*
	* 僲乕儅儖儐乕僓偵愝掕偡傞
	*
	* in:	gid(int)		懳徾偺僌儖乕僾ID
	*		uid(int[])		娗棟幰偵偡傞儐乕僓偺ID偺攝楍
	*
	* out:	側偟
	*/
	public synchronized void setNormal(int gid,int[] uid) throws GSException {
		for(int i=0;i<uid.length;i++) {
			PassF.setNormal(gid,uid[i]);
		}
		PassF.Save();
	}

	/*
	* 僌儖乕僾娗棟幰偵愝掕偡傞
	*
	* in:	gid(int)		懳徾偺僌儖乕僾ID
	*		uid(int)		娗棟幰偵偡傞儐乕僓偺ID
	*
	* out:	側偟
	*/
	public synchronized void setAdmin(int gid,int uid) throws GSException {
		PassF.setAdmin(gid,uid);
		PassF.Save();
	}

	/*
	* 僲乕儅儖儐乕僓偵愝掕偡傞
	*
	* in:	gid(int)		懳徾偺僌儖乕僾ID
	*		uid(int)		娗棟幰偵偡傞儐乕僓偺ID
	*
	* out:	側偟
	*/
	public synchronized void setNormal(int gid,int uid) throws GSException {
		PassF.setNormal(gid,uid);
		PassF.Save();
	}

	/*
	* 僌儖乕僾偺嶍彍
	*
	* in:	gid(int)		懳徾偺僌儖乕僾ID
	*
	* out:	側偟
	*/
	public synchronized void delGroup(int gid) throws GSException {
		int[] uids = GroupF.delGroup(gid);
		GroupF.Save();

		if(uids!=null) {
			for(int i=0;i<uids.length;i++)
				PassF.delGroup(uids[i],gid);
			PassF.Save();
		}
	}

	/*
	* 儐乕僓曇廤
	*
	* in:	uid(int)				曇廤懳徾偺儐乕僓ID
	*		user(User)				搊榐偡傞儐乕僓偺僨乕僞
	*		gids(int[])				搊榐偡傞儐乕僓偑強懏偡傞僌儖乕僾偺GID
	*		logonID					儘僌僆儞偵巊梡偡傞儐乕僓ID
	*		exPasswd(String)		埫崋嵪傒僷僗儚乕僪
	*		pathShashin(String)		幨恀僼傽僀儖(僥儞億儔儕)偺僷僗
	*
	* out:	側偟
	*/
	public synchronized void editUser(int uid,User user,int[] gids,String logonID,String exPasswd,String pathShashin)
		throws GSException {

		// PassF偺峏怴
		int[] delGids = PassF.editUser(uid,logonID,exPasswd,user.getName(),gids);

		// GroupF偺峏怴
		if(delGids!=null)
			GroupF.delUser(delGids,uid);
		GroupF.addUser(gids,uid);

		// Password僼傽僀儖偺曐懚
		PassF.Save();
		// 僌儖乕僾僼傽僀儖偺曐懚
		GroupF.Save();

		// 儐乕僓僼傽僀儖偺嶌惉
		UserFile userFile = new UserFile(dataDir+GSFilename.GS_DIR_USER+File.separator+Integer.toString(uid));
		userFile.Load();

		String oldKana = userFile.getKana();
		String oldEmail = userFile.getEmail();

		userFile.setName(user.getName());
		userFile.setKana(user.getKana());
		userFile.setEmail(user.getEmail());
		userFile.setPosition(user.getPosition());
		userFile.setPostno(user.getPostno());
		userFile.setAddress1(user.getAddress1());
		userFile.setAddress2(user.getAddress2());
		userFile.setTel(user.getTel());
		userFile.setFax(user.getFax());
		userFile.setPtel1(user.getPtel1());
		userFile.setPtel2(user.getPtel2());
		userFile.setMemo(user.getMemo());
		userFile.setDefaultGroup(user.getDefaultGroup());
		// 幨恀僼傽僀儖偺僐僺乕
		if( (pathShashin!=null)&&(pathShashin.length()>0)) {
			File src=new File(pathShashin);
			File dst=new File(dataDir+GSFilename.GS_DIR_USER+File.separator+Integer.toString(uid)
							  +File.separator+"shashin.gif");
			GSTool.copyFile(src,dst);
			userFile.setShashin(true);
		} else {
			File pic=new File(dataDir+GSFilename.GS_DIR_USER+File.separator+Integer.toString(uid)
							  +File.separator+"shashin.gif");
			if(pic.exists())
				pic.delete();
			userFile.setShashin(false);
		}
		userFile.Save();

		// 偐側僀儞僨僢僋僗僼傽僀儖偺嶍彍/捛壛
		if( !oldKana.equals(user.getKana())) {
			IndexSearch idxSearch=
				new KanaIndexSearch(dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_KANA);
			idxSearch.delIdx(uid,oldKana);
			idxSearch.addIdx(uid,user.getKana());
		}

		// mail僀儞僨僢僋僗僼傽僀儖偺嶍彍/捛壛
		if(!oldEmail.equals(user.getEmail())) {
			IndexSearch idxSearch=
				new EmailIndexSearch(dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_MAIL);
			idxSearch.delIdx(uid,oldEmail);
			idxSearch.addIdx(uid,user.getEmail());
		}
	}

	/*
	* 儐乕僓偺嶍彍
	*
	* in:	uid(int)		懳徾偺儐乕僓ID
	*		dataDir(String)	僨乕僞僨傿儗僋僩儕
	*
	* out:	側偟
	*/
	public synchronized void delUser(int uid,String dataDir) throws GSException {
		int[] gids = PassF.delUser(uid);
		PassF.Save();

		if(gids!=null) {
			GroupF.delUser(gids,uid);
			GroupF.Save();
		}

		UserFile user=new UserFile(dataDir+GSFilename.GS_DIR_USER+File.separator+Integer.toString(uid));
		user.Load();

		// 偐側僀儞僨僢僋僗僼傽僀儖偺嶍彍
		String Kana = user.getKana();
		IndexSearch kanaIdx = 
			new KanaIndexSearch(dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_KANA);
		kanaIdx.delIdx(uid,Kana);

		// mail僀儞僨僢僋僗僼傽僀儖偺嶌惉
		String Email = user.getEmail();
		IndexSearch emailIdx = 
			new EmailIndexSearch(dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_MAIL);
		emailIdx.delIdx(uid,Email);

		// 儐乕僓僨傿儗僋僩儕偺嶍彍
		File userFile = new File(dataDir+GSFilename.GS_DIR_USER+File.separator+Integer.toString(uid));
		GSTool.deleteDir(userFile);
	}


}

⌨️ 快捷键说明

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