Author: ludovic Date: 2007-09-07 12:32:54 +0200 (Fri, 07 Sep 2007) New Revision: 4755
Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java Log: XWIKI-1721 Statistics exception Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java =================================================================== --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java 2007-09-07 10:31:36 UTC (rev 4754) +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java 2007-09-07 10:32:54 UTC (rev 4755) @@ -18,120 +18,124 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. * */ - -package com.xpn.xwiki.stats.impl; - -import java.util.Date; - -public class VisitStats extends XWikiStats { - protected VisitStats oldObject = null; - - public VisitStats() { - } - - public VisitStats(String user, String uniqueID, String cookie, String ip, String userAgent, Date startDate, int periodtype) { - super(startDate, periodtype); - setName(user); - setClassName("internal"); - setStartDate(startDate); - setUniqueID(uniqueID); - setCookie(cookie); - setIP(ip); - setUserAgent(userAgent); - } - - public void rememberOldObject(VisitStats vobject) { - if (oldObject==null) - oldObject = vobject; - } - - public VisitStats getOldObject() { - return oldObject; - } - - public int getPageSaves() { - return getIntValue("pageSaves"); - } - - public void setPageSaves(int pageSaves) { - setIntValue("pageSaves", pageSaves); - } - - public void incPageSaves() { - setIntValue("pageSaves", getPageSaves() + 1); - } - - public int getDownloads() { - return getIntValue("downloads"); - } - - public void setDownloads(int downloads) { - setIntValue("downloads", downloads); - } - - public void incDownloads() { - setIntValue("downloads", getDownloads() + 1); - } - - public Date getStartDate() { - return getDateValue("startDate"); - } - - public void setStartDate(Date startDate) { - setDateValue("startDate", startDate); - } - - public Date getEndDate() { - return getDateValue("endDate"); - } - - public void setEndDate(Date endDate) { - setDateValue("endDate", endDate); - } - - public String getUniqueID() { - return getStringValue("uniqueID"); - } - - public void setUniqueID(String uniqueID) { - // Changing the unique ID is changing the number - if (getStartDate()!=null) { - String nb = uniqueID + getStartDate().getTime(); - setNumber(nb.hashCode()); - } - setStringValue("uniqueID", uniqueID); - } - - public String getCookie() { - return getStringValue("cookie"); - } - - public void setCookie(String cookie) { - setStringValue("cookie", cookie); - } - - public String getIP() { - return getStringValue("ip"); - } - - public void setIP(String ip) { - setStringValue("ip", ip); - } - - public String getUserAgent() { - return getStringValue("userAgent"); - } - - public void setUserAgent(String userAgent) { - setStringValue("userAgent", userAgent); - } - - public String getUser() { - return getName(); - } - - public void setUser(String user) { - setName(user); - } - -} + +package com.xpn.xwiki.stats.impl; + +import java.util.Date; + +public class VisitStats extends XWikiStats { + protected VisitStats oldObject = null; + + public VisitStats() { + } + + public VisitStats(String user, String uniqueID, String cookie, String ip, String userAgent, Date startDate, int periodtype) { + super(startDate, periodtype); + setName(user); + setClassName("internal"); + setStartDate(startDate); + setUniqueID(uniqueID); + setCookie(cookie); + setIP(ip); + setUserAgent(userAgent); + } + + public void rememberOldObject(VisitStats vobject) { + if (oldObject==null) + oldObject = vobject; + } + + public void unrememberOldObject() { + oldObject=null; + } + + public VisitStats getOldObject() { + return oldObject; + } + + public int getPageSaves() { + return getIntValue("pageSaves"); + } + + public void setPageSaves(int pageSaves) { + setIntValue("pageSaves", pageSaves); + } + + public void incPageSaves() { + setIntValue("pageSaves", getPageSaves() + 1); + } + + public int getDownloads() { + return getIntValue("downloads"); + } + + public void setDownloads(int downloads) { + setIntValue("downloads", downloads); + } + + public void incDownloads() { + setIntValue("downloads", getDownloads() + 1); + } + + public Date getStartDate() { + return getDateValue("startDate"); + } + + public void setStartDate(Date startDate) { + setDateValue("startDate", startDate); + } + + public Date getEndDate() { + return getDateValue("endDate"); + } + + public void setEndDate(Date endDate) { + setDateValue("endDate", endDate); + } + + public String getUniqueID() { + return getStringValue("uniqueID"); + } + + public void setUniqueID(String uniqueID) { + // Changing the unique ID is changing the number + if (getStartDate()!=null) { + String nb = uniqueID + getStartDate().getTime(); + setNumber(nb.hashCode()); + } + setStringValue("uniqueID", uniqueID); + } + + public String getCookie() { + return getStringValue("cookie"); + } + + public void setCookie(String cookie) { + setStringValue("cookie", cookie); + } + + public String getIP() { + return getStringValue("ip"); + } + + public void setIP(String ip) { + setStringValue("ip", ip); + } + + public String getUserAgent() { + return getStringValue("userAgent"); + } + + public void setUserAgent(String userAgent) { + setStringValue("userAgent", userAgent); + } + + public String getUser() { + return getName(); + } + + public void setUser(String user) { + setName(user); + } + +} Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java =================================================================== --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java 2007-09-07 10:31:36 UTC (rev 4754) +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java 2007-09-07 10:32:54 UTC (rev 4755) @@ -197,10 +197,11 @@ if (store == null) return; VisitStats vobject = findVisit(context); + synchronized(vobject) { // We count page views in the sessions only for the "view" action if (action.equals("view")) vobject.incPageViews(); - // We count "save" and "download" actions separately + // We count "save" and "download" actions separately else if (action.equals("save")) vobject.incPageSaves(); else if (action.equals("download")) @@ -216,7 +217,8 @@ if (oldObject!=null) { // Catch exception to not fail here try { - store.deleteXWikiCollection(oldObject, context, true, true); + store.deleteXWikiCollection(oldObject, context, true, true); + vobject.unrememberOldObject(); } catch (Exception e) {} } @@ -226,12 +228,13 @@ e.printStackTrace(); } - addPageView(doc.getFullName(), action, XWikiStats.PERIOD_MONTH, store, context, vobject); - addPageView(doc.getSpace(), action, XWikiStats.PERIOD_MONTH, store, context, vobject); - addPageView("", action, XWikiStats.PERIOD_MONTH, store, context, vobject); - addPageView(doc.getFullName(), action, XWikiStats.PERIOD_DAY, store, context, vobject); - addPageView(doc.getSpace(), action, XWikiStats.PERIOD_DAY, store, context, vobject); - addPageView("", action, XWikiStats.PERIOD_DAY, store, context, vobject); + addPageView(doc.getFullName(), action, XWikiStats.PERIOD_MONTH, store, context, vobject); + addPageView(doc.getSpace(), action, XWikiStats.PERIOD_MONTH, store, context, vobject); + addPageView("", action, XWikiStats.PERIOD_MONTH, store, context, vobject); + addPageView(doc.getFullName(), action, XWikiStats.PERIOD_DAY, store, context, vobject); + addPageView(doc.getSpace(), action, XWikiStats.PERIOD_DAY, store, context, vobject); + addPageView("", action, XWikiStats.PERIOD_DAY, store, context, vobject); + } // In case of a "view" action we want to store referer info if (action.equals("view")) { @@ -239,19 +242,20 @@ if ((referer !=null)&&(!referer.equals(""))) { // Visits of the web RefererStats robject = new RefererStats(doc.getFullName(), referer, new Date(), XWikiStats.PERIOD_MONTH); - try { - store.loadXWikiCollection(robject, context, true); - } catch (XWikiException e) { - } + synchronized(robject) { + try { + store.loadXWikiCollection(robject, context, true); + } catch (XWikiException e) { + } - robject.incPageViews(); - try { - store.saveXWikiCollection(robject, context, true); - } catch (XWikiException e) { - // Statistics should never make xwiki fail ! - e.printStackTrace(); + robject.incPageViews(); + try { + store.saveXWikiCollection(robject, context, true); + } catch (XWikiException e) { + // Statistics should never make xwiki fail ! + e.printStackTrace(); + } } - } } @@ -564,3 +568,4 @@ } + _______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications
