亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? article.java

?? JAVA做的CMS源碼
?? JAVA
字號:
package com.jeecms.article.entity;

import static com.jeecms.core.Constants.ENCODING;
import static com.jeecms.core.Constants.SPT;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jeecms.article.entity.base.BaseArticle;
import com.jeecms.core.entity.Attachment;
import com.jeecms.core.util.ContentInterface;
import com.ponyjava.common.util.ComUtils;
import com.ponyjava.common.util.StrUtils;

public class Article extends BaseArticle implements ContentInterface {
	private static final long serialVersionUID = 1L;
	private static final Logger log = LoggerFactory.getLogger(Article.class);
	/**
	 * 文章表內容的存放地址
	 */
	public static final String ARTICLE_PATH = "article_content";
	/**
	 * 在附件表中的類別
	 */
	public static final String ATTACHMENT_CTG = "文章";
	/**
	 * 文章系統相對地址
	 */
	public static final String UPLOAD_PATH = SPT + "article";
	public static final String SUFFIX = ".txt";
	public static final int SPLIT_COUNT = 1000;
	public static final String SPLIT = "<p>[NextPage][/NextPage]</p>";
	public static final String SPLIT_REG = "<p>\\[NextPage\\]\\[/NextPage\\]</p>";

	/**
	 * 獲得url地址
	 * 
	 * @return
	 */
	public String getUrl() {
		if (!StringUtils.isBlank(getOuterUrl())) {
			return getOuterUrl();
		}
		StringBuilder sb = getWebsite().getWebUrlBuf();
		String path = getChannel().getPath();
		if (!StringUtils.isBlank(path)) {
			sb.append(SPT).append(path);
		}
		sb.append(SPT).append(getId()).append(".").append(
				getWebsite().getSuffix());
		return sb.toString();
	}

	/**
	 * 選擇模板
	 * 
	 * @return
	 */
	public String chooseTpl() {
		String s = getTplContent();
		if (StringUtils.isBlank(s)) {
			return getChannel().chooseTplContent();
		} else {
			return getWebsite().getTplRoot().append(getTplContent()).toString();
		}
	}

	/**
	 * 獲得第N頁的內容相對路徑。用戶包含文件。
	 * 
	 * @param pageNo
	 * @return
	 */
	public String relPath(int pageNo) {
		StringBuilder sb = getWebsite().getUserRoot();
		sb.append(SPT).append(ARTICLE_PATH).append(SPT).append(
				(getId() / SPLIT_COUNT) + 1).append(SPT).append(getId())
				.append("_").append(pageNo).append(SUFFIX);
		return sb.toString();
	}

	/**
	 * 獲得第N頁的絕對地址
	 * 
	 * @param root
	 * @param pageNo
	 * @return
	 */
	private String getRealPath(String root, int pageNo) {
		StringBuilder sb = new StringBuilder(root);
		sb.append(relPath(pageNo));
		return sb.toString().replace(SPT, File.separatorChar);
	}

	/**
	 * 從文件讀取內容
	 * 
	 * @return
	 */
	public String getContentFromFile() {
		if (rootReal == null) {
			throw new RuntimeException("請先設置服務器絕對路徑rootReal");
		}
		return getContentFromFile(rootReal);
	}

	/**
	 * 從文件讀取內容
	 * 
	 * @param root
	 * @return
	 */
	public String getContentFromFile(String root) {
		// @ TODO 處理資源路徑、域名、防盜鏈路徑改變的問題
		StringBuilder sb = new StringBuilder();
		try {
			File f = null;
			Integer count = getPageCount();
			if (count == null) {
				count = 0;
			}
			for (int i = 0; i < count; i++) {
				f = new File(getRealPath(root, i + 1));
				sb.append(FileUtils.readFileToString(f, ENCODING));
				if (i + 1 < count) {
					sb.append(SPLIT);
				}
			}
		} catch (IOException e) {
			log.error("讀取文章內容失敗", e);
		}
		return sb.toString();
	}

	/**
	 * 刪除文章文件
	 * 
	 * @param root
	 */
	public void deleteContentFile(String root) {
		File f = null;
		Integer count = getPageCount();
		log.debug("刪除文章內容:{},共有 {} 頁", getId(), count);
		if (count == null) {
			count = 0;
		}
		for (int i = 0; i < count; i++) {
			f = new File(getRealPath(root, i + 1));
			if (f.delete()) {
				log.info("刪除 文章內容 成功:{}_{},{}", new Object[] { getId(), i + 1,
						f.getAbsolutePath() });
			} else {
				log.warn("刪除 文章內容 失敗:{}_{},{}", new Object[] { getId(), i + 1,
						f.getAbsolutePath() });
			}
		}
	}

	/**
	 * 將內容寫入文件。并刪除多余分頁。
	 * 
	 * @param root
	 *            系統絕對根路徑
	 * @param origCount
	 *            原有分頁。0為原文章沒有內容
	 */
	public void writeContent(String root, int origCount) {
		String c = getContent();
		if (c == null) {
			c = "";
		}
		String[] arr = c.split(SPLIT_REG);
		try {
			int currCount = arr.length;
			if (currCount == 0) {
				arr = new String[] { "" };
			}
			// 寫文件
			for (int i = 0; i < currCount; i++) {
				File f = new File(getRealPath(root, i + 1));
				// 防止空串無法寫入文件
				if (StringUtils.isEmpty(arr[i])) {
					f.createNewFile();
				} else {
					FileUtils.writeStringToFile(f, arr[i], ENCODING);
				}
				log.info("寫 文章內容 成功:{}_{},{}", new Object[] { getId(), i + 1,
						f.getAbsolutePath() });
			}
			// 刪除原剩余文件
			for (int i = currCount; i < origCount; i++) {
				File f = new File(getRealPath(root, i + 1));
				if (f.delete()) {
					log.info("刪除 文章內容 成功:{}_{},{}", new Object[] { getId(),
							i + 1, f.getAbsolutePath() });
				} else {
					log.warn("刪除 文章內容 失敗:{}_{},{}", new Object[] { getId(),
							i + 1, f.getAbsolutePath() });
				}
			}
		} catch (IOException e) {
			log.error("寫文章內容失敗", e);
		}
	}

	/**
	 * 獲得內容中的頁數
	 * 
	 * @return
	 */
	public void calculatePageCount() {
		String c = getContent();
		int count = 1;
		if (!StringUtils.isEmpty(c)) {
			count = c.split(SPLIT_REG).length;
		}
		if (count < 1) {
			count = 1;
		}
		setPageCount(count);
	}

	/**
	 * 獲得內容圖片的URL地址
	 * 
	 * @return
	 */
	public String getCttImgUrl() {
		String img = getContentImg();
		if (StringUtils.isBlank(img)) {
			// TODO 鏈接到圖片默認的提示圖片
			return "";
		} else {
			return getWebsite().getUploadUrlBuf().append(img).toString();
		}
	}

	/**
	 * 資源URL是否改變。
	 * 
	 * 如域名、部署路徑、端口號改變,資源URL也會改變。這樣將導致文章中的圖片無法顯示。
	 * 
	 * @return
	 */
	public boolean isResPathChannge() {
		String ourl = getContentResPath();
		// 如果必須的字段為空,則有可能不是持久化對象。
		if (StringUtils.isBlank(ourl) || getWebsite() == null
				|| StringUtils.isBlank(getWebsite().getResUrl())) {
			return false;
		}
		String curl = getWebsite().getResUrl();
		return !ourl.equals(curl);
	}

	/**
	 * 更新資源路徑
	 */
	public void updateResPath() {
		String newResPath = getWebsite().getResUrl();
		String oldResPath = getContentResPath();
		if (StringUtils.equals(newResPath, oldResPath)) {
			return;
		}
		String content = getContentFromFile();
		content = content.replace(oldResPath, newResPath);
		writeContent(getRootReal(), 0);
		setContentResPath(newResPath);
	}

	public void addToAttachments(Attachment attachment) {
		Set<Attachment> attachments = getAttachments();
		if (attachments == null) {
			attachments = new HashSet<Attachment>();
			setAttachments(attachments);
		}
		attachments.add(attachment);
	}

	/**
	 * 獲得置頂時間
	 * 
	 * @return
	 */
	public int getTopHour() {
		Date date = getSortDate();
		if (date == null) {
			return 0;
		}
		long remain = date.getTime() - System.currentTimeMillis();
		if (remain <= 0) {
			return 0;
		}
		return (int) remain / (1000 * 60 * 60);
	}

	public String desc(int len) {
		String s = getDescription();
		if (StringUtils.isBlank(s)) {
			return "";
		} else {
			return StrUtils.getCn(s, len);
		}
	}

	public String getImgUrl() {
		String img = getTitleImg();
		if (StringUtils.isBlank(img)) {
			// TODO 鏈接到圖片默認的提示圖片
			return "";
		} else {
			return getWebsite().getUploadUrlBuf().append(img).toString();
		}
	}

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

	public String stit(int len) {
		String s = getShortTitle();
		if (StringUtils.isBlank(s)) {
			s = getTitle();
		}
		if (StringUtils.isBlank(s)) {
			return "";
		} else {
			return StrUtils.getCn(s, len);
		}
	}

	public String tit(int len) {
		String s = getTitle();
		if (StringUtils.isBlank(s)) {
			return "";
		} else {
			return StrUtils.getCn(s, len);
		}
	}

	public String getTitCol() {
		String s = getTitleColor();
		if (s == null) {
			return "";
		} else {
			return s;
		}
	}

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

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

	public String getWebName() {
		return getWebsite().getShortName();
	}

	public String getWebUrl() {
		return getWebsite().getWebUrl();
	}

	public String getDate(int style) {
		Date date = getReleaseDate();
		return ComUtils.formatDate(date, style);
	}

	private String content;
	private String rootReal;

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

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

	/**
	 * Constructor for required fields
	 */
	public Article(java.lang.Long id,
			com.jeecms.cms.entity.ContentCtg contentCtg,
			com.jeecms.cms.entity.CmsChannel channel,
			com.jeecms.core.entity.Website website,
			com.jeecms.cms.entity.CmsConfig config, java.util.Date sortDate,
			java.util.Date releaseDate, java.util.Date releaseSysDate,
			java.lang.Long visitTotal, java.lang.Long visitToday,
			java.lang.Long visitWeek, java.lang.Long visitMonth,
			java.lang.Long visitQuarter, java.lang.Long visitYear,
			java.lang.Integer checkStep, java.lang.Integer topLevel,
			java.lang.Integer commentCount, java.lang.Boolean hasTitleImg,
			java.lang.Boolean allowComment, java.lang.Boolean bold,
			java.lang.Boolean draft, java.lang.Boolean recommend,
			java.lang.Boolean check, java.lang.Boolean disabled,
			java.lang.Boolean reject) {

		super(id, contentCtg, channel, website, config, sortDate, releaseDate,
				releaseSysDate, visitTotal, visitToday, visitWeek, visitMonth,
				visitQuarter, visitYear, checkStep, topLevel, commentCount,
				hasTitleImg, allowComment, bold, draft, recommend, check,
				disabled, reject);
	}

	/* [CONSTRUCTOR MARKER END] */

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getRootReal() {
		return rootReal;
	}

	public void setRootReal(String rootReal) {
		this.rootReal = rootReal;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕精品—区二区四季| 欧美一级搡bbbb搡bbbb| 精彩视频一区二区| 精品一区二区三区久久久| 蜜桃视频一区二区三区| 日韩avvvv在线播放| 蜜臀av性久久久久蜜臀av麻豆| 一区二区三区在线播放| 亚洲国产乱码最新视频 | 国产成人精品一区二| 久久99国产精品久久99| 国产美女精品人人做人人爽| 福利一区二区在线观看| 99精品视频一区| 欧美午夜精品理论片a级按摩| 欧美特级限制片免费在线观看| 欧美一a一片一级一片| 欧美精品一级二级| 久久免费美女视频| 亚洲男女一区二区三区| 日韩综合一区二区| 国产成人av电影在线观看| eeuss鲁片一区二区三区| 日本韩国欧美一区| 欧美一区二区三区免费视频 | 色婷婷av一区二区| 欧美日韩国产另类不卡| 精品国产乱码91久久久久久网站| 国产日韩欧美一区二区三区乱码 | 91在线精品一区二区| 欧美美女一区二区| 欧美精彩视频一区二区三区| 亚洲黄色录像片| 九色综合国产一区二区三区| 9i看片成人免费高清| 欧美一区二区三区在线看| 精品国产伦一区二区三区免费| 欧美激情资源网| 日韩精品电影一区亚洲| 99视频在线精品| 精品国产精品一区二区夜夜嗨| 亚洲视频每日更新| 久久99精品国产麻豆不卡| 色哟哟亚洲精品| 欧美极品xxx| 美女一区二区三区| 日本久久电影网| 国产精品欧美久久久久无广告| 天使萌一区二区三区免费观看| 成人午夜又粗又硬又大| 欧美一区二区三区电影| 亚洲一区二区三区精品在线| 高清国产一区二区| 日韩精品影音先锋| 日韩有码一区二区三区| 色婷婷精品大视频在线蜜桃视频| 久久久久久一级片| 美国三级日本三级久久99 | 欧美tickle裸体挠脚心vk| 亚洲免费在线电影| 丁香六月久久综合狠狠色| 日韩欧美一区二区在线视频| 亚洲一区二区欧美日韩| 成人av影视在线观看| 久久奇米777| 国产一区二区91| 久久亚洲私人国产精品va媚药| 天堂蜜桃一区二区三区| 欧美日韩在线三级| 夜夜嗨av一区二区三区四季av| 99精品欧美一区二区三区小说 | 午夜国产不卡在线观看视频| 色婷婷久久久久swag精品| 亚洲日本在线视频观看| 色综合久久天天综合网| 亚洲免费色视频| 欧美无砖专区一中文字| 亚洲欧美激情一区二区| 成人精品视频.| 亚洲视频 欧洲视频| 91美女在线视频| 亚洲综合色网站| 制服丝袜av成人在线看| 美日韩一区二区| 国产视频视频一区| av电影在线观看一区| 综合网在线视频| 欧美日韩五月天| 免费观看在线色综合| 91麻豆精品国产自产在线| 日本欧美在线看| 欧美成人精品3d动漫h| 国产精品自在欧美一区| 国产精品不卡在线观看| 欧美日韩视频一区二区| 蜜桃免费网站一区二区三区| 久久久久久影视| 日本福利一区二区| 老司机精品视频导航| 国产午夜亚洲精品羞羞网站| 99久久久国产精品免费蜜臀| 亚洲精品日韩综合观看成人91| 欧美日韩另类国产亚洲欧美一级| 韩国欧美国产1区| 日韩美女精品在线| 日韩欧美区一区二| 99精品国产99久久久久久白柏| 一区二区久久久久| 亚洲精品一区二区三区福利| 99久久99精品久久久久久| 亚洲第一搞黄网站| 欧美国产成人精品| 3d成人h动漫网站入口| 国产成人自拍网| 日本中文字幕一区二区视频 | 精品影院一区二区久久久| 中文字幕亚洲在| 精品国产精品网麻豆系列| 99v久久综合狠狠综合久久| 免费观看在线综合| 亚洲一区二区五区| 欧美国产精品中文字幕| 欧美日韩久久久久久| 成人蜜臀av电影| 精品一区二区三区影院在线午夜| 一二三四区精品视频| 国产人久久人人人人爽| 日韩一区二区三区精品视频| 91麻豆123| 成人精品gif动图一区| 麻豆国产欧美日韩综合精品二区| 亚洲精品高清在线观看| 国产亚洲欧美中文| 日韩欧美综合一区| 欧美精品视频www在线观看| 99精品黄色片免费大全| 国产激情91久久精品导航| 首页欧美精品中文字幕| 亚洲一区欧美一区| 亚洲免费伊人电影| 亚洲色图在线视频| 国产精品的网站| 中文字幕欧美日本乱码一线二线| 欧美成人女星排行榜| 日韩丝袜情趣美女图片| 日韩视频一区二区| 91麻豆精品国产自产在线观看一区 | 精品人在线二区三区| 欧美挠脚心视频网站| 欧美日韩一区二区在线视频| 在线观看成人小视频| 91在线观看一区二区| 成人网男人的天堂| www.视频一区| 99re成人精品视频| 一本色道久久综合亚洲aⅴ蜜桃| 成人av午夜影院| 91在线观看美女| 欧美伊人精品成人久久综合97| 欧美在线你懂得| 在线播放91灌醉迷j高跟美女| 欧美日韩一区二区电影| 欧美日韩情趣电影| 欧美一区二区三区公司| 精品国产乱码久久久久久久| 久久精品无码一区二区三区| 国产精品入口麻豆九色| 亚洲人成网站色在线观看| 亚洲狼人国产精品| 日本女优在线视频一区二区| 美女脱光内衣内裤视频久久网站| 国产在线精品视频| www.一区二区| 欧美丰满高潮xxxx喷水动漫| 欧美tk—视频vk| 亚洲欧洲av在线| 五月激情综合色| 国产精品综合网| 欧美偷拍一区二区| 精品国产免费视频| 亚洲精品老司机| 黄色成人免费在线| 色成人在线视频| 日韩精品在线一区二区| 国产精品美女久久久久高潮 | 欧美精品电影在线播放| 精品av综合导航| 亚洲欧美偷拍卡通变态| 三级久久三级久久久| 成人国产在线观看| 日韩欧美一级在线播放| 成人免费小视频| 国产一区二区三区最好精华液| 91蝌蚪porny| 久久夜色精品国产噜噜av| 亚洲男人电影天堂| 国产精品一品二品| 4438成人网| 亚洲激情自拍偷拍| 高清视频一区二区|