⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 articleserviceimpl.java

📁 Jaoso新闻文章发布系统 0.9.1final 程序架构: Struts+Spring+Hibernate 主要功能:   ·新闻采用在线编辑器,可以象使用word一样编辑新闻,可简繁
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     *            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 + -