/**
* 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.plugin.online.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.plugin.online.model.Matter;
import com.ewcms.plugin.online.model.WorkingBody;
/**
*
* @author 吴智俊
*/
@Repository
public class WorkingBodyDAO extends JpaDAO<Integer, WorkingBody> {
public Long findWorkingBodyMaxSort(Integer channelId){
String hql = "Select Max(p.sort) From WorkingBody As p Where p.channelId=:channelId";
TypedQuery<Long> query = this.getEntityManager().createQuery(hql, Long.class);
query.setParameter("channelId", channelId);
Long maxSort = 0L;
try{
maxSort = (Long) query.getSingleResult();
}catch(NoResultException e){
}
if (maxSort == null){
maxSort = 0L;
}
return maxSort;
}
public Long findWorkingBodyMaxSortByWorkingBodyId(Integer workingBodyId, Integer channelId){
String hql = "Select Max(c.sort) From WorkingBody As p Right Join p.children As c Where p.id=:workingBodyId And p.channelId=:channelId And c.channelId=:channelId";
TypedQuery<Long> query = this.getEntityManager().createQuery(hql, Long.class);
query.setParameter("channelId", channelId);
query.setParameter("workingBodyId", workingBodyId);
Long maxSort = 0L;
try{
maxSort = (Long) query.getSingleResult();
}catch(NoResultException e){
}
if (maxSort == null){
maxSort = 0L;
}
return maxSort;
}
public Matter findMatterByMatterIdAndWorkingBodyId(Integer matterId, Integer workingBodyId, Integer channelId){
String hql = "Select l From WorkingBody As p Left Join p.matters As l Where l.id=:matterId And p.id=:workingBodyId And p.channelId=:channelId";
TypedQuery<Matter> query = this.getEntityManager().createQuery(hql, Matter.class);
query.setParameter("matterId", matterId);
query.setParameter("workingBodyId", workingBodyId);
query.setParameter("channelId", channelId);
Matter matter = null;
try{
matter = (Matter) query.getSingleResult();
}catch(NoResultException e){
}
return matter;
}
public WorkingBody findWorkingBodyBySort(Integer parentId, Long sort, Integer channelId){
String hql = "Select p From WorkingBody As p Left Join p.parent As a Where a.id=:parentId And p.sort=:sort And p.channelId=:channelId";
TypedQuery<WorkingBody> query = this.getEntityManager().createQuery(hql, WorkingBody.class);
query.setParameter("parentId", parentId);
query.setParameter("sort", sort);
query.setParameter("channelId", channelId);
WorkingBody workingBody = null;
try{
workingBody = (WorkingBody) query.getSingleResult();
}catch(NoResultException e){
}
return workingBody;
}
public WorkingBody findWorkingBodyParent(Integer channelId){
String hql = "From WorkingBody As p Where p.parent is null And p.channelId=:channelId Order By p.sort";
TypedQuery<WorkingBody> query = this.getEntityManager().createQuery(hql, WorkingBody.class);
query.setParameter("channelId", channelId);
WorkingBody workingBody = null;
try{
workingBody = (WorkingBody) query.getSingleResult();
}catch(NoResultException e){
}
return workingBody;
}
public List<Matter> findMattersByWorkingBodyId(Integer workingBodyId, Integer channelId){
String hql = "Select l From WorkingBody As p Right Join p.matters As l Where p.id=:workingBodyId And p.channelId=:channelId Order By l.sort";
TypedQuery<Matter> query = this.getEntityManager().createQuery(hql, Matter.class);
query.setParameter("workingBodyId", workingBodyId);
query.setParameter("channelId", channelId);
return query.getResultList();
}
public WorkingBody findWorkingBodyByWorkingBodyIdAndChannelId(Integer workingBodyId, Integer channelId){
String hql = "From WorkingBody As p Where p.id=:workingBodyId And p.channelId=:channelId";
TypedQuery<WorkingBody> query = this.getEntityManager().createQuery(hql, WorkingBody.class);
query.setParameter("workingBodyId", workingBodyId);
query.setParameter("channelId", channelId);
WorkingBody workingBody = null;
try{
workingBody = (WorkingBody) query.getSingleResult();
}catch(NoResultException e){
}
return workingBody;
}
}