📄 articleserviceimpl.java
字号:
? " 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((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 = "";
//要上传或下载的图片
Collection images;
//所有图片的新路径
Map newImages = new HashMap();
//上传的图片
FormFile upfile = null;
String artContent = art.getArtContent();
//找出要上传或下载的图片
images = parseImage(artContent);
int i = 0;
for (Iterator it = images.iterator(); it.hasNext();) {
imgsrc = (String) it.next();
log.info("imgsrc: " + imgsrc);
if (imgsrc.indexOf("http") != -1) {
fileName = imgsrc;
while (fileName.indexOf(".") != -1) {
fileName = fileName.substring((fileName.indexOf(".") + 1),
fileName.length());
}
fileName = art.getArtId() + "/" +
RandomStringUtils.randomAlphanumeric(12) + "." + fileName;
//下载文件
downLoadFile(imgsrc, fileName);
fileName = "pages/upload/" + fileName;
//替换文章内容的图片路径为新路径
artContent = StringUtils.replace(artContent, imgsrc, fileName);
//如果是图片新闻,保存图片路径
if (!MyUtils.isBlank(art.getArtImage()) && (i++ == 0) &&
art.getArtImage().equalsIgnoreCase("Y")) {
art.setImageSrc(fileName);
}
} else {
for (Iterator it2 = upLoadFiles.iterator(); it2.hasNext();) {
upfile = (FormFile) it2.next();
if (!MyUtils.isBlank(upfile.getFileName()) &&
(imgsrc.indexOf(upfile.getFileName()) != -1)) {
upLoadFiles.remove(upfile);
break;
}
}
if ((upfile == null) || MyUtils.isBlank(upfile.getFileName())) {
continue;
}
fileName = art.getArtId() + "/" +
RandomStringUtils.randomAlphanumeric(12) +
upfile.getFileName().substring(upfile.getFileName().indexOf("."),
upfile.getFileName().length());
//上传文件
upLoadFile(upfile, fileName);
fileName = "pages/upload/" + fileName;
//替换文章内容的图片路径为新路径
artContent = StringUtils.replace(artContent, imgsrc, fileName);
//如果是图片新闻,保存图片路径
if (!MyUtils.isBlank(art.getArtImage()) && (i++ == 0) &&
art.getArtImage().equalsIgnoreCase("Y")) {
art.setImageSrc(fileName);
}
}
}
//保存处理完图片的文章内容
art.setArtContent(artContent);
}
//end method
/**
* DOCUMENT ME!
*
* @param url DOCUMENT ME!
* @param fileName DOCUMENT ME!
*/
private void downLoadFile(final String url, final String fileName) {
log.info("download file");
URL uri = null;
InputStream stream = null;
try {
uri = new URL(url);
stream = uri.openStream();
FileUtils.writeFile(stream, fileName);
} catch (MalformedURLException e) {
log.error("downLoadFile error: " + e);
} catch (IOException e) {
log.error("downLoadFile error: " + e);
}
}
/**
* DOCUMENT ME!
*
* @param html DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
private Collection parseImage(final String html) {
Collection images = new ArrayList();
try {
Parser parser = new Parser();
parser.setInputHTML(html);
Node[] nodes = parser.extractAllNodesThatAre(ImageTag.class);
for (int i = 0; i < nodes.length; i++) {
ImageTag imageTag = (ImageTag) nodes[i];
if ((imageTag.getImageURL().indexOf("http://") != -1) &&
(imageTag.getImageURL().indexOf("pages/upload") == -1)) {
images.add(imageTag.getImageURL());
}
if (imageTag.getImageURL().indexOf("file://") != -1) {
images.add(imageTag.getImageURL());
}
}
} catch (ParserException e) {
log.error("parseImage error: " + e);
}
return images;
}
/**
* DOCUMENT ME!
*
* @param upfile DOCUMENT ME!
* @param fileName DOCUMENT ME!
*/
private void upLoadFile(final FormFile upfile, final String fileName) {
try {
log.info("upload file");
FileUtils.writeFile(upfile.getInputStream(), fileName);
} catch (FileNotFoundException e) {
log.error("upLoadFile error: " + e);
} catch (IOException e) {
log.error("upLoadFile error: " + e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -