/* ==================================================================
* 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.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.jinhe.tss.cms.CMSConstants;
import com.jinhe.tss.cms.dao.IArticleDao;
import com.jinhe.tss.cms.dao.IChannelDao;
import com.jinhe.tss.cms.entity.ArticleType;
import com.jinhe.tss.cms.service.IArticleTypeService;
import com.jinhe.tss.core.exception.BusinessException;
/**
* 负责处理ArticleType相关业务逻辑
*/
public class ArticleTypeService implements IArticleTypeService {
@Autowired private IArticleDao articleDao;
@Autowired private IChannelDao channelDao;
public List<?> getArticleTypes() {
return articleDao.getEntities("from ArticleType o");
}
public List<?> getArticleTypeGroups() {
return articleDao.getEntities("from ArticleType o where o.isGroup = ?", CMSConstants.TRUE);
}
public ArticleType getArticleType(Long typeId) {
ArticleType type = (ArticleType) articleDao.getEntity(ArticleType.class, typeId);
if (type == null) {
throw new BusinessException("当前文章种类没有找到,可能已被删除!");
}
return type;
}
public ArticleType createArticleType(ArticleType articleType) {
return (ArticleType) articleDao.createObject(articleType);
}
public void updateArticleType(ArticleType articleType) {
articleDao.update(articleType);
}
public ArticleType deleteArticleType(Long typeId) {
// 判断是否能够删除文章类型
List<?> articleList = articleDao.getEntities("from Article o where o.articleTypeId = ?", typeId);
if (!articleList.isEmpty()) {
throw new BusinessException("该种类已被文章引用,不能删除!");
}
List<?> channelList = channelDao.getEntities("from Channel o where o.articleTypeId =?", typeId);
if (!channelList.isEmpty()) {
throw new BusinessException("该种类已被栏目引用,不能删除!");
}
ArticleType type = getArticleType(typeId);
articleDao.delete(type);
return type;
}
public void deleteArticleTypeGroup(Long typeGroupId) {
ArticleType type = getArticleType(typeGroupId);
articleDao.delete(type);
//删除组下的文章类型
List<?> list = articleDao.getEntities("from ArticleType t where t.parentId = ?", typeGroupId);
for ( Object temp : list ) {
ArticleType articleType = (ArticleType) temp;
deleteArticleType(articleType.getId());
}
}
}