/* ================================================================== * 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.action; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import com.jinhe.tss.cms.CMSConstants; import com.jinhe.tss.cms.entity.ArticleType; import com.jinhe.tss.cms.service.IArticleTypeService; import com.jinhe.tss.component.dynproperty.support.IRemotePropertyService; import com.jinhe.tss.component.support.web.webwork.PTActionSupport; import com.jinhe.tss.core.exception.BusinessException; import com.jinhe.tss.core.util.EasyUtils; import com.jinhe.tss.core.util.XMLDocUtil; import com.jinhe.tss.core.web.dispaly.tree.LevelTreeParser; import com.jinhe.tss.core.web.dispaly.tree.TreeEncoder; import com.jinhe.tss.core.web.dispaly.xform.XFormEncoder; public class ArticleTypeAction extends PTActionSupport { private static final long serialVersionUID = 6763008022306015845L; private ArticleType articleType = new ArticleType(); private IArticleTypeService service; private IRemotePropertyService propertyService; private Long typeId; private Long groupId; /** * 获取所有文章种类组 */ public String getAllArticleTypeGroup() { List<?> list = service.getArticleTypeGroups(); TreeEncoder encoder = new TreeEncoder(list, new LevelTreeParser()); encoder.setRootCanSelect(false); return print("ArticleTypeTree", encoder); } /** * 文章类型管理模块的文章类型树结构 */ public String getAllArticleTypeTree() { TreeEncoder encoder = new TreeEncoder(service.getArticleTypes(), new LevelTreeParser()); return print("ArticleTypeTree", encoder); } /** * 创建栏目时,选择文章类型树结构 */ public String getArticleTypeTree4Channel() { TreeEncoder encoder = new TreeEncoder(service.getArticleTypes(), new LevelTreeParser()); encoder.setRootCanSelect(false); return print("ArticleTypeTree", encoder); } /** * 初始化文章种类组新增信息 */ public String initArticleTypeGroup() { ArticleType articleType = new ArticleType(); articleType.setParentId(CMSConstants.HEAD_NODE_ID); articleType.setIsGroup(CMSConstants.TRUE); return print("ArticleTypeGroupInfo", new XFormEncoder(CMSConstants.XFORM_TEMPLATE_ARTICLETYPEGROUP, articleType)); } /** * 获取文章种类组信息 */ public String getArticleTypeGroup() { ArticleType type = service.getArticleType(groupId); return print("ArticleTypeGroupInfo", new XFormEncoder(CMSConstants.XFORM_TEMPLATE_ARTICLETYPEGROUP, type)); } /** * 初始化文章种类新增信息 */ public String initArticleTypeInfo() { ArticleType articleType = new ArticleType(); articleType.setParentId(groupId); articleType.setIsGroup(CMSConstants.FALSE); return print("ArticleTypeInfo", new XFormEncoder(CMSConstants.XFORM_TEMPLATE_ARTICLETYPE, articleType)); } /** * 获取文章种类信息 */ public String getArticleTypeInfo() { ArticleType type = service.getArticleType(typeId); return print("ArticleTypeInfo", new XFormEncoder(CMSConstants.XFORM_TEMPLATE_ARTICLETYPE, type)); } /** * 保存文章种类/文章种类组信息 */ public String saveArticleType() { articleType = service.createArticleType(articleType); if (!articleType.isTypeGroup()) { checkClasspath(articleType.getPublishArticleClassName()); //将文章的模板导入到动态属性实体中 Document doc = XMLDocUtil.createDoc(CMSConstants.TEMPLATE_ARTICLE_PROPERTY); Element root = doc.getRootElement(); root.addAttribute("name", articleType.getName()); root.addAttribute("code", articleType.getEntityCode()); propertyService.importDynableEntity(doc.asXML()); } return doAfterSave(true, articleType, "ArticleTypeTree"); } /** * 验证类路径是否正确(错误的话会抛出异常) */ private void checkClasspath(String classpath){ if( EasyUtils.isNullOrEmpty(classpath) ) return; try { ClassLoader.getSystemClassLoader().loadClass(classpath); } catch (Exception e) { throw new BusinessException("发布文章实现类的全路径错误!", e); } } /** * 修改文章种类/文章种类组信息 */ public String updateArticleType() { service.updateArticleType(articleType); if (!articleType.isTypeGroup()) { checkClasspath(articleType.getPublishArticleClassName()); //更新文章类型对应的动态实体名称 propertyService.updateDynableEntityName(articleType.getEntityCode(), articleType.getName()); } return printSuccessMessage(); } /** * 删除文章种类信息 */ public String delArticleTypeInfo() { ArticleType type = service.deleteArticleType(typeId); propertyService.deleteDynableEntity(type.getEntityCode()); return printSuccessMessage("删除成功!"); } /** * 删除文章种类组 * @return */ public String delArticleTypeGroup() { service.deleteArticleTypeGroup(groupId); return printSuccessMessage("删除成功!"); } /** * 移动文章种类 */ public String moveArticleType() { ArticleType type = service.getArticleType(typeId); type.setParentId(groupId); service.updateArticleType(type); return printSuccessMessage("移动成功!"); } public ArticleType getArticleType() { return articleType; } public void setGroupId(Long groupId) { this.groupId = groupId; } public void setService(IArticleTypeService service) { this.service = service; } public void setTypeId(Long typeId) { this.typeId = typeId; } public void setPropertyService(IRemotePropertyService propertyService) { this.propertyService = propertyService; } }