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

📄 organizequeryimpl.java

📁 基于java的组号查询模块
💻 JAVA
字号:
package com.lily.dap.service.organize.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 com.lily.dap.Constants;
import com.lily.dap.model.organize.Department;
import com.lily.dap.model.organize.Group;
import com.lily.dap.model.organize.Person;
import com.lily.dap.model.organize.Post;
import com.lily.dap.service.core.exception.DataNotExistException;
import com.lily.dap.service.organize.OrganizeQuery;

public class OrganizeQueryImpl implements OrganizeQuery {
	private OrganizeCache organizeCache;
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#setOrganizeCache(com.lily.dap.service.organize.impl.OrganizeCache)
	 */
	public void setOrganizeCache(OrganizeCache oc){
		this.organizeCache = oc;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getRootDepartment()
	 */
	public Department getRootDepartment() throws DataNotExistException{
		Department depart = organizeCache.getRootDepartment();
		if(null == depart)
			throw new DataNotExistException("Root department is not exist!");
		
		return depart;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getDepartment(long)
	 */
	public Department getDepartment(long depart_id) throws DataNotExistException {
		Department depart = (Department)organizeCache.getDepartmentMap().get(new Long(depart_id));
		if(null == depart)
			throw new DataNotExistException("The department [id=" + depart_id + "] is not exist!");
		
		return depart;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getDepartments(int)
	 */
	public Collection getDepartments(int type) {
		List list = new ArrayList();
		Iterator it = organizeCache.getDepartmentMap().values().iterator();
		while(it.hasNext()){
			Department depart = (Department)it.next();
			if(depart.getType() == type){
				list.add(depart);
			}
		}
		
		return list;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getChildDepartments(long)
	 */
	public Collection getChildDepartments(long depart_id) throws DataNotExistException {
		Department depart = (Department)organizeCache.getDepartmentMap().get(new Long(depart_id));
		if(null == depart)
			throw new DataNotExistException("The department [id=" + depart_id + "] is not exist!");
		
		return depart.getChildDeps();
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getAllDepartmentsByParent(long)
	 */
	public Collection getAllDepartmentsByParent(long parent_id) throws DataNotExistException {
		Department parent = (Department)organizeCache.getDepartmentMap().get(new Long(parent_id));
		if(null == parent)
			throw new DataNotExistException("The department [id=" + parent_id + "] is not exist!");
		
		List list = new ArrayList();
		list.add(parent);
		list.addAll(getAllChildDeparts(parent_id));
		return list;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getPost(long)
	 */
	public Post getPost(long post_id) throws DataNotExistException {
		Post post = (Post) organizeCache.getPostMap().get(new Long(post_id));
		if(null == post)
			throw new DataNotExistException("The post [id=" + post_id + "] is not exist!");
		
		return post;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getPosts(long)
	 */
	public Collection getPosts(long depart_id) throws DataNotExistException {
		Department depart = (Department) organizeCache.getDepartmentMap().get(new Long(depart_id));
		if(null == depart)
			throw new DataNotExistException("The department [id=" + depart_id + "] is not exist!");
		
		return depart.getPosts();
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getPostsByPerson(long)
	 */
	public Collection getPostsByPerson(long person_id) throws DataNotExistException {
		Person person = (Person) organizeCache.getPersonMap().get(new Long(person_id));
		if(null == person)
			throw new DataNotExistException("The person [id=" + person_id + "] is not exist!");
		
		List list = new ArrayList();
		Iterator it = organizeCache.getPostMap().values().iterator();
		while(it.hasNext()){
			Post post = (Post)it.next();
			if(post.getPersons().contains(person))
				list.add(post);
		}
		
		return list;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getAllPosts()
	 */
	public Collection getAllPosts() {
		return organizeCache.getPostMap().values();
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getPerson(long)
	 */
	public Person getPerson(long person_id) throws DataNotExistException {
		Person person = (Person)organizeCache.getPersonMap().get(new Long(person_id));
		if(null == person)
			throw new DataNotExistException("The person [id=" + person_id + "] is not exist!");
		
		return person;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getPerson(java.lang.String)
	 */
	public Person getPerson(String username) throws DataNotExistException {
		Iterator it = organizeCache.getPersonMap().values().iterator();
		while(it.hasNext()) {
			Person person = (Person)it.next();
			if (username.equals(person.getUsername()))
				return person;
		}
		
		throw new DataNotExistException("The person [username=" + username + "] is not exist!");
	}

	public Collection getAllPersons() {
		return organizeCache.getPersonMap().values();
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getPersonsByPost(long)
	 */
	public Collection getPersonsByPost(long post_id){
		Post post = (Post)organizeCache.getPostMap().get(new Long(post_id));
		return post.getPersons();
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getPersonsByDepartments(long, boolean)
	 */
	public Collection getPersonsByDepartments(long depart_id, boolean include_sub_department) {
		Collection departmentList = null;
		
		if (include_sub_department)
			departmentList = getAllDepartmentsByParent(depart_id);
		else {
			departmentList = new ArrayList();
			departmentList.add(getDepartment(depart_id));
		}
		
		List postList = new ArrayList();
		Iterator it = departmentList.iterator();
		while (it.hasNext()) {
			Department department = (Department)it.next();
			
			Collection list = this.getPosts(department.getId());
			postList.addAll(list);
		}
		
		Set personSet = new HashSet();
		it = postList.iterator();
		while (it.hasNext()) {
			Post post = (Post)it.next();
			
			Collection list = post.getPersons();
			personSet.addAll(list);
		}
		
		return personSet;
	}
	
	/* (non-Javadoc)
	 * @see com.lily.dap.service.organize.OrganizeQuery#getAllChildDeparts(long)
	 */
	public Collection getAllChildDeparts(long parent_id){
		List list = new ArrayList(), temp = new ArrayList();
		Department parent = (Department)organizeCache.getDepartmentMap().get(new Long(parent_id));
		Set set = parent.getChildDeps();
		temp.addAll(set);
		for (int i = 0; i < temp.size(); i++) {
			Department depart = (Department)temp.get(i);
			list.add(depart);
			Collection childList = getAllChildDeparts(depart.getId());
			list.addAll(childList);
		}
		
		return list;
	}
	
	public Group getGroup(long group_id) throws DataNotExistException {
		Group group = (Group)organizeCache.getGroupMap().get(new Long(group_id));
		if(null == group)
			throw new DataNotExistException("The group [id=" + group_id + "] is not exist!");
		
		return group;
	}

	public Collection getGroups() {
		return organizeCache.getGroupMap().values();
	}

	public Collection getPersonsByGroup(long group_id) {
		Set Set = new HashSet();
		
		return getPersonsOfGroup(group_id, Set);
	}
	
	private Set getPersonsOfGroup(long group_id, Set set){
		Group group = this.getGroup(group_id);
		
		String groupMember = group.getGroupMember();
		if(null == groupMember || "".equals(groupMember))
			return set;
		
		String[] members = groupMember.split(Constants.STRING_SEPARATOR3);
		for(int i = 0; i < members.length; i++){
			String[] member = members[i].split(Constants.STRING_SEPARATOR6);
			long id = Long.parseLong(member[0]);
			String type = member[1];
			
			if(Constants.ADDRESS_FORMAT_DEPARTMENT.equals(type))
				set.addAll(getPersonsByDepartments(id, true));
			else if(Constants.ADDRESS_FORMAT_POST.equals(type))
				set.addAll(getPersonsByPost(id));
			else if(Constants.ADDRESS_FORMAT_PERSON.equals(type))
				set.add(getPerson(id));
			else if(Constants.ADDRESS_FORMAT_GROUP.equals(type))
				set = getPersonsOfGroup(id, set);
		}
		
		return set;
	}
}

⌨️ 快捷键说明

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