/** * 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.core.site.dao; import java.util.List; import javax.persistence.Query; import javax.persistence.TypedQuery; import org.springframework.stereotype.Repository; import com.ewcms.common.dao.JpaDAO; import com.ewcms.core.site.model.Site; /** * @author 周冬初 * @author wuzhijun */ @Repository public class SiteDAO extends JpaDAO<Integer, Site> { /** * 获取机构集的站点集 * */ public List<Site> getSiteListByOrgans(final Integer[] organs,final Boolean publicenable){ String hql; if (organs == null || organs.length == 0) { hql = "From Site o Where o.publicenable=:publicenable Order By o.id"; TypedQuery<Site> query = this.getEntityManager().createQuery(hql, Site.class); query.setParameter("publicenable", publicenable); return query.getResultList(); } String sqlStr = "?"; for (int i = 1; i < organs.length; i++) { sqlStr += ",?"; } hql = "From Site o Where o.publicenable=:publicenable and o.organ.id in(" + sqlStr + ") Order By o.id"; TypedQuery<Site> query = this.getEntityManager().createQuery(hql, Site.class); query.setParameter("publicenable", publicenable); for (int i = 0; i < organs.length; i++) { query.setParameter(2 + i, organs[i]); } return query.getResultList(); } /** * 获取机构的子站点集 * */ public List<Site> getSiteChildren(final Integer parentId,final Integer organId){ String hql; if (parentId == null) { if (organId == null) { hql = "From Site o Where o.parent.id is null Order By o.id"; TypedQuery<Site> query = this.getEntityManager().createQuery(hql, Site.class); return query.getResultList(); } else { hql = "From Site o Where o.parent.id is null and o.organ.id=:organId Order By o.id"; TypedQuery<Site> query = this.getEntityManager().createQuery(hql, Site.class); query.setParameter("organId", organId); return query.getResultList(); } } else { if (organId == null) { hql = "From Site o Where o.parent.id=:parentId Order By o.id"; TypedQuery<Site> query = this.getEntityManager().createQuery(hql, Site.class); query.setParameter("parentId", parentId); return query.getResultList(); } else { hql = "From Site o Where o.parent.id=:parentId and o.organ.id=:organId Order By o.id"; TypedQuery<Site> query = this.getEntityManager().createQuery(hql, Site.class); query.setParameter("parentId", parentId); query.setParameter("organId", organId); return query.getResultList(); } } } public void updSiteParent(final Integer organId,final Integer parentId,final Integer newParentId){ String hql = "update Site o set o.parent.id=:newParentId Where o.parent.id=:parentId and o.organ.id !=:organId"; Query query = this.getEntityManager().createQuery(hql); query.setParameter("newParentId", newParentId); query.setParameter("parentId", parentId); query.setParameter("organId", organId); query.executeUpdate(); } }