📄 articleserviceimpl.java
字号:
* 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)
? " and article.artTitle like ? " : "");
//sqlStr += ((StringUtils.isNotEmpty(catalog) &&
// (catalog.trim().length() > 10)) ? " and article.catalog like ? " :
// "");
MyQuery query = new MyQuery();
if (StringUtils.isNotEmpty(title)) {
query.addPara("%" + title + "%", Types.VARCHAR);
}
if (StringUtils.isNotEmpty(catalog)) {
// query.addPara(catalog, Types.VARCHAR);
Collection catalogs = new ArrayList();
catalogs = getSubCatalogs(catalogs, catalog);
sqlStr += (" and article.catalog in ('" +
MyUtils.join("','", catalogs) + "') ");
}
if (StringUtils.isNotEmpty(status)) {
sqlStr += (" and article.artStatus='" + status + "' ");
}
if (StringUtils.isNotEmpty(order)) {
if (order.trim().equalsIgnoreCase("author")) {
query.setOrderby(" order by article.author " + sort);
} else if (order.trim().equalsIgnoreCase("catalog")) {
query.setOrderby(" order by article.catalog " + sort);
} else if (order.trim().equalsIgnoreCase("lastdate")) {
query.setOrderby(" order by article.artLastdate " + sort);
} else if (order.trim().equalsIgnoreCase("count")) {
query.setOrderby(" order by article.artCount " + sort);
} else if (order.trim().equalsIgnoreCase("title")) {
query.setOrderby(" order by article.artTitle " + sort);
} else {
query.setOrderby(" order by article.artLastdate " + sort);
}
} else {
query.setOrderby(" order by article.artLastdate desc");
}
if (StringUtils.isNumeric(page)) {
query.setPageStartNo(Integer.parseInt(page));
}
query.setQueryString(sqlStr);
ls = articleDAO.findArticle(query);
return ls;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public final Article[] findAll() {
return articleDAO.findAllArticle();
}
/**
* Load a Article by name from Database
*
* @return a Article instance
* @param articleName
* String
* @throws BuisnissException
*/
public final Article findByName(final String name) {
return articleDAO.getArticleByDesc(name);
}
/**
* Remove a Article from Database
*
* @param ids
* article id array
*/
public final void removeArticle(final Serializable[] ids) {
for (int i = 0, n = ids.length; i < n; i++) {
indexer.unIndex(getArticle(ids[i]));
articleDAO.removeArticle(ids[i]);
FileUtils.removeDir(jaosoConfig.getUploadFilePath(true) +
(String) ids[i]);
}
}
/**
* (non-Javadoc)
*
* @see jaoso.news.service.ArticleService#removeCritic(java.io.Serializable[])
*/
public final void removeCritic(final Serializable[] arg) {
Article article;
Critic critic;
for (int i = 0, n = arg.length; i < n; i++) {
critic = criticDAO.getCritic(arg[i]);
article = critic.getArticle();
article.getCritics().remove(critic);
articleDAO.updateArticle(article);
}
}
/**
* (non-Javadoc)
*
* @see jaoso.news.service.ArticleService#search(java.lang.String)
*/
public final Article[] search(final String[] query) {
String[] fields = { "title", "content" };
Collection idList = SearchUtil.toIdList(searcher.search(fields, query[0]),
Article.class.getName());
if ((idList == null) || (idList.size() < 1)) {
return null;
}
String queryString = "from Article a where a.artId in ('" +
MyUtils.join("','", idList) + "')";
MyQuery myquery = new MyQuery();
myquery.setQueryString(queryString);
myquery.setPageStartNo(Integer.parseInt(query[1]));
Article[] result = articleDAO.findArticle(myquery);
return result;
}
/**
* (non-Javadoc)
*
* @see jaoso.news.service.ArticleService#updateArticle(jaoso.news.domain.Article,
* java.util.Collection)
*/
public final void updateArticle(final Article article,
final Collection upLoadFiles) throws ArticleExistException {
if (articleDAO.isExist(article.getArtTitle(), article.getArtId())) {
throw new ArticleExistException("article already exist!");
}
Article po = articleDAO.getArticle(article.getArtId());
article.setArtCount(po.getArtCount());
try {
MyBeanUtils.copyProperties(po, article);
} catch (IllegalAccessException e) {
log.error("updateArticle error: ", e);
return;
} catch (InvocationTargetException e) {
log.error("updateArticle error: ", e);
return;
}
Catalog catalog = catalogDAO.getCatalog(po.getCatalog().getCatalogId());
if (!catalog.getArticles().contains(po)) {
catalog.getArticles().add(po);
}
doFile(po, upLoadFiles);
articleDAO.updateArticle(po);
indexer.index(article);
}
/**
* (non-Javadoc)
*
* @see jaoso.news.service.ArticleService#viewArticle(java.io.Serializable)
*/
public final Article viewArticle(final Serializable id) {
Article article = articleDAO.getArticle(id);
article.setArtCount(article.getArtCount() + 1);
articleDAO.updateArticle(article);
return article;
}
/**
* ��ø�Ŀ¼����Ŀ¼,�����Ŀ¼����Ŀ¼��ݹ����ֱ��û��Ϊֹ.
*
* @param catalogs
* ��Ŀ¼id�ļ��϶���
* @param id
* ָ��Ŀ¼��id
*
* @return ��Ŀ¼id����
*/
private Collection getSubCatalogs(final Collection catalogs,
final Serializable id) {
if (!catalogs.contains(id)) {
catalogs.add(id);
}
Catalog catalog = catalogDAO.getCatalog(id);
Collection subcatalogs = catalog.getChildren();
if (!MyUtils.isBlank(subcatalogs)) {
for (Iterator i = subcatalogs.iterator(); i.hasNext();) {
catalog = (Catalog) i.next();
if (!MyUtils.isBlank(catalog.getChildren())) {
getSubCatalogs(catalogs, catalog.getCatalogId());
} else {
if (!catalogs.contains(catalog.getCatalogId())) {
catalogs.add(catalog.getCatalogId());
}
}
}
}
return catalogs;
}
/**
* DOCUMENT ME!
*
* @param art
* DOCUMENT ME!
* @param upLoadFiles
* DOCUMENT ME!
*/
private void doFile(final Article art, final Collection upLoadFiles) {
String fileName = "";
String imgsrc = "";
String[] images;
UploadFile upfile = null;
String artContent = art.getArtContent();
images = HtmlPaser.getImgUrls(artContent);
for (int i = images.length; i-- > 0;) {
imgsrc = images[i];
log.info("src: " + imgsrc);
if (imgsrc.indexOf("http") != -1) {
fileName = getFileName(art, imgsrc);
UploadFile downFile = new UploadFile();
downFile.setDirect(jaosoConfig.getUploadFilePath(true) +
art.getArtId() + File.separator);
downFile.setFileName(fileName);
FileUtils.downLoadFile(imgsrc, downFile);
artContent = StringUtils.replace(artContent, imgsrc,
jaosoConfig.getUploadFilePath(false) + art.getArtId() +
File.separator + fileName);
if (!MyUtils.isBlank(art.getArtImage()) &&
(i == (images.length - 1)) &&
art.getArtImage().equalsIgnoreCase("Y")) {
art.setImageSrc(jaosoConfig.getUploadFilePath(false) +
art.getArtId()+"/" + fileName);
}
} else {
for (Iterator it2 = upLoadFiles.iterator(); it2.hasNext();) {
upfile = (UploadFile) it2.next();
if (!MyUtils.isBlank(upfile.getFileName()) &&
(imgsrc.indexOf(upfile.getFileName()) != -1)) {
upLoadFiles.remove(upfile);
break;
}
}
fileName = getFileName(art, imgsrc);
upfile.setFileName(fileName);
upfile.setDirect(jaosoConfig.getUploadFilePath(true) +
art.getArtId() + File.separator);
FileUtils.writeFile(upfile);
artContent = StringUtils.replace(artContent, imgsrc,
jaosoConfig.getUploadFilePath(false) + art.getArtId() +
File.separator + fileName);
if (!MyUtils.isBlank(art.getArtImage()) &&
(i == (images.length - 1)) &&
art.getArtImage().equalsIgnoreCase("Y")) {
art.setImageSrc(jaosoConfig.getUploadFilePath(false) +
art.getArtId()+"/" + fileName);
}
}
}
art.setArtContent(artContent);
}
private String getFileName(final Article art, final String fileName) {
String result = fileName;
while (result.indexOf(".") != -1) {
result = result.substring((fileName.indexOf(".") + 1));
}
StringBuffer sb = new StringBuffer();
sb.append(RandomStringUtils.randomAlphanumeric(12));
sb.append(".");
sb.append(result);
result = sb.toString();
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -