addressindex.java

来自「一个日本流行的,功能较全的开源Web办公管理(Groupware)系统。」· Java 代码 · 共 180 行

JAVA
180
字号
package jp.co.sjts.gsession.main;

/*
 * 僀儞僨僢僋僗庢摼僋儔僗  AddressIndex.java
 * Copyright (C) 1999-2002 Japan Total System Co,LTD
 *
 */

import java.io.File;
import java.util.Iterator;
import java.util.Hashtable;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import jp.co.sjts.gsession.tools.*;
import jp.co.sjts.gsession.tools.mail.*;

public class AddressIndex {

	private int max = 0;
	private String cardDir = null;
	private String dataDir = null;

	private static final String[] indexs = {"偁","偄","偆","偊","偍","偐","偒","偔","偗","偙","偝","偟","偡","偣","偦","偨","偪","偮","偰","偲","側","偵","偸","偹","偺","偼","傂","傆","傊","傎","傑","傒","傓","傔","傕","傗","備","傛","傜","傝","傞","傟","傠","傢","傪","傫","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","etc"};

	public AddressIndex() {
	}

	public static synchronized HashSet getIndexs(int subcmd, UserManager usermanager, String dataDir) {
		IndexSearch idxSearch = null;
		HashSet indexSet = new HashSet();

		if(subcmd == GSCmd.SUB_SHAINADD_GROUP)
			return indexSet;

		String indexURL = dataDir+GSFilename.GS_DIR_IDX+File.separator;
		if(subcmd == GSCmd.SUB_SHAINADD_EMAIL)
			idxSearch = new KanaIndexSearch(indexURL+GSFilename.GS_IDX_MAIL);
		else
			idxSearch = new KanaIndexSearch(indexURL+GSFilename.GS_IDX_KANA);

		try {
			for(int i=0; i < indexs.length; i++) {
				List idlist = idxSearch.getIDs(indexs[i].hashCode());
				if(idlist != null) {
					Iterator it_id = idlist.iterator();
					while(it_id.hasNext()) {
						Integer id = (Integer)it_id.next();
						IUser user = usermanager.getUser(id.intValue());
						if(user.getEmail().length() > 0) {
							indexSet.add(indexs[i]);
							break;
						}
					}
				}
			}
		} catch(GSException ge) {
			indexSet = new HashSet();
		}

		return indexSet;
	}

	public static synchronized MailAddress setMailAddress(MailAddress address, UserManager usermanager, Hashtable hsPara, String dataDir) throws GSException {

		try {
			String indexDir = dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_KANA;
			IndexSearch idxSearch = new KanaIndexSearch(indexDir);

			String[] tos = (String[])hsPara.get("to");
			HashSet toSet = new HashSet();
			if(tos != null) {
				for(int i=0; i < tos.length; i++)
					toSet.add(tos[i]);
			}
			String[] ccs = (String[])hsPara.get("cc");
			HashSet ccSet = new HashSet();
			if(ccs != null) {
				for(int i=0; i < ccs.length; i++)
				ccSet.add(ccs[i]);
			}
			String[] bccs = (String[])hsPara.get("bcc");
			HashSet bccSet = new HashSet();
			if(bccs != null) {
				for(int i=0; i < bccs.length; i++)
					bccSet.add(bccs[i]);
			}

			for(int i=0; i < indexs.length; i++) {
				List idlist = idxSearch.getIDs(indexs[i].hashCode());
				if(idlist != null) {
					Iterator it_id = idlist.iterator();
					while(it_id.hasNext()) {
						Integer id = (Integer)it_id.next();
						IUser user = usermanager.getUser(id.intValue());
						String email = user.getEmail();

						if(email.length() > 0) {
							address.removeTO(email);
							address.removeCC(email);
							address.removeBCC(email);

							if(toSet.contains(id.toString()))
							   address.addTO(user.getName(),email);
							if(ccSet.contains(id.toString()))
								address.addCC(user.getName(),email);
							if(bccSet.contains(id.toString()))
								address.addBCC(user.getName(),email);
						}
					}
				}
			}
		} catch(GSException ge) {
			throw ge;
		}

		return address;
	}

	public static synchronized Hashtable setParam(MailAddress address, UserManager usermanager, Hashtable hsPara, String dataDir) throws GSException {

		try {
			String indexDir = dataDir+GSFilename.GS_DIR_IDX+File.separator+GSFilename.GS_IDX_KANA;
			IndexSearch idxSearch = new KanaIndexSearch(indexDir);

			HashSet toSet = new HashSet();
			HashSet ccSet = new HashSet();
			HashSet bccSet = new HashSet();
			for(int i=0; i < indexs.length; i++) {
				List idlist = idxSearch.getIDs(indexs[i].hashCode());
				if(idlist != null) {
					Iterator it_id = idlist.iterator();
					while(it_id.hasNext()) {
						Integer id = (Integer)it_id.next();
						IUser user = usermanager.getUser(id.intValue());
						String email = user.getEmail();

						if(email.length() > 0) {
							if(address.containsTO(email))
								toSet.add(id.toString());
							if(address.containsCC(email))
								ccSet.add(id.toString());
							if(address.containsBCC(email))
								bccSet.add(id.toString());
						}
					}
				}
			}

			String[] tos = new String[toSet.size()];
			Iterator it_to = toSet.iterator();
			for(int i=0; i < tos.length; i++) {
				tos[i] = (String)it_to.next();
			}

			String[] ccs = new String[ccSet.size()];
			Iterator it_cc = ccSet.iterator();
			for(int i=0; i < ccs.length; i++) {
				ccs[i] = (String)it_cc.next();
			}

			String[] bccs = new String[bccSet.size()];
			Iterator it_bcc = bccSet.iterator();
			for(int i=0; i < bccs.length; i++) {
				bccs[i] = (String)it_bcc.next();
			}

			hsPara.put("to", tos);
			hsPara.put("cc", ccs);
			hsPara.put("bcc", bccs);

		} catch(GSException ge) {
			return hsPara;
		}

		return hsPara;
	}
}

⌨️ 快捷键说明

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