/** * 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.NoResultException; import javax.persistence.TypedQuery; import org.springframework.stereotype.Repository; import com.ewcms.common.dao.JpaDAO; import com.ewcms.core.site.model.Template; import com.ewcms.core.site.model.Template.TemplateType; /** * @author 周冬初 * @author wuzhijun */ @Repository public class TemplateDAO extends JpaDAO<Integer, Template> { /** * 获取站点专栏所有模板 * */ public List<Template> getTemplateList(final Integer siteId){ String hql = "From Template o Where o.site.id=:siteId and o.templateEntity is not null and o.channelId is not null Order By o.id"; TypedQuery<Template> query = this.getEntityManager().createQuery(hql,Template.class); query.setParameter("siteId", siteId); return query.getResultList(); } /** * 获取站点子节点模板 * */ public List<Template> getTemplateChildren(final Integer parentId,final Integer siteId,final Integer channelId){ String hql; TypedQuery<Template> query; if (parentId == null) { hql = "From Template o Where o.parent is null and o.site.id=:siteId Order By o.id"; query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("siteId", siteId); } else { if (channelId == null) { hql = "From Template o Where o.parent.id=:parentId and o.site.id=:siteId Order By o.id"; query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("parentId", parentId); query.setParameter("siteId", siteId); } else { hql = "From Template o Where o.parent.id=:parentId and o.site.id=:siteId and o.channelId=:channelId Order By o.id"; query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("parentId", parentId); query.setParameter("siteId", siteId); query.setParameter("channelId", channelId); } } return query.getResultList(); } /** * 获取站点专栏模板节点 * */ public Template getChannelTemplate(final String siteTplName,final Integer siteId,final Integer parentId){ String hql; TypedQuery<Template> query; if (parentId == null) { hql = "From Template o Where o.name=:siteTplName and o.site.id=:siteId and o.parent is null"; query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("siteTplName", siteTplName); query.setParameter("siteId", siteId); } else { hql = "From Template o Where o.name=:siteTplName and o.site.id=:siteId and o.parent.id=:parentId"; query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("siteTplName", siteTplName); query.setParameter("siteId", siteId); query.setParameter("parentId", parentId); } Template template = null; try{ template = (Template) query.getSingleResult(); }catch(NoResultException e){ } return template; } /** * 通过模板路径得到模板 * * @param path 模板路基 * @return 模板实体 */ public Template getTemplateByPath(final String path){ String hql = "From Template o Where o.uniquePath=:path"; TypedQuery<Template> query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("path", path); Template template = null; try{ template = (Template) query.getSingleResult(); }catch(NoResultException e){ } return template; } /** * 获取专栏所有模板 * * @param channelId 专栏编号 * @return 模板集合 */ public List<Template> getTemplatesInChannel(final Integer channelId){ String hql = "From Template o Where o.channelId=:channelId order by o.type"; TypedQuery<Template> query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("channelId", channelId); return query.getResultList(); } public Template findTemplateByChannelIdAndTemplateType(final Integer channelId, final TemplateType templateType){ String hql = "From Template t Where t.channelId=:channelId And t.type=:templateType"; TypedQuery<Template> query = this.getEntityManager().createQuery(hql, Template.class); query.setParameter("channelId", channelId); query.setParameter("templateType", templateType); Template template = null; try{ template = (Template) query.getSingleResult(); }catch(NoResultException e){ } return template; } }