Package com.jeecms.cms.entity.main

Source Code of com.jeecms.cms.entity.main.Content

package com.jeecms.cms.entity.main;

import static com.jeecms.common.web.Constants.SPT;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.commons.lang.StringUtils;

import com.jeecms.cms.entity.assist.CmsComment;
import com.jeecms.cms.entity.main.Channel.AfterCheckEnum;
import com.jeecms.cms.entity.main.base.BaseContent;
import com.jeecms.cms.staticpage.StaticPageUtils;
import com.jeecms.cms.web.CmsThreadVariable;
import com.jeecms.core.web.ContentInterface;

public class Content extends BaseContent implements ContentInterface {
  private static final long serialVersionUID = 1L;

  /**
   * 状态
   *
   * @author liufang
   *
   */
  public enum ContentStatus {
    /**
     * 所有
     */
    all,
    /**
     * 草稿
     */
    draft,
    /**
     * 待审核
     */
    prepared,
    /**
     * 已审
     */
    passed,
    /**
     * 终审
     */
    checked,
    /**
     * 退回
     */
    rejected,
    /**
     * 回收
     */
    recycle
  };

  private DateFormat df = new SimpleDateFormat("/yyyyMMdd");

  public Boolean getStaticContent() {
    Channel channel = getChannel();
    if (channel != null) {
      return channel.getStaticContent();
    } else {
      return null;
    }
  }

  /**
   * 获得URL地址
   *
   * @return
   */
  public String getUrl() {
    if (!StringUtils.isBlank(getLink())) {
      return getLink();
    }
    if (getStaticContent()) {
      return getUrlStatic(false, 1);
    } else {
      return getUrlDynamic(null);
    }
  }

  public String getUrlWhole() {
    if (!StringUtils.isBlank(getLink())) {
      return getLink();
    }
    if (getStaticContent()) {
      return getUrlStatic(true, 1);
    } else {
      return getUrlDynamic(true);
    }

  }

  public String getUrlStatic() {
    return getUrlStatic(null, 1);
  }

  public String getUrlStatic(int pageNo) {
    return getUrlStatic(null, pageNo);
  }

  public String getUrlStatic(Boolean whole, int pageNo) {
    if (!StringUtils.isBlank(getLink())) {
      return getLink();
    }
    CmsSite site = getSite();
    StringBuilder url = site.getUrlBuffer(false, whole, false);
    String filename = getStaticFilenameByRule();
    if (!StringUtils.isBlank(filename)) {
      if (pageNo > 1) {
        int index = filename.indexOf(".", filename.lastIndexOf("/"));
        if (index != -1) {
          url.append(filename.subSequence(0, index)).append("_");
          url.append(pageNo).append(
              filename.subSequence(index, filename.length()));
        } else {
          url.append(filename).append("_").append(pageNo);
        }
      } else {
        url.append(filename);
      }
    } else {
      // 默认静态路径
      url.append(SPT).append(getChannel().getPath());
      url.append(df.format(getReleaseDate()));
      url.append(SPT).append(getId());
      if (pageNo > 1) {
        url.append("_").append(pageNo);
      }
      url.append(site.getStaticSuffix());

    }
    return url.toString();
  }

  public String getUrlDynamic() {
    return getUrlDynamic(null);
  }

  public String getStaticFilename(int pageNo) {
    CmsSite site = getSite();
    StringBuilder url = new StringBuilder();
    String staticDir = site.getStaticDir();
    if (!StringUtils.isBlank(staticDir)) {
      url.append(staticDir);
    }
    String filename = getStaticFilenameByRule();
    if (!StringUtils.isBlank(filename)) {
      int index = filename.indexOf(".", filename.lastIndexOf("/"));
      if (pageNo > 1) {
        if (index != -1) {
          url.append(filename.substring(0, index));
          url.append("_").append(pageNo);
          url.append(filename.substring(index));
        } else {
          url.append(filename).append("_").append(pageNo);
        }
      } else {
        url.append(filename);
      }
    } else {
      // 默认静态路径
      url.append(SPT).append(getChannel().getPath());
      url.append(df.format(getReleaseDate()));
      url.append(SPT).append(getId());
      if (pageNo > 1) {
        url.append("_").append(pageNo);
      }
      url.append(site.getStaticSuffix());
    }
    return url.toString();
  }

  public String getStaticFilenameByRule() {
    Channel channel = getChannel();
    CmsModel model = channel.getModel();
    String rule = channel.getContentRule();
    if (StringUtils.isBlank(rule)) {
      return null;
    }
    String url = StaticPageUtils.staticUrlRule(rule, model.getId(), model
        .getPath(), channel.getId(), channel.getPath(), getId(),
        getReleaseDate());
    return url;
  }

  public String getUrlDynamic(Boolean whole) {
    if (!StringUtils.isBlank(getLink())) {
      return getLink();
    }
    CmsSite site = getSite();
    StringBuilder url = site.getUrlBuffer(true, whole, false);
    url.append(SPT).append(getChannel().getPath());
    url.append(SPT).append(getId()).append(site.getDynamicSuffix());
    return url.toString();
  }

  public Set<Channel> getChannelsWithoutMain() {
    Set<Channel> set = new HashSet<Channel>(getChannels());
    set.remove(getChannel());
    return set;
  }

  public void setContentTxt(ContentTxt txt) {
    Set<ContentTxt> set = getContentTxtSet();
    if (set == null) {
      set = new HashSet<ContentTxt>();
      setContentTxtSet(set);
    }
    if (!set.isEmpty()) {
      set.clear();
    }
    set.add(txt);
  }

  public void setContentCheck(ContentCheck check) {
    Set<ContentCheck> set = getContentCheckSet();
    if (set == null) {
      set = new HashSet<ContentCheck>();
      setContentCheckSet(set);
    }
    if (!set.isEmpty()) {
      set.clear();
    }
    set.add(check);
  }

  public void addToChannels(Channel channel) {
    Set<Channel> channels = getChannels();
    if (channels == null) {
      channels = new HashSet<Channel>();
      setChannels(channels);
    }
    channels.add(channel);
  }

  public void addToTopics(CmsTopic topic) {
    Set<CmsTopic> topics = getTopics();
    if (topics == null) {
      topics = new HashSet<CmsTopic>();
      setTopics(topics);
    }
    topics.add(topic);
  }

  public void addToGroups(CmsGroup group) {
    Set<CmsGroup> groups = getViewGroups();
    if (groups == null) {
      groups = new HashSet<CmsGroup>();
      setViewGroups(groups);
    }
    groups.add(group);
  }

  public void addToAttachmemts(String path, String name, String filename) {
    List<ContentAttachment> list = getAttachments();
    if (list == null) {
      list = new ArrayList<ContentAttachment>();
      setAttachments(list);
    }
    ContentAttachment ca = new ContentAttachment(path, name, 0);
    if (!StringUtils.isBlank(filename)) {
      ca.setFilename(filename);
    }
    list.add(ca);
  }

  public void addToPictures(String path, String desc) {
    List<ContentPicture> list = getPictures();
    if (list == null) {
      list = new ArrayList<ContentPicture>();
      setPictures(list);
    }
    ContentPicture cp = new ContentPicture();
    cp.setImgPath(path);
    cp.setDescription(desc);
    list.add(cp);
  }

  public String getTagStr() {
    List<ContentTag> tags = getTags();
    if (tags != null && tags.size() > 0) {
      StringBuilder sb = new StringBuilder();
      for (ContentTag tag : tags) {
        sb.append(tag.getName()).append(',');
      }
      return sb.substring(0, sb.length() - 1);
    } else {
      return null;
    }
  }

  /**
   * 是否草稿
   *
   * @return
   */
  public boolean isDraft() {
    return ContentCheck.DRAFT == getStatus();
  }

  /**
   * 是否终审通过
   *
   * @return
   */
  public boolean isChecked() {
    return ContentCheck.CHECKED == getStatus();
  }

  public Set<CmsGroup> getViewGroupsExt() {
    Set<CmsGroup> set = getViewGroups();
    if (set != null && set.size() > 0) {
      return set;
    } else {
      return getChannel().getViewGroups();
    }
  }

  public String getTplContentOrDef() {
    String tpl = getTplContent();
    if (!StringUtils.isBlank(tpl)) {
      return tpl;
    } else {
      return getChannel().getTplContentOrDef();
    }
  }

  /**
   * 是否有审核后的编辑权限。从CmsThread中获得当前用户。
   *
   * @return
   */
  public boolean isHasUpdateRight() {
    CmsUser user = CmsThreadVariable.getUser();
    if (user == null) {
      throw new IllegalStateException("CmsUser not found in CmsThread");
    }
    return isHasUpdateRight(user);
  }

  /**
   * 是否有审核后的编辑权限
   *
   * @param user
   * @return
   */
  public boolean isHasUpdateRight(CmsUser user) {
    AfterCheckEnum after = getChannel().getAfterCheckEnum();
    if (AfterCheckEnum.CANNOT_UPDATE == after) {
      CmsSite site = getSite();
      Byte userStep = user.getCheckStep(site.getId());
      Byte channelStep = getChannel().getFinalStepExtends();
      boolean checked = getStatus() == ContentCheck.CHECKED;
      // 如果内容审核级别大于用户审核级别,或者内容已经审核且用户审核级别小于栏目审核级别。
      if (getCheckStep() > userStep
          || (checked && userStep < channelStep)) {
        return false;
      } else {
        return true;
      }
    } else if (AfterCheckEnum.BACK_UPDATE == after
        || AfterCheckEnum.KEEP_UPDATE == after) {
      return true;
    } else {
      throw new RuntimeException("AfterCheckEnum '" + after
          + "' did not handled");
    }
  }

  /**
   * 是否有审核后的删除权限。从CmsThread中获得当前用户。
   *
   * @return
   */
  public boolean isHasDeleteRight() {
    CmsUser user = CmsThreadVariable.getUser();
    if (user == null) {
      throw new IllegalStateException("CmsUser not found in CmsThread");
    }
    return isHasDeleteRight(user);
  }

  /**
   * 是否有审核后的删除权限
   *
   * @param user
   * @return
   */
  public boolean isHasDeleteRight(CmsUser user) {
    AfterCheckEnum after = getChannel().getAfterCheckEnum();
    if (AfterCheckEnum.CANNOT_UPDATE == after) {
      CmsSite site = getSite();
      Byte userStep = user.getCheckStep(site.getId());
      Byte channelStep = getChannel().getFinalStepExtends();
      boolean checked = getStatus() == ContentCheck.CHECKED;
      // 如果内容审核级别大于用户审核级别,或者内容已经审核且用户审核级别小于栏目审核级别。
      if (getCheckStep() > userStep
          || (checked && userStep < channelStep)) {
        return false;
      } else {
        return true;
      }
    } else if (AfterCheckEnum.BACK_UPDATE == after
        || AfterCheckEnum.KEEP_UPDATE == after) {
      return true;
    } else {
      throw new RuntimeException("AfterCheckEnum '" + after
          + "' did not handled");
    }

  }

  public void init() {
    short zero = 0;
    byte bzero = 0;
    if (getViewsDay() == null) {
      setViewsDay(0);
    }
    if (getCommentsDay() == null) {
      setCommentsDay(zero);
    }
    if (getDownloadsDay() == null) {
      setDownloadsDay(zero);
    }
    if (getUpsDay() == null) {
      setUpsDay(zero);
    }
    if (getHasTitleImg() == null) {
      setHasTitleImg(false);
    }
    if (getRecommend() == null) {
      setRecommend(false);
    }
    if (getSortDate() == null) {
      setSortDate(new Timestamp(System.currentTimeMillis()));
    }
    if (getTopLevel() == null) {
      setTopLevel(bzero);
    }
    // 保存后立即生成静态化,如果这些值为null,则需要在模板中增加判断,使模板编写变得复杂。
    if (getChannels() == null) {
      setChannels(new HashSet<Channel>());
    }
    if (getTopics() == null) {
      setTopics(new HashSet<CmsTopic>());
    }
    if (getViewGroups() == null) {
      setViewGroups(new HashSet<CmsGroup>());
    }
    if (getTags() == null) {
      setTags(new ArrayList<ContentTag>());
    }
    if (getPictures() == null) {
      setPictures(new ArrayList<ContentPicture>());
    }
    if (getAttachments() == null) {
      setAttachments(new ArrayList<ContentAttachment>());
    }
  }

  public int getPageCount() {
    int txtCount = getTxtCount();
    if (txtCount <= 1) {
      List<ContentPicture> pics = getPictures();
      if (pics != null) {
        int picCount = pics.size();
        if (picCount > 1) {
          return picCount;
        }
      }
    }
    return txtCount;
  }

  public int getTxtCount() {
    ContentTxt txt = getContentTxt();
    if (txt != null) {
      return txt.getTxtCount();
    } else {
      return 1;
    }
  }

  public ContentPicture getPictureByNo(int pageNo) {
    List<ContentPicture> list = getPictures();
    if (pageNo >= 1 && list != null && list.size() >= pageNo) {
      return list.get(pageNo - 1);
    } else {
      return null;
    }
  }

  public String getTxtByNo(int pageNo) {
    ContentTxt txt = getContentTxt();
    if (txt != null) {
      return txt.getTxtByNo(pageNo);
    } else {
      return null;
    }
  }

  public String getTitleByNo(int pageNo) {
    ContentTxt txt = getContentTxt();
    if (txt != null) {
      return txt.getTitleByNo(pageNo);
    } else {
      return getTitle();
    }
  }

  public String getStitle() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getStitle();
    } else {
      return null;
    }
  }

  public String getTitle() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getTitle();
    } else {
      return null;
    }
  }

  public String getShortTitle() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getShortTitle();
    } else {
      return null;
    }
  }

  public String getDescription() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getDescription();
    } else {
      return null;
    }
  }

  public String getAuthor() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getAuthor();
    } else {
      return null;
    }
  }

  public String getOrigin() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getOrigin();
    } else {
      return null;
    }
  }

  public String getOriginUrl() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getOriginUrl();
    } else {
      return null;
    }
  }

  public Date getReleaseDate() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getReleaseDate();
    } else {
      return null;
    }
  }

  public String getMediaPath() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getMediaPath();
    } else {
      return null;
    }
  }

  public String getMediaType() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getMediaType();
    } else {
      return null;
    }
  }

  public String getTitleColor() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getTitleColor();
    } else {
      return null;
    }
  }

  public Boolean getBold() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getBold();
    } else {
      return null;
    }
  }

  public String getTitleImg() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getTitleImg();
    } else {
      return null;
    }
  }

  public String getContentImg() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getContentImg();
    } else {
      return null;
    }
  }

  public String getTypeImg() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getTypeImg();
    } else {
      return null;
    }
  }

  public String getLink() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getLink();
    } else {
      return null;
    }
  }

  public String getTplContent() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getTplContent();
    } else {
      return null;
    }
  }
 
  public Boolean getNeedRegenerate() {
    ContentExt ext = getContentExt();
    if (ext != null) {
      return ext.getNeedRegenerate();
    } else {
      return null;
    }
  }
 
  public void setNeedRegenerate(Boolean isNeed) {
    ContentExt ext = getContentExt();
    if (ext != null) {
      ext.setNeedRegenerate(isNeed);
    }
  }

  public String getTxt() {
    ContentTxt txt = getContentTxt();
    if (txt != null) {
      return txt.getTxt();
    } else {
      return null;
    }
  }

  public String getTxt1() {
    ContentTxt txt = getContentTxt();
    if (txt != null) {
      return txt.getTxt1();
    } else {
      return null;
    }
  }

  public String getTxt2() {
    ContentTxt txt = getContentTxt();
    if (txt != null) {
      return txt.getTxt2();
    } else {
      return null;
    }
  }

  public String getTxt3() {
    ContentTxt txt = getContentTxt();
    if (txt != null) {
      return txt.getTxt3();
    } else {
      return null;
    }
  }

  public Integer getViews() {
    ContentCount count = getContentCount();
    if (count != null) {
      return count.getViews();
    } else {
      return null;
    }
  }

  public Integer getCommentsCount() {
    ContentCount count = getContentCount();
    if (count != null) {
      return count.getComments();
    } else {
      return null;
    }
  }
 
  public Integer getCommentsCheckedNum() {
    Set<CmsComment> comments = getComments();
    int num=0;
    if (comments != null) {
      for(CmsComment comment:comments){
        if(comment.getChecked()){
          num++;
        }
      }
      return num;
    } else {
      return 0;
    }
  }

  public Integer getUps() {
    ContentCount count = getContentCount();
    if (count != null) {
      return count.getUps();
    } else {
      return null;
    }
  }

  public Integer getDowns() {
    ContentCount count = getContentCount();
    if (count != null) {
      return count.getDowns();
    } else {
      return null;
    }
  }

  public Byte getCheckStep() {
    ContentCheck check = getContentCheck();
    if (check != null) {
      return check.getCheckStep();
    } else {
      return null;
    }
  }

  public String getCheckOpinion() {
    ContentCheck check = getContentCheck();
    if (check != null) {
      return check.getCheckOpinion();
    } else {
      return null;
    }
  }

  public Boolean getRejected() {
    ContentCheck check = getContentCheck();
    if (check != null) {
      return check.getRejected();
    } else {
      return null;
    }
  }

  public ContentTxt getContentTxt() {
    Set<ContentTxt> set = getContentTxtSet();
    if (set != null && set.size() > 0) {
      return set.iterator().next();
    } else {
      return null;
    }
  }

  public ContentCheck getContentCheck() {
    Set<ContentCheck> set = getContentCheckSet();
    if (set != null && set.size() > 0) {
      return set.iterator().next();
    } else {
      return null;
    }
  }

  public String getDesc() {
    return getDescription();
  }

  public String getCtgName() {
    return getChannel().getName();
  }

  public String getCtgUrl() {
    return getChannel().getUrl();
  }

  public String getImgUrl() {
    return getTitleImg();
  }

  public String getImgUrl2() {
    return getTypeImg();
  }

  public String getStit() {
    String stit = getShortTitle();
    if (!StringUtils.isBlank(stit)) {
      return stit;
    } else {
      return getTit();
    }
  }

  public String getTit() {
    return getTitle();
  }

  public String getTitCol() {
    return getTitleColor();
  }

  public String getSiteName() {
    return getSite().getName();
  }

  public String getSiteUrl() {
    return getSite().getUrl();
  }

  public boolean isTitBold() {
    return getBold();
  }

  public Date getDate() {
    return getReleaseDate();
  }

  public Boolean getTarget() {
    return null;
  }
 
  public void clear(){
    getCollectUsers().clear();
  }

  /* [CONSTRUCTOR MARKER BEGIN] */
  public Content() {
    super();
  }

  /**
   * Constructor for primary key
   */
  public Content(java.lang.Integer id) {
    super(id);
  }

  /**
   * Constructor for required fields
   */
  public Content(java.lang.Integer id,
      com.jeecms.cms.entity.main.CmsSite site, java.util.Date sortDate,
      java.lang.Byte topLevel, java.lang.Boolean hasTitleImg,
      java.lang.Boolean recommend, java.lang.Byte status,
      java.lang.Integer viewsDay, java.lang.Short commentsDay,
      java.lang.Short downloadsDay, java.lang.Short upsDay) {

    super(id, site, sortDate, topLevel, hasTitleImg, recommend, status,
        viewsDay, commentsDay, downloadsDay, upsDay);
  }

  /* [CONSTRUCTOR MARKER END] */

}
TOP

Related Classes of com.jeecms.cms.entity.main.Content

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.