/* ================================================================== * 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.entity; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Transient; import com.jinhe.tss.cms.CMSConstants; import com.jinhe.tss.component.dynproperty.support.AbstractDynEntity; import com.jinhe.tss.component.recycle.Recycleable; import com.jinhe.tss.core.util.BeanUtil; import com.jinhe.tss.core.util.DateUtil; import com.jinhe.tss.core.web.dispaly.grid.GridAttributesMap; import com.jinhe.tss.core.web.dispaly.grid.IGridNode; import com.jinhe.tss.core.web.dispaly.tree.ITreeNode; import com.jinhe.tss.core.web.dispaly.tree.TreeAttributesMap; import com.jinhe.tss.core.web.dispaly.xform.IXForm; /** * <p>文章Article实体对象</p> */ @Entity @Table(name = "cms_article") @SequenceGenerator(name = "article_sequence", sequenceName = "article_sequence", initialValue = 1, allocationSize = 10) public class Article extends AbstractDynEntity implements ITreeNode, IGridNode, IXForm, Recycleable { public static final String[] IGNORE_PROPERTIES = new String[] { "id", "status", "hitCount", "issueDate" }; @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "article_sequence") private Long id; //文章编号 PK @Column(nullable = false) private String title; //标题 not-null private String subtitle; //副标题 private String keyword; //关键字 private String author; //作者 private String summary; //摘要 private String rePrint; //转载 转载自某站点某栏目 @Column(length = 4000, nullable = false) private String content; //正文内容 Long @Column(nullable = false) private Long articleTypeId; //文章类型 not-null private Date wzrq; // 文章日期 private Date overdueDate; // 过期时间 private Date issueDate; // 发布日期 开始为空,只有审核和发布阶段可以改 private String pubUrl; // 发布路径 private Integer hitCount = new Integer(0); //点击率 private Integer scoreCount = new Integer(0); //评分次数 private Integer scores = new Integer(0); //总评分 private Integer deleted = CMSConstants.FALSE; // 删除标志 private Long recycleId; // 回收站ID private Integer status = CMSConstants.START_STATUS; // 文章的状态 0: 锁定 1:编辑中 2:已编 3:已签 4:待发布 5:过期 -1:发布已生成xml private Integer secret; // 文章的秘级 0:普通(缺省)1:秘密 2:机密 3:绝密 /* 临时添加,仅用于展示 */ @Transient private String typeName; // 文章类型名称 @Transient private Long channelId; // 文章所属栏目ID @Transient private String channelName; // 文章所属栏目名称 @Transient private Channel site; // 文章所在的站点 @Transient private Integer articleOrigin; // 文章来源 0:普通文章 1:分发文章 2:转载文章 3:导入文章 (取值于ChannelArticle) @Transient private Integer isTop; // 文章是否置顶 (取值于ChannelArticle) @Transient private Integer seqNo; // 栏目下文章的顺序 (取值于ChannelArticle) @Transient private Integer workflowId; // 文章工作流ID @Transient private String publishArticleClassName; //发布文章实现类 @Transient Map<String, Attachment> attachments = new LinkedHashMap<String, Attachment>(); //存放文章附件列表 public Integer getArticleOrigin() { return articleOrigin; } public void setArticleOrigin(Integer articleOrigin) { this.articleOrigin = articleOrigin; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Integer getDeleted() { return deleted; } public void setDeleted(Integer deleteTag) { this.deleted = deleteTag; } public Integer getHitCount() { return hitCount; } public void setHitCount(Integer hitCount) { this.hitCount = hitCount; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Date getIssueDate() { return issueDate; } public void setIssueDate(Date issueDate) { this.issueDate = issueDate; } public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } public String getRePrint() { return rePrint; } public void setRePrint(String rePrint) { this.rePrint = rePrint; } public Integer getSecret() { return secret; } public void setSecret(Integer secret) { this.secret = secret; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public String getSubtitle() { return subtitle; } public void setSubtitle(String subtitle) { this.subtitle = subtitle; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Long getArticleTypeId() { return articleTypeId; } public void setArticleTypeId(Long articleTypeId) { this.articleTypeId = articleTypeId; } public Date getWzrq() { return wzrq; } public void setWzrq(Date wzrq) { this.wzrq = wzrq; } public Long getRecycleId() { return recycleId; } public void setRecycleId(Long recycleId) { this.recycleId = recycleId; } public String getPubUrl() { return pubUrl; } public void setPubUrl(String pubUrl) { this.pubUrl = pubUrl; } public Integer getScoreCount() { return scoreCount; } public void setScoreCount(Integer scoreCount) { this.scoreCount = scoreCount; } public Integer getScores() { return scores; } public void setScores(Integer scores) { this.scores = scores; } public Date getOverdueDate() { return overdueDate; } public void setOverdueDate(Date overdueDate) { this.overdueDate = overdueDate; } public String getName(){ return title; } public GridAttributesMap getAttributes(GridAttributesMap map) { Map<String, Object> attributes = new LinkedHashMap<String, Object>(); BeanUtil.addBeanProperties2Map(this, attributes); map.putAll(attributes); if(CMSConstants.ARTICLE_DISTRIBUTE.equals(this.getArticleOrigin())) { map.put("icon", "../platform/images/icon/distribute_article.gif"); } else if(CMSConstants.ARTICLE_RESHIP.equals(this.getArticleOrigin())) { map.put("icon", "../platform/images/icon/reprint_article.gif"); } else if(CMSConstants.ARTICLE_FROMTHIRD.equals(this.getArticleOrigin())) { map.put("icon", "../platform/images/icon/import_article.gif"); } else { map.put("icon", "../platform/images/icon/article.gif"); } return map; } public Map<String, Object> getAttributesForXForm() { Map<String, Object> map = new LinkedHashMap<String, Object>(); BeanUtil.addBeanProperties2Map(this, map); map.put("id", id); map.put("createTime", DateUtil.format(createTime)); if(wzrq != null) { map.put("wzrq", DateUtil.format(wzrq)); } if(overdueDate != null) { map.put("overdueDate", DateUtil.format(overdueDate)); } if(issueDate != null) { map.put("issueDate", DateUtil.format(issueDate)); } map.putAll(super.dynpropertiesMap); return map; } public TreeAttributesMap getAttributes() { TreeAttributesMap map = new TreeAttributesMap(id.toString(), title); map.put("state", articleOrigin); return map; } public String getEntityCode() { return "article" + articleTypeId; } public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } public String getPublishArticleClassName() { return publishArticleClassName; } public void setPublishArticleClassName(String publishArticleClassName) { this.publishArticleClassName = publishArticleClassName; } public Map<String, Attachment> getAttachments() { return attachments; } public Long getChannelId() { return channelId; } public void setChannelId(Long channelId) { this.channelId = channelId; } public String getChannelName() { return channelName; } public void setChannelName(String channelName) { this.channelName = channelName; } public Integer getSeqNo() { return seqNo; } public void setSeqNo(Integer seqNo) { this.seqNo = seqNo; } public Integer getWorkflowId() { return workflowId; } public void setWorkflowId(Integer workflowId) { this.workflowId = workflowId; } public String toString(){ return "(id:" + this.id + ", title:" + this.title + ")"; } public Channel getSite() { return site; } public void setSite(Channel site) { this.site = site; } public Integer getIsTop() { return isTop; } public void setIsTop(Integer isTop) { this.isTop = isTop; } }