/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.cms.dao;
import java.util.List;
import com.jinhe.tss.cms.CMSConstants;
import com.jinhe.tss.cms.entity.Channel;
import com.jinhe.tss.cms.helper.PermissionFilter4ChannelBranch;
import com.jinhe.tss.component.support.persistence.ITreeSupportDao;
import com.jinhe.tss.um.permission.filter.PermissionFilter4Branch;
import com.jinhe.tss.um.permission.filter.PermissionTag;
/**
* Channel的Dao层接口,定义所有Channel相关的数据库操作接口
*/
public interface IChannelDao extends ITreeSupportDao<Channel> {
/**
* 保存移动的节点。
* 本方法是为了资源权限补齐拦截器ResourcePermissionInterceptor能拦截到门户结构的移动保存操作,
* 从而可以对移动的资源根据新的父节点进行权限补齐处理。
* @param channel
*/
void moveChannel(Channel channel);
/**
* 根据栏目Id获取到站点对象
* @param channelId
* @return
*/
Channel getSiteByChannel(Long channelId);
/**
* 获取所有有指定权限ID的栏目ID列表
* @return
*/
List<Long> getSiteChannelIDsByOperationId(String operationId);
/**
* 根据栏目ID列表获取所有当前用户有查看权限的栏目结点。<br/>
* 注:本方法主要用于栏目和文章的新增/移动/分发等操作时需要的栏目树,只取channelIds(存于临时表内)里包含的栏目的父栏目,<br/>
* 这样可以把不相干的枝过滤掉。<br/>
* <br/>
* @return
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getParentChannel4CanAdd();
/**
* <p>
* 得到所有站点栏目列表
* </p>
* @return
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getAllSiteChannelList();
/**
* <p>
* 得到所有启用状态的站点栏目列表
* </p>
* @return
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getAllStartedSiteChannelList();
/**
* <p>
* 获得某站点下的栏目列表,不含站点本身(没有权限过滤)
* </p>
* @param siteId
* @return
*/
List<?> getChannelsBySiteIdNoPermission(Long siteId);
/**
* <p> 获取某栏目的一级子栏目列表</p>
* @param parentId
* @return List
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getChildChannels(Long parentId);
/**
* <p>获取与栏目有关系的源栏目列表</p>
* @param channelId
* @return
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getChannelSourceByChannelId(Long channelId);
/**
* <p>获取与栏目有关系的目标栏目列表</p>
* @param channelId
* @return
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getChannelDestinationByChannelId(Long channelId);
/**
* <p>获得与栏目有关系的源栏目关系列表</p>
* @param channelId
* @return
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getDistributeFromByChannelId(Long channelId);
/**
* <p>获得与栏目有关系的目标栏目关系列表</p>
* @param channelId
* @return
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getDistributeToByChannelId(Long channelId);
/**
* <p>
* 获得栏目向下的所有栏目列表
* </p>
* @param channelId
* @param operationId
* @return
*/
@PermissionTag(
filter = PermissionFilter4ChannelBranch.class
)
List<Channel> getChildrenById(Long channelId, String operationId);
/**
* <p>
* 获得栏目向上的所有栏目列表
* </p>
* @param channelId
* @param operationId
* @return
*/
@PermissionTag(
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4Branch.class
)
List<Channel> getParentsById(Long channelId, String operationId);
/**
* <p>
* 获得栏目向上的所有栏目列表(没有权限过滤)
* </p>
* @param channelId
* @return
*/
List<?> getChannelTreeUpNoPermission(Long channelId);
/**
* 检查对channelId有没有浏览权限
* @param channelId
* @return
*/
public boolean checkBrowsePermission(Long channelId);
/**
* <p>
* 通过栏目ID取栏目下所有可发布的文章总数
* </p>
* @param channelId
* @return
*/
Integer getPublishableArticleCount(Long channelId);
/**
* <p>
* 通过栏目ID取栏目下所有可发布的文章ID
* </p>
* @param channelId
* @param currentPageNum
* @param pageSize
* @return
*/
List<?> getPagePublishableArticleList(Long channelId, int currentPageNum, int pageSize);
/**
* 获取需要发布的总文章数
* @param channelId
* @param category 1:增量发布 2: 完全发布
* @return
*/
int getTotalRows4Publish(Long channelId, String category );
/**
* 根据页码获取当前页需要发布的文章列表
* @param category
* 发布类型: 增量发布 or 完全发布
* @param pageNum
* @param pageSize
* @param decode
* @return
*/
List<?> getPageArticleList4Publish(Long channelId, String category, int pageNum, int pageSize);
}