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 + -
显示快捷键?