hibernateweblogmanagerimpl.java

来自「这个weblogging 设计得比较精巧」· Java 代码 · 共 808 行 · 第 1/2 页

JAVA
808
字号
    {        WeblogCategoryData srcCd =            (WeblogCategoryData) mStrategy.load(                srcId, WeblogCategoryData.class);                WeblogCategoryData destCd =            (WeblogCategoryData) mStrategy.load(                destId, WeblogCategoryData.class);                if (destCd.descendentOf(srcCd))        {            throw new RollerException(                    "ERROR cannot move parent category into it's own child");        }                // get all entries in category and subcats        List results = retrieveWeblogEntries(srcCd, true);            // Loop through entries in src cat, assign them to dest cat        Iterator iter = results.iterator();        WebsiteData website = destCd.getWebsite();        while (iter.hasNext())        {            WeblogEntryData entry = (WeblogEntryData) iter.next();            entry.setCategory(destCd);            entry.setWebsite(website);            entry.save();        }                // Make sure website's default and bloggerapi categories         // are valid after the move                if (srcCd.getWebsite().getDefaultCategory().getId().equals(srcId)            || srcCd.getWebsite().getDefaultCategory().descendentOf(srcCd))         {            srcCd.getWebsite().setDefaultCategory(destCd);        }                if (srcCd.getWebsite().getBloggerCategory().getId().equals(srcId)            || srcCd.getWebsite().getBloggerCategory().descendentOf(srcCd))         {            srcCd.getWebsite().setBloggerCategory(destCd);        }    }        public List retrieveWeblogEntries(WeblogCategoryData cat, boolean subcats)         throws RollerException    {                        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            List entries = new LinkedList();                        if (subcats)            {                   // Get entries in subcategories                Criteria assocsQuery =                     session.createCriteria(WeblogCategoryAssoc.class);                assocsQuery.add(Expression.eq("ancestorCategory", cat));                                Iterator assocs = assocsQuery.list().iterator();                                while (assocs.hasNext())                {                    WeblogCategoryAssoc assoc = (WeblogCategoryAssoc)assocs.next();                    Criteria entriesQuery =                         session.createCriteria(WeblogEntryData.class);                    entriesQuery.add(                        Expression.eq("category", assoc.getCategory()));                    Iterator entryIter = entriesQuery.list().iterator();                    while (entryIter.hasNext())                    {                        WeblogEntryData entry = (WeblogEntryData)entryIter.next();                        entries.add(entry);                    }                }                            }                        // Get entries in category            Criteria entriesQuery =                 session.createCriteria(WeblogEntryData.class);            entriesQuery.add(Expression.eq("category", cat));                            Iterator entryIter = entriesQuery.list().iterator();            while (entryIter.hasNext())            {                WeblogEntryData entry = (WeblogEntryData)entryIter.next();                entries.add(entry);            }            return entries;        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    /**      * @see org.roller.model.WeblogManager#removeWeblogEntryContents(     * org.roller.pojos.WeblogEntryData)     */    public void removeWeblogEntryContents(WeblogEntryData entry)         throws RollerException    {                try        {            Session session = ((HibernateStrategy)mStrategy).getSession();                        // remove referers            Criteria refererQuery = session.createCriteria(RefererData.class);            refererQuery.add(Expression.eq("weblogEntry", entry));            List entries = refererQuery.list();            for (Iterator iter = entries.iterator(); iter.hasNext();)             {                RefererData referer = (RefererData) iter.next();                referer.remove();            }                        // remove comments            /*            Criteria commentQuery = session.createCriteria(RefererData.class);            commentQuery.add(Expression.eq("weblogEntry", entry));            List comments = commentQuery.list();            */            List comments = RollerFactory.getRoller().getWeblogManager().getComments(entry.getId(), false);            for (Iterator iter = comments.iterator(); iter.hasNext();)             {                CommentData comment = (CommentData) iter.next();                comment.remove();            }        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    /**      * @see org.roller.model.WeblogManager#createAnchor(     * org.roller.pojos.WeblogEntryData)     */    public String createAnchor(WeblogEntryData entry) throws RollerException    {                try        {            // Check for uniqueness of anchor            String base = entry.createAnchorBase();            String name = base;            int count = 0;            while (true)            {                if (count > 0)                {                    name = base + count;                }                                Session session = ((HibernateStrategy)mStrategy).getSession();                Criteria criteria = session.createCriteria(WeblogEntryData.class);                criteria.add(Expression.eq("website", entry.getWebsite()));                criteria.add(Expression.eq("anchor", name));                                             List results = criteria.list();                                if (results.size() < 1)                {                    break;                }                else                {                    count++;                }            }            return name;        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    /**      * @see org.roller.model.WeblogManager#checkWeblogCategoryName(org.roller.pojos.WeblogCategoryData)     */    public boolean isDuplicateWeblogCategoryName(WeblogCategoryData cat)         throws RollerException    {                // ensure that no sibling categories share the same name        WeblogCategoryData parent =             null == cat.getId() ? (WeblogCategoryData)cat.getNewParent() : cat.getParent();                   if (null != parent) // don't worry about root        {            List sameNames;            try            {                Session session = ((HibernateStrategy)mStrategy).getSession();                Criteria criteria = session.createCriteria(WeblogCategoryAssoc.class);                criteria.createAlias("category", "c");                criteria.add(Expression.eq("c.name", cat.getName()));                criteria.add(Expression.eq("ancestorCategory", parent));                criteria.add(Expression.eq("relation", Assoc.PARENT));                sameNames = criteria.list();            }            catch (HibernateException e)            {                throw new RollerException(e);                    }            if (sameNames.size() > 1)             {                return true;                    }                   }        return false;    }    /**      * @see org.roller.model.WeblogManager#isWeblogCategoryInUse(org.roller.pojos.WeblogCategoryData)     */    public boolean isWeblogCategoryInUse(WeblogCategoryData cat)         throws RollerException    {        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(WeblogEntryData.class);            criteria.add(Expression.eq("category", cat));               criteria.setMaxResults(1);             int entryCount = criteria.list().size();                        if (entryCount > 0)            {                return true;            }                        Iterator cats = cat.getWeblogCategories().iterator();            while (cats.hasNext())            {                WeblogCategoryData childCat = (WeblogCategoryData)cats.next();                if (childCat.isInUse())                {                    return true;                }            }                        if (cat.getWebsite().getBloggerCategory().equals(cat))            {                return true;            }                        if (cat.getWebsite().getDefaultCategory().equals(cat))            {                return true;            }                        return false;        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    public boolean isDescendentOf(            WeblogCategoryData child, WeblogCategoryData ancestor)            throws RollerException    {        boolean ret = false;        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(WeblogCategoryAssoc.class);            criteria.add(Expression.eq("category", child));            criteria.add(Expression.eq("ancestorCategory", ancestor));            ret = criteria.list().size() > 0;        }        catch (HibernateException e)        {            throw new RollerException(e);                }        return ret;    }        /**      * @see org.roller.model.WeblogManager#getWeblogCategoryParentAssoc(     * org.roller.pojos.WeblogCategoryData)     */    public Assoc getWeblogCategoryParentAssoc(WeblogCategoryData cat)         throws RollerException    {        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(WeblogCategoryAssoc.class);            criteria.add(Expression.eq("category", cat));            criteria.add(Expression.eq("relation", Assoc.PARENT));            List parents = criteria.list();            if (parents.size() > 1)            {                throw new RollerException("ERROR: more than one parent");            }            else if (parents.size() == 1)            {                return (Assoc) parents.get(0);            }            else            {                return null;            }        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    /**      * @see org.roller.model.WeblogManager#getWeblogCategoryChildAssocs(     * org.roller.pojos.WeblogCategoryData)     */    public List getWeblogCategoryChildAssocs(WeblogCategoryData cat)         throws RollerException    {        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(WeblogCategoryAssoc.class);            criteria.add(Expression.eq("ancestorCategory", cat));            criteria.add(Expression.eq("relation", Assoc.PARENT));            return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    /**      * @see org.roller.model.WeblogManager#getAllWeblogCategoryDecscendentAssocs(     * org.roller.pojos.WeblogCategoryData)     */    public List getAllWeblogCategoryDecscendentAssocs(WeblogCategoryData cat)         throws RollerException    {        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(WeblogCategoryAssoc.class);            criteria.add(Expression.eq("ancestorCategory", cat));            return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    /**      * @see org.roller.model.WeblogManager#getWeblogCategoryAncestorAssocs(org.roller.pojos.WeblogCategoryData)     */    public List getWeblogCategoryAncestorAssocs(WeblogCategoryData cat)         throws RollerException    {        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(WeblogCategoryAssoc.class);            criteria.add(Expression.eq("category", cat));            return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }        /**     * Get the maxCount most recent non-spam Comments.  If a Website is presented      * only Comments for that site will be returned.     *      * @author lance.lavandowska     */    public List getRecentComments(WebsiteData website, int maxCount) throws RollerException    {        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(CommentData.class);            criteria.add( /* no spam ! */                Expression.not(Expression.eq("spam", Boolean.TRUE)));            if (website != null)             {                criteria.createAlias("weblogEntry","e");                criteria.add(Expression.eq("e.website", website));            }            criteria.addOrder(Order.desc("postTime"));            criteria.setMaxResults(maxCount);             return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }            }}

⌨️ 快捷键说明

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