ProjectExtFieldReleFactory.java 4.2 KB
Newer Older
R
fix  
roo00 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
package com.x.teamwork.assemble.control.factory;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import org.apache.commons.lang3.StringUtils;

import com.x.base.core.project.exception.ExceptionWhen;
import com.x.teamwork.assemble.control.AbstractFactory;
import com.x.teamwork.assemble.control.Business;
import com.x.teamwork.core.entity.ProjectExtFieldRele;
import com.x.teamwork.core.entity.ProjectExtFieldRele_;


public class ProjectExtFieldReleFactory extends AbstractFactory {

	public ProjectExtFieldReleFactory( Business business ) throws Exception {
		super(business);
	}

	/**
	 * 获取指定Id的ProjectExtFieldRele实体信息对象
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public ProjectExtFieldRele get( String id ) throws Exception {
		return this.entityManagerContainer().find( id, ProjectExtFieldRele.class, ExceptionWhen.none );
	}
	
	/**
	 * 列示指定Id的ProjectExtFieldRele实体信息列表
	 * @param ids
	 * @return
	 * @throws Exception
	 */
	public List<ProjectExtFieldRele> list( List<String> ids ) throws Exception {
		if( ids == null || ids.size() == 0 ){
			return new ArrayList<ProjectExtFieldRele>();
		}
		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<ProjectExtFieldRele> cq = cb.createQuery(ProjectExtFieldRele.class);
		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
		Predicate p = root.get(ProjectExtFieldRele_.id).in(ids);
		cq.orderBy( cb.desc( root.get( ProjectExtFieldRele_.updateTime ) ) );
		return em.createQuery(cq.where(p)).getResultList();
	}

	/**
	 * 根据项目ID列示项目扩展属性ID信息列表
	 * @param project
	 * @return
	 * @throws Exception
	 */
	public List<ProjectExtFieldRele> listFieldReleObjByProject( String project ) throws Exception {
		if( StringUtils.isEmpty( project ) ){
			throw new Exception("project can not be empty!");
		}
		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<ProjectExtFieldRele> cq = cb.createQuery(ProjectExtFieldRele.class);
		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
		Predicate p = cb.equal( root.get(ProjectExtFieldRele_.projectId), project );
		return em.createQuery(cq.where(p)).getResultList();
	}
	
	/**
	 * 根据项目ID列示项目扩展属性ID信息列表
	 * @param project
	 * @return
	 * @throws Exception
	 */
	public List<String> listFieldReleIdsByProject( String project ) throws Exception {
		if( StringUtils.isEmpty( project ) ){
			throw new Exception("project can not be empty!");
		}
		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<String> cq = cb.createQuery(String.class);
		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
		Predicate p = cb.equal( root.get(ProjectExtFieldRele_.projectId), project );
		cq.select( root.get(ProjectExtFieldRele_.projectId) );
		return em.createQuery(cq.where(p)).getResultList();
	}
	
	/**
	 * 根据扩展属性名以及项目ID获取一组关联信息
	 * @param fieldName
	 * @param project
	 * @return
	 * @throws Exception
	 */
	public List<ProjectExtFieldRele> listWithFieldNameAndProject( String fieldName, String project ) throws Exception {
		if( StringUtils.isEmpty( fieldName ) ){
			throw new Exception("fieldName can not be empty!");
		}
		if( StringUtils.isEmpty( project ) ){
			throw new Exception("project can not be empty!");
		}
		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<ProjectExtFieldRele> cq = cb.createQuery(ProjectExtFieldRele.class);
		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
		Predicate p = cb.equal( root.get(ProjectExtFieldRele_.extFieldName), fieldName );
		p = cb.and( p,  cb.equal( root.get(ProjectExtFieldRele_.projectId), project ));
		return em.createQuery(cq.where(p)).getResultList();
	}
}