/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.content.document.dao;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import com.ewcms.common.dao.JpaDAO;
import com.ewcms.content.document.model.ArticleMain;
import com.ewcms.content.document.model.ReviewProcess;
/**
* 审核流程DAO
*
* @author wu_zhijun
*
*/
@Repository
public class ReviewProcessDAO extends JpaDAO<Long, ReviewProcess> {
public Long findReviewProcessCountByChannel(final Integer channelId){
String hql = "Select Count(p.id) From ReviewProcess As p Where p.channelId=:channelId";
TypedQuery<Long> query = this.getEntityManager().createQuery(hql, Long.class);
query.setParameter("channelId", channelId);
return query.getSingleResult();
}
public List<ReviewProcess> findReviewProcessByChannel(final Integer channelId){
String hql = "From ReviewProcess As p Where p.channelId=:channelId";
TypedQuery<ReviewProcess> query = this.getEntityManager().createQuery(hql, ReviewProcess.class);
query.setParameter("channelId", channelId);
return query.getResultList();
}
public ReviewProcess findReviewProcessByIdAndChannel(final Long reviewProcessid, final Integer channelId){
String hql = "From ReviewProcess As p Where p.id=:reviewProcessid And p.channelId=:channelId";
TypedQuery<ReviewProcess> query = this.getEntityManager().createQuery(hql, ReviewProcess.class);
query.setParameter("reviewProcessid", reviewProcessid);
query.setParameter("channelId", channelId);
ReviewProcess reviewProcess = null;
try{
reviewProcess = (ReviewProcess) query.getSingleResult();
}catch (NoResultException e){
}
return reviewProcess;
}
public ReviewProcess findLastReviewProcessByChannel(final Integer channelId){
String hql = "From ReviewProcess As p Where p.channelId=:channelId And p.nextProcess Is Null";
TypedQuery<ReviewProcess> query = this.getEntityManager().createQuery(hql, ReviewProcess.class);
query.setParameter("channelId", channelId);
ReviewProcess reviewProcess = null;
try{
reviewProcess = (ReviewProcess) query.getSingleResult();
}catch(NoResultException e){
}
return reviewProcess;
}
public ReviewProcess findFirstReviewProcessByChannel(final Integer channelId){
String hql = "From ReviewProcess As p Where p.channelId=:channelId And p.prevProcess Is Null";
TypedQuery<ReviewProcess> query = this.getEntityManager().createQuery(hql, ReviewProcess.class);
query.setParameter("channelId", channelId);
ReviewProcess reviewProcess = null;
try{
reviewProcess = (ReviewProcess) query.getSingleResult();
}catch(NoResultException e){
}
return reviewProcess;
}
public Boolean findReviewUserIsEntityByProcessIdAndUserName(final Long reviewProcessId, final String userName){
String hql = "Select p From ReviewProcess As p Left Join p.reviewUsers As u Where p.id=:reviewProcessId And u.userName=:userName";
TypedQuery<ReviewProcess> query = this.getEntityManager().createQuery(hql, ReviewProcess.class);
query.setParameter("reviewProcessId", reviewProcessId);
query.setParameter("userName", userName);
List<ReviewProcess> list = query.getResultList();
return list.isEmpty() ? false : true;
}
public Boolean findReviewGroupIsEntityByProcessIdAndUserName(final Long reviewProcessId, final String groupName){
String hql = "Select p From ReviewProcess As p Left Join p.reviewGroups As g Where p.id=:reviewProcessId And g.groupName=:groupName";
TypedQuery<ReviewProcess> query = this.getEntityManager().createQuery(hql, ReviewProcess.class);
query.setParameter("reviewProcessId", reviewProcessId);
query.setParameter("groupName", groupName);
List<ReviewProcess> list = query.getResultList();
return list.isEmpty() ? false : true;
}
public ReviewProcess findIsEntityReviewProcessByChannelAndName(final Integer channelId, final String name){
String hql = "From ReviewProcess As p Where p.channelId=:channelId And p.name=:name";
TypedQuery<ReviewProcess> query = this.getEntityManager().createQuery(hql, ReviewProcess.class);
query.setParameter("channelId", channelId);
query.setParameter("name", name);
ReviewProcess reviewProcess = null;
try{
reviewProcess = (ReviewProcess) query.getSingleResult();
}catch(NoResultException e){
}
return reviewProcess;
}
public List<ArticleMain> findArticleMainByReviewProcess(final Integer channelId, final Long reviewProcessId){
String hql = "Select m From ArticleMain As m Left Join m.article As a Left Join a.reviewProcess As r Where m.channelId=:channelId And r.id=:reviewProcessId And m.reference=false";
TypedQuery<ArticleMain> query = this.getEntityManager().createQuery(hql, ArticleMain.class);
query.setParameter("channelId", channelId);
query.setParameter("reviewProcessId", reviewProcessId);
return query.getResultList();
}
}