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

📄 addressparseimpl.java

📁 基于java的组号查询模块
💻 JAVA
字号:
package com.lily.dap.service.common.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.springframework.orm.ObjectRetrievalFailureException;

import com.lily.dap.Constants;
import com.lily.dap.model.organize.Department;
import com.lily.dap.model.organize.Person;
import com.lily.dap.model.organize.Post;
import com.lily.dap.service.common.AddressParse;
import com.lily.dap.service.core.exception.DataNotExistException;
import com.lily.dap.service.organize.OrganizeQuery;

/**
 * AddressParseImpl.java
 * 
 * <br>作者: 刘鹏
 *
 * <br>日期: 2006-7-17
 *
 * <br>版权所有:淄博百合软件
**/
public class AddressParseImpl implements AddressParse{
	private OrganizeQuery organizeQuery;
	
	public void setOrganizeQuery(OrganizeQuery organizeQuery) {
		this.organizeQuery = organizeQuery;
	}

	public boolean isAddressFormat(String address) {
		
		// TODO Auto-generated method stub
		return false;
	}
	
	/** 
	 * address:xxx@group,xxx@department,xxx@post,xxx@person,
	 * @return xxx@group,xxx@department,xxx@post,xxx@person,
	 */
	public String purify(String addresss) {
		if (addresss == null || "".equals(addresss))
			return "";
	
		StringBuffer buff = new StringBuffer();
		List organizeAddresses = splitAddress(addresss);
		for(int i = 0; i < organizeAddresses.size(); i++){
			OrganizeAddress organizeAddress = (OrganizeAddress)organizeAddresses.get(i);
			String key = organizeAddress.getKey();
			String type = organizeAddress.getType();
			if(null == key || "".equals(key)) continue;
			try {
				if(Constants.ADDRESS_FORMAT_GROUP.equals(type))
					organizeQuery.getGroup(Long.parseLong(key));
				else if(Constants.ADDRESS_FORMAT_DEPARTMENT.equals(type))
					organizeQuery.getDepartment(Long.parseLong(key));
				else if(Constants.ADDRESS_FORMAT_POST.equals(type))
					organizeQuery.getPost(Long.parseLong(key));
				else if(Constants.ADDRESS_FORMAT_PERSON.equals(type))
					organizeQuery.getPerson(Long.parseLong(key));
				
				buff.append(key + Constants.STRING_SEPARATOR6 + type + Constants.STRING_SEPARATOR3);
			} catch (ObjectRetrievalFailureException e) {
			} catch (DataNotExistException e) {	
			}
		}
		
		String addrs = buff.toString();
		if(addrs.length() != 0)
			addrs = addrs.substring(0,addrs.length() - 1);
		
		return addrs;
	}

	/**
	 * 解析address中的地址信息,将其转化为人员对象列表
	 * @param address格式为:xxx@group,xxx@department,xxx@post,xxx@person,
	 * @return Set{Person}
	 */
	public Set parse(String addresss) {
		Set set = new HashSet();
		
		if (addresss == null || "".equals(addresss))
			return set;
		
		addresss = purify(addresss);
		List organizeAddresses = splitAddress(addresss);
		for(int i = 0; i < organizeAddresses.size(); i++){
			OrganizeAddress organizeAddress = (OrganizeAddress)organizeAddresses.get(i);
			String key = organizeAddress.getKey();
			String type = organizeAddress.getType();
			set.addAll(getPersons(key,type));
		}
		
		return set;
	}

	/** 
	 * address:xxx@group,xxx@department,xxx@post,xxx@person,
	 * 将address解析的结果插入参数Set中,然后返回参数Set
	 * Set格式为:Set{Person}
	 */
	public Set parseAndInsertSet(String addresss, Set set) {
		if (addresss == null || "".equals(addresss))
			return set;
	
		addresss = purify(addresss);
		Set personSet = parse(addresss);
		set.addAll(personSet);
		return set;
	}
	
	public List parseToList(String addresss) {
		List list = new ArrayList();
		if (addresss == null || "".equals(addresss))
			return list;
		
		List organizeAddresses = splitAddress(addresss);
		for(int i = 0; i < organizeAddresses.size(); i++){
			OrganizeAddress organizeAddress = (OrganizeAddress)organizeAddresses.get(i);
			String key = organizeAddress.getKey();
			String type = organizeAddress.getType();
			String addr = key + Constants.STRING_SEPARATOR6 + type;
			list.add(addr);
		}
		
		return list;
	}
	
	public String parseFromList(List list){
		if(null == list)
			return "";
		
		String addresss = "";
		for(int i = 0; i < list.size(); i++){
			String addr = (String)list.get(i);
			addresss += addr + Constants.STRING_SEPARATOR3;
		}
		
		if(addresss.length() != 0)
			addresss = addresss.substring(0,addresss.length() - 1);
		
		return addresss;
	}
	
	public Set parseToSet(String addresss) {
		Set set = new HashSet();
		if (addresss == null || "".equals(addresss))
			return set;
		
		List organizeAddresses = splitAddress(addresss);
		for(int i = 0; i < organizeAddresses.size(); i++){
			OrganizeAddress organizeAddress = (OrganizeAddress)organizeAddresses.get(i);
			String key = organizeAddress.getKey();
			String type = organizeAddress.getType();
			String addr = key + Constants.STRING_SEPARATOR6 + type;
			set.add(addr);
		}
		
		return set;
	}

	public String parseFromSet(Set set) {
		if(null == set) 
			return "";
		
		String addresss = "";
		Iterator it = set.iterator();
		while(it.hasNext()){
			String addr = (String)it.next();
			addresss += addr + Constants.STRING_SEPARATOR3;
		}
		
		if(addresss.length() != 0)
			addresss = addresss.substring(0,addresss.length() - 1);
		
		return addresss;
	}
	
	public boolean isPersonInAddress(long person_id, String addresss) {
		boolean isIncluded = false;
		Person person = organizeQuery.getPerson(person_id);
		Set set = parse(addresss);
		if(set.contains(person))
			isIncluded = true;
		
		return isIncluded;
	}
	
	/** 
	 * address:xxx@group,xxx@department,xxx@post,xxx@person,
	 * @return [group名称],department名称,部门名称/岗位名称,-人员名称-,
	 */
	public String alias(String addresss) {
		if (addresss == null || "".equals(addresss))
				return "";
		
		addresss = purify(addresss);
		StringBuffer buff = new StringBuffer();
		List organizeAddresses = splitAddress(addresss);
		for(int i = 0; i < organizeAddresses.size(); i++){
			OrganizeAddress organizeAddress = (OrganizeAddress)organizeAddresses.get(i);
			long id = Long.parseLong(organizeAddress.getKey());
			String type = organizeAddress.getType();
			
			if(Constants.ADDRESS_FORMAT_GROUP.equals(type))
				buff.append("[" + (organizeQuery.getGroup(id)).getName() + "]" + Constants.STRING_SEPARATOR3);
			else if(Constants.ADDRESS_FORMAT_DEPARTMENT.equals(type))
				buff.append((organizeQuery.getDepartment(id)).getName() + Constants.STRING_SEPARATOR3);
			else if(Constants.ADDRESS_FORMAT_POST.equals(type)){
				Post post = organizeQuery.getPost(id);
				Department department = organizeQuery.getDepartment(post.getDep_id());
				buff.append(department.getName() + "/" + post.getName() + Constants.STRING_SEPARATOR3);
			}else if(Constants.ADDRESS_FORMAT_PERSON.equals(type))
				buff.append("-" + organizeQuery.getPerson(id).getName() + "-" + Constants.STRING_SEPARATOR3);
		}
		
		String alias = buff.toString();
		if(alias.length() != 0)
			alias = alias.substring(0,alias.length() - 1);
		
		return alias;
	}
	
	/**
	 * 解析地址
	 * @param adddress 地址格式为:xxx@group,xxx@department,xxx@post,xxx@person,
	 * @return List{OrganizeAddress}
	 */
	private List splitAddress(String address){
		List list = new ArrayList();
		
		String[] addrs = address.split(Constants.STRING_SEPARATOR3);
		for(int i = 0; i < addrs.length; i++){
			String addr = addrs[i];
			if(null == addr || "".equals(addr)) continue;
			
			String[] organizes = addr.split(Constants.STRING_SEPARATOR6);
			if(organizes.length != 2) continue;
			
			String key = organizes[0];
			String type = organizes[1].toLowerCase();
			OrganizeAddress orgAddr = new OrganizeAddress(key,type);
			list.add(orgAddr);	
		}
		
		return list;
	}
	
	/**
	 * 获取群组/部门/岗位/人员的人员列表
	 * @param id 群组/部门/岗位/人员的id
	 * @return List{Person}
	 */
	private Collection getPersons(String key, String type){
		Collection collection = null;
		
		long id = Long.parseLong(key);
		if(Constants.ADDRESS_FORMAT_GROUP.equals(type))
			collection = organizeQuery.getPersonsByGroup(id);
		else if(Constants.ADDRESS_FORMAT_DEPARTMENT.equals(type))
			collection = organizeQuery.getPersonsByDepartments(id,true);
		else if(Constants.ADDRESS_FORMAT_POST.equals(type))
			collection = organizeQuery.getPersonsByPost(id);
		else if(Constants.ADDRESS_FORMAT_PERSON.equals(type)) {
			collection = new ArrayList();
			collection.add(organizeQuery.getPerson(id));
		}
		
		return collection;
	}
	
	class OrganizeAddress{
		private String key = "";
		private String type = "";
		
		public OrganizeAddress(String key,String type){
			this.key = key;
			this.type = type;
		}
		
		
		public String getKey() {
			return key;
		}


		public void setKey(String key) {
			this.key = key;
		}


		public String getType() {
			return type;
		}
		public void setType(String type) {
			this.type = type;
		}
	}
	
	public static void main(String[] args){
		String tmp = "xxx@department,xxx@post,xxx@group,xxx@person,";
		String[] tmpArray = tmp.split(",");
		System.out.println("Tmp is: " + tmp + ", Tmp Array size is: " + tmpArray.length);
		for(int i = 0; i < tmpArray.length;i++){
			System.out.println(tmpArray[i]);
		}
		
		List list = new ArrayList();
		Collection collection = new ArrayList();
		collection.add("liupeng");
		collection.add("liupeng16");
		
		list = (List)collection;
		for(int i = 0; i < list.size(); i++)
			System.out.println((String)list.get(i));
		
		
		String alias = "a,b,c,d,";
		System.out.println(alias.subSequence(0,alias.length() - 1));
	}
}


⌨️ 快捷键说明

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