hibernatereferermanagerimpl.java

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

JAVA
595
字号
        catch (HibernateException e)        {            throw new RollerException(e);        }        Object[] resultsArray = (Object[]) results.get(0);        if (resultsArray.length > 0 && type.equals(DAYHITS))        {            if ( resultsArray[0] != null )            {                hits = ((Integer) resultsArray[0]).intValue();            }        }        else if ( resultsArray.length > 0 )        {            if ( resultsArray[0] != null )            {                hits = ((Integer) resultsArray[1]).intValue();            }        }        else        {            hits = 0;        }        return hits;    }        /**     * @see org.roller.pojos.RefererManager#getReferers(java.lang.String)     */    public List getReferers(WebsiteData website) throws RollerException    {        if (website==null )            throw new RollerException("website is null");        Session session = ((HibernateStrategy)mStrategy).getSession();        Criteria criteria = session.createCriteria(RefererData.class);        criteria.add(Expression.eq("website",website));        criteria.addOrder(Order.desc("totalHits"));        try        {            return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    //-----------------------------------------------------------------------    /**     * @see org.roller.pojos.RefererManager#getTodaysReferers(String)     */    public List getTodaysReferers(WebsiteData website)        throws RollerException    {        if (website==null )            throw new RollerException("website is null");        Session session = ((HibernateStrategy)mStrategy).getSession();        Criteria criteria = session.createCriteria(RefererData.class);        criteria.add(Expression.eq("website", website));        criteria.add(Expression.gt("dayHits", new Integer(0)));        criteria.addOrder(Order.desc("dayHits"));        try        {            return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    //-----------------------------------------------------------------------    /**     * Returns referers for a specified day. Duplicate enties are not     * included in this list so the hit counts may not be accurate.     * @see org.roller.pojos.RefererManager#getReferersToDate(     * org.roller.pojos.WebsiteData, java.lang.String)     */    public List getReferersToDate(WebsiteData website, String date)        throws RollerException    {        if (website==null )            throw new RollerException("website is null");        if (date==null )            throw new RollerException("Date is null");        Session session = ((HibernateStrategy)mStrategy).getSession();        Criteria criteria = session.createCriteria(RefererData.class);        criteria.add(Expression.eq("website", website));        criteria.add(Expression.eq("dateString", date));        criteria.add(Expression.eq("duplicate", Boolean.FALSE));        criteria.addOrder(Order.desc("totalHits"));        try        {            return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    //-----------------------------------------------------------------------    /**     * @see org.roller.pojos.RefererManager#getReferersToEntry(     * java.lang.String, java.lang.String)     */    public List getReferersToEntry(String entryid) throws RollerException    {        if (null == entryid)            throw new RollerException("entryid is null");        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(RefererData.class);            criteria.createAlias("weblogEntry","e");                        criteria.add(Expression.eq("e.id", entryid));            criteria.add(Expression.isNotNull("title"));            criteria.add(Expression.isNotNull("excerpt"));                        criteria.addOrder(Order.desc("totalHits"));                    return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    //-----------------------------------------------------------------------    /**     * @see org.roller.pojos.RefererManager#getReferersToEntry(     * java.lang.String, java.lang.String)     */    public void removeReferersForEntry(String entryid) throws RollerException    {        if (null == entryid)            throw new RollerException("entryid is null");        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(RefererData.class);            criteria.createAlias("weblogEntry","e");                        criteria.add(Expression.eq("e.id", entryid));                    Iterator referers = criteria.list().iterator();            while (referers.hasNext())            {                removeReferer( ((RefererData)referers.next()).getId() );            }        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    //-----------------------------------------------------------------------    /**     * Query for collection of referers.     */    protected List getReferersToWebsite(WebsiteData website, String refererUrl)        throws RollerException    {        Session session = ((HibernateStrategy)mStrategy).getSession();        Criteria criteria = session.createCriteria(RefererData.class);        criteria.add(Expression.eq("website", website));        criteria.add(Expression.eq("refererUrl", refererUrl));        try        {            return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }    //-----------------------------------------------------------------------    /**     * Query for collection of referers.     */    protected List getReferersWithSameTitle(        WebsiteData website,         String requestUrl,         String title,         String excerpt)        throws RollerException    {        try        {            Session session = ((HibernateStrategy)mStrategy).getSession();            Criteria criteria = session.createCriteria(RefererData.class);                        Junction conjunction = Expression.conjunction();            conjunction.add(Expression.eq("website", website));            conjunction.add(Expression.eq("requestUrl", requestUrl));                        Junction disjunction = Expression.conjunction();            disjunction.add(Expression.eq("title", title));            disjunction.add(Expression.eq("excerpt", excerpt));                    criteria.add(conjunction);            criteria.add(disjunction);                        return criteria.list();        }        catch (HibernateException e)        {            throw new RollerException(e);        }    }        /**     * Purge referers at midnight. Zero out all dayHits and remove all     * referers that do not have excerpts.     */    public void checkForTurnover( boolean forceTurnover, String websiteId )        throws RollerException    {        // Note, this method doesn't need to be synchronized anymore since        // it's called from the timer task now, and will never be executed        // by two threads simultaneously.        if (mLogger.isDebugEnabled())        {            mLogger.debug("checkForTurnover");        }        Date now = new Date();        if (forceTurnover ||                !mDateFormat.format(now).equals(mDateFormat.format(mRefDate)))        {            try            {                if (websiteId == null) mRefDate = now;                List refs;                try                {                    Session session = ((HibernateStrategy)mStrategy).getSession();                    Criteria criteria = session.createCriteria(RefererData.class);                    criteria.add(Expression.gt("dayHits", new Integer(0)));                    if (websiteId != null)                    {                        criteria.add(Expression.eq("website.id", websiteId));                    }                    refs = criteria.list();                }                catch (HibernateException e1)                {                    throw new RollerException(e1);                }                Integer zero = new Integer(0);                for (Iterator rdItr = refs.iterator(); rdItr.hasNext();) {                    RefererData referer = (RefererData) rdItr.next();                    if (   (referer.getExcerpt() != null) &&                            (referer.getExcerpt().trim().length() > 0))                    {                        // Zero out dayHits of referers with excerpts                        referer.setDayHits(zero);                        storeReferer(referer);                    }                    else                    {                        // Throw away referers without excerpts                        removeReferer(referer.getId());                    }                }            }            catch (RollerException e)            {                mLogger.error("EXCEPTION resetting referers",e);            }        }    }}

⌨️ 快捷键说明

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