articlemngimpl.java

来自「JEECMS此次版本升级相比之前的2.0版本做了比较大的改进」· Java 代码 · 共 154 行

JAVA
154
字号
package com.jeecms.article.manager.impl;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jeecms.article.dao.ArticleDao;
import com.jeecms.article.entity.Article;
import com.jeecms.article.manager.ArticleMng;
import com.jeecms.cms.entity.CmsAdmin;
import com.jeecms.cms.manager.CmsChannelMng;
import com.jeecms.core.JeeCoreManagerImpl;
import com.ponyjava.common.hibernate3.Updater;
import com.ponyjava.common.page.Pagination;
import com.ponyjava.common.struts2.ContextPvd;

@Service
@Transactional
public class ArticleMngImpl extends JeeCoreManagerImpl<Article> implements
		ArticleMng {
	@Override
	public Pagination getForTag(Long webId, Long chnlId, Long ctgId,
			String searchKey, Boolean hasTitleImg, boolean recommend,
			int orderBy, boolean isPage, int firstResult, int pageNo,
			int pageSize) {
		return getDao().getForTag(webId, chnlId, ctgId, searchKey, hasTitleImg,
				recommend, orderBy, isPage, firstResult, pageNo, pageSize);
	}

	@Override
	public Pagination getPage(Long chnlId, int pageNo, int count) {
		Set<Long> idSet = cmsChannelMng.findById(chnlId).getChildIds();
		Long[] ids = idSet.toArray(new Long[idSet.size()]);
		return getDao().getPage(ids, pageNo, count);
	}

	@Override
	public Object updateByUpdater(Updater updater) {
		Article bean = (Article) updater.getBean();
		if (StringUtils.isBlank(bean.getTitleImg())) {
			bean.setTitleImg("");
			bean.setHasTitleImg(false);
		} else {
			bean.setHasTitleImg(true);
		}
		int origCount = super.findById(bean.getId()).getPageCount();
		bean.setPageCount(bean.getPageCountFromContent());
		Article arti = (Article) super.updateByUpdater(updater);
		arti.writeContent(contextPvd.getAppRoot(), origCount);
		return arti;
	}

	@Override
	public Article save(Article arti, CmsAdmin admin) {
		if (StringUtils.isBlank(arti.getTitleImg())) {
			arti.setTitleImg("");
			arti.setHasTitleImg(false);
		} else {
			arti.setHasTitleImg(true);
		}
		arti.setDisabled(false);
		arti.setReject(false);
		Calendar nowCal = Calendar.getInstance();
		Date now = new java.sql.Timestamp(nowCal.getTimeInMillis());
		arti.setReleaseSysDate(now);
		// 如果没有输入发布时间,则取系统时间;如果输入发布时间,则加上当前时分秒。
		Date relDate = arti.getReleaseDate();
		if (relDate == null) {
			arti.setReleaseDate(now);
		} else {
			// 赋予时分秒
			arti.setReleaseDate(appendHms(relDate, nowCal));
		}
		arti.setStatDate(now);
		arti.setVisitToday(0L);
		arti.setVisitTotal(0L);
		arti.setAdminInput(admin);
		// @ TODO 处理审核问题
		arti.setCheck(true);
		arti.setPageCount(arti.getPageCountFromContent());
		// @ TODO 处理资源路径、域名、防盗链路径改变的问题
		super.save(arti);
		arti.writeContent(contextPvd.getAppRoot(), 0);
		Article parti = getDao().getPreArticle(arti.getWebsite().getId(),
				arti.getId());
		if (parti != null) {
			parti.setNext(arti);
			arti.setPre(parti);
		}
		return arti;
	}

	@Override
	public Article findById(Serializable id) {
		Article arti = super.findById(id);
		arti.setRootReal(contextPvd.getAppRoot());
		// @ TODO 处理资源路径、域名、防盗链路径改变的问题
		return arti;
	}

	@Override
	public Article deleteById(Serializable id) {
		// 处理上一篇、下一篇
		Article arti = findById(id);
		Article pre = arti.getPre();
		Article next = arti.getNext();
		if (pre != null) {
			pre.setNext(arti.getNext());
		}
		if (next != null) {
			next.setPre(arti.getPre());
		}
		super.deleteById(id);
		arti.deleteContentFile(contextPvd.getAppRoot());
		return arti;
	}

	/**
	 * 赋予时间当前的时分秒
	 * 
	 * @param d
	 * @param now
	 * @return
	 */
	private Date appendHms(Date d, Calendar now) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(d);
		cal.set(Calendar.HOUR_OF_DAY, now.get(Calendar.HOUR_OF_DAY));
		cal.set(Calendar.MINUTE, now.get(Calendar.MINUTE));
		cal.set(Calendar.SECOND, now.get(Calendar.SECOND));
		return new java.sql.Timestamp(cal.getTimeInMillis());
	}

	@Autowired
	private CmsChannelMng cmsChannelMng;
	@Autowired
	private ContextPvd contextPvd;

	@Autowired
	public void setDao(ArticleDao dao) {
		super.setDao(dao);
	}

	protected ArticleDao getDao() {
		return (ArticleDao) super.getDao();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?