/** * 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.resource.dao; import java.util.ArrayList; 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.resource.model.Resource; /** * 实现资源操作数据接口 * * @author wangwei * @author wuzhijun */ @Repository public class ResourceDAO extends JpaDAO<Integer, Resource> implements ResourceDAOable { /** * 只删除状态为DELETE的记录 */ @Override public void remove(final Resource resource){ if(resource.getStatus() == Resource.Status.DELETE){ super.remove(resource); } } @Override public List<Resource> findSoftDeleteResources(final Integer siteId) { String hql = "From Resource o Where o.site.id= ?1 And o.status = ?2"; TypedQuery<Resource> query = this.getEntityManager().createQuery(hql, Resource.class); query.setParameter(1, siteId); query.setParameter(2, Resource.Status.DELETE); return query.getResultList(); } @Override public List<Resource> findPublishResources(final Integer siteId,final Boolean forceAgain) { String hql = "From Resource o Where o.site.id= ?1 And o.status In (?2)"; TypedQuery<Resource> query = this.getEntityManager().createQuery(hql, Resource.class); query.setParameter(1, siteId); List<Resource.Status> status = new ArrayList<Resource.Status>(); if (forceAgain) { status.add(Resource.Status.RELEASED); } status.add(Resource.Status.NORMAL); query.setParameter(2, status); return query.getResultList(); } @Override public Resource getResourceByUri(final Integer siteId,final String uri) { String hql = "From Resource o Where o.site.id= ?1 And (o.uri = ?2 or o.thumbUri = ?3)"; TypedQuery<Resource> query = this.getEntityManager().createQuery(hql,Resource.class); query.setParameter(1, siteId); query.setParameter(2, uri); query.setParameter(3, uri); Resource resource = null; try{ resource = (Resource) query.getSingleResult(); }catch(NoResultException e){ } return resource; } }