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