📄 articleserviceimpl.java
字号:
package jaoso.news.service.impl;
import jaoso.framework.core.search.Indexer;
import jaoso.framework.core.search.SearchUtil;
import jaoso.framework.core.search.Searcher;
import jaoso.framework.dao.AccountDAO;
import jaoso.framework.dao.MyQuery;
import jaoso.framework.util.FileUtils;
import jaoso.framework.util.MyBeanUtils;
import jaoso.framework.util.MyUtils;
import jaoso.news.dao.ArticleDAO;
import jaoso.news.dao.CatalogDAO;
import jaoso.news.dao.CriticDAO;
import jaoso.news.domain.Article;
import jaoso.news.domain.Catalog;
import jaoso.news.domain.Critic;
import jaoso.news.exception.ArticleExistException;
import jaoso.news.service.ArticleService;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.upload.FormFile;
import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.util.ParserException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* 操作文章
*
* @author 边缘孤客
* @version v0.9.1
*/
public class ArticleServiceImpl implements ArticleService {
/** 日志类 */
private static Log log = LogFactory.getLog(ArticleServiceImpl.class);
/** 操作文章的DAO */
private AccountDAO accountDAO;
/** DOCUMENT ME! */
private ArticleDAO articleDAO;
/** 操作目录的DAO */
private CatalogDAO catalogDAO;
/** 操作评论的DAO */
private CriticDAO criticDAO;
/** DOCUMENT ME! */
private Indexer indexer;
/** 提供搜索的类 */
private Searcher searcher;
/**
* Creates a new ArticleService object.
*/
public ArticleServiceImpl() {
}
/**
* @param arg accountDAO
*/
public final void setAccountDAO(final AccountDAO arg) {
this.accountDAO = arg;
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#getAllArticleCount()
*/
public final int getAllArticleCount() {
MyQuery query = new MyQuery();
query.setQueryString("select count(*) from Article");
return articleDAO.count(query);
}
/**
* DOCUMENT ME!
*
* @param args DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public final Integer getArtCount(final String[] args) {
String title = args[0];
String catalog = args[1];
Integer ls = new Integer(0);
String sqlStr = "select count(*) from Article article where 1=1 ";
sqlStr += (StringUtils.isNotEmpty(title)
? " and article.artTitle like ? " : "");
sqlStr += ((StringUtils.isNotEmpty(catalog) &&
(catalog.trim().length() > 10)) ? " and article.catalog like ? " : "");
MyQuery query = new MyQuery();
query.setQueryString(sqlStr);
if (StringUtils.isNotEmpty(title)) {
query.addPara("%" + title + "%", Types.VARCHAR);
}
if (StringUtils.isNotEmpty(catalog) && (catalog.trim().length() > 10)) {
query.addPara(catalog, Types.VARCHAR);
}
// ls = (Integer)articleDAO.findArticle(query);
// if (it.hasNext()) {
// ls = (Integer) it.next();
// }
return ls;
}
//end method
/**
* DOCUMENT ME!
*
* @param id DOCUMENT ME!
*
* @return DOCUMENT ME!
*
*/
public final Article getArticle(final Serializable id) {
return articleDAO.getArticle(id);
}
/**
* @param arg articleDAO
*/
public final void setArticleDAO(final ArticleDAO arg) {
this.articleDAO = arg;
}
/**
* @param arg catalogDAO
*/
public final void setCatalogDAO(final CatalogDAO arg) {
this.catalogDAO = arg;
}
/**
* @param arg critic DAO
*/
public final void setCriticDAO(final CriticDAO arg) {
this.criticDAO = arg;
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#getHotArticle()
*/
public final Article[] getHotArticle() {
MyQuery query = new MyQuery();
query.setQueryString(
"from Article a where a.hot='Y' and a.artStatus='CLOSE' ");
query.setOrderby(" order by a.artLastdate desc");
query.setPageStartNo(0);
query.setOffset(true);
return articleDAO.findArticle(query);
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#getImageArticle()
*/
public final Article[] getImageArticle() {
MyQuery query = new MyQuery();
query.setQueryString(
"from Article a where a.artImage='Y' and a.artStatus='CLOSE' ");
query.setOrderby(" order by a.artLastdate desc");
query.setPageSize(2);
query.setOffset(true);
return articleDAO.findArticle(query);
}
/**
* @param indexer
*/
public final void setIndexer(final Indexer indexer) {
this.indexer = indexer;
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#getLastUpdate(java.io.Serializable)
*/
public final Article[] getLastUpdate(final Serializable arg0) {
Collection catalogs = new ArrayList();
catalogs = getSubCatalogs(catalogs, arg0);
MyQuery myquery = new MyQuery();
String query =
"from Article a where a.artStatus='CLOSE' and a.catalog in ('" +
MyUtils.join("','", catalogs) + "') order by a.artLastdate desc";
myquery.setQueryString(query);
myquery.setOffset(true);
return articleDAO.findArticle(myquery);
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#getLastUpdate()
*/
public final Collection getLastUpdate() {
Catalog[] catalogs = catalogDAO.findCatalog(
"from Catalog c where c.parent is null order by c.catalogId");
Collection rs = new ArrayList();
Catalog catalog;
Article[] articles;
if (!MyUtils.isBlank(catalogs)) {
for (int i = 0, n = catalogs.length; i < n; i++) {
catalog = catalogs[i];
articles = getLastUpdate(catalog.getCatalogId());
if (!MyUtils.isBlank(articles)) {
Map map = new HashMap();
map.put("catalog", catalog.getCatalogTitle());
map.put("catalogId", catalog.getCatalogId());
map.put("articles", getLastUpdate(catalog.getCatalogId()));
rs.add(map);
}
}
}
return rs;
}
/**
* @param searcher
*/
public final void setSearcher(final Searcher searcher) {
this.searcher = searcher;
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#getTopNew()
*/
public final Article[] getTopNew() {
MyQuery query = new MyQuery();
query.setQueryString("from Article a where a.artStatus='CLOSE' ");
query.setOrderby(" order by a.artLastdate desc");
query.setPageStartNo(0);
query.setOffset(true);
return articleDAO.findArticle(query);
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#getTopArticle()
*/
public final Article[] getTopRead() {
MyQuery query = new MyQuery();
query.setQueryString("from Article a where a.artStatus='CLOSE' ");
query.setOrderby(" order by a.artCount desc");
query.setPageStartNo(0);
query.setOffset(true);
return articleDAO.findArticle(query);
}
/**
* (non-Javadoc)
* @see jaoso.news.service.ArticleService#addCritic(jaoso.news.domain.Critic)
*/
public final void addCritic(final Serializable arg0, final Critic arg1) {
Article article = getArticle(arg0);
arg1.setArticle(article);
article.getCritics().add(arg1);
articleDAO.updateArticle(article);
}
/**
* DOCUMENT ME!
*
* @param ids DOCUMENT ME!
*/
public final void approveArticle(final Serializable[] ids) {
Article article;
for (int i = 0, n = ids.length; i < n; i++) {
article = articleDAO.getArticle(ids[i]);
article.setArtStatus("CLOSE");
articleDAO.updateArticle(article);
}
}
/**
* DOCUMENT ME!
*
* @param ids DOCUMENT ME!
*/
public final void cancelArticle(final Serializable[] ids) {
Article article;
for (int i = 0, n = ids.length; i < n; i++) {
article = articleDAO.getArticle(ids[i]);
article.setArtStatus("OPEN");
articleDAO.updateArticle(article);
}
}
/**
* DOCUMENT ME!
*
* @param article DOCUMENT ME!
* @param upLoadFiles DOCUMENT ME!
* @exception ArticleExistException if article title exist
*/
public final void createArticle(final Article article,
final Collection upLoadFiles) throws ArticleExistException {
if (articleDAO.isExist(article.getArtTitle())) {
throw new ArticleExistException("article already exist!");
}
articleDAO.createArticle(article);
doFile(article, upLoadFiles);
indexer.index(article);
}
/**
* DOCUMENT ME!
*
* @param args DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public final Article[] find(final String[] args) {
String title = args[0];
String catalog = args[1];
String order = args[2];
String sort = args[3];
String page = args[4];
String status = args.length>=6?"":"CLOSE";
Article[] ls = null;
String sqlStr = "from Article article where 1=1 ";
sqlStr += (StringUtils.isNotEmpty(title)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -