You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2005/11/07 23:03:38 UTC
svn commit: r331613 - in /portals/jetspeed-2/trunk:
components/statistics/src/java/org/apache/jetspeed/statistics/impl/
components/statistics/src/test/org/apache/jetspeed/statistics/
jetspeed-api/src/java/org/apache/jetspeed/statistics/
Author: taylor
Date: Mon Nov 7 14:03:29 2005
New Revision: 331613
URL: http://svn.apache.org/viewcvs?rev=331613&view=rev
Log:
http://issues.apache.org/jira/browse/JS2-362
statistics portlet query and user support
Added:
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/UserStatsImpl.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/UserStats.java
Modified:
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/AggregateStatisticsImpl.java
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPageStatistics.java
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPortletStatistics.java
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedStatistics.java
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedUserStatistics.java
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java
portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/StatisticsQueryCriteriaImpl.java
portals/jetspeed-2/trunk/components/statistics/src/test/org/apache/jetspeed/statistics/TestStatistics.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/AggregateStatistics.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/InvalidCriteriaException.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/PortalStatistics.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/StatisticsQueryCriteria.java
Modified: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/AggregateStatisticsImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/AggregateStatisticsImpl.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/AggregateStatisticsImpl.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/AggregateStatisticsImpl.java Mon Nov 7 14:03:29 2005
@@ -1,17 +1,17 @@
/* Copyright 2005 Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.jetspeed.statistics.impl;
import java.util.ArrayList;
@@ -20,112 +20,162 @@
import org.apache.jetspeed.statistics.AggregateStatistics;
-
-
/**
* AggregateStatisticsImpl
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: $
*/
public class AggregateStatisticsImpl implements AggregateStatistics
{
- float avgProcessingTime;
- float maxProcessingTime;
- float minProcessingTime;
- float stddevProcessingTime;
- int hitcount;
-
- List statlist;
-
- public AggregateStatisticsImpl() {
+ private float avgProcessingTime;
+
+ private float maxProcessingTime;
+
+ private float minProcessingTime;
+
+ private float stddevProcessingTime;
+
+ private int hitcount;
+
+ private List statlist;
+
+ public AggregateStatisticsImpl()
+ {
statlist = new ArrayList();
}
-
- public void addRow(Map row) {
+
+ public void addRow(Map row)
+ {
statlist.add(row);
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#getAvgProcessingTime()
*/
public float getAvgProcessingTime()
{
return this.avgProcessingTime;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#getHitCount()
*/
public int getHitCount()
{
- return this.hitcount;
+ return this.hitcount;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#getMaxProcessingTime()
*/
public float getMaxProcessingTime()
{
return this.maxProcessingTime;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#getMinProcessingTime()
*/
public float getMinProcessingTime()
{
return this.minProcessingTime;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#getStdDevProcessingTime()
*/
public float getStdDevProcessingTime()
{
return this.stddevProcessingTime;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#setAvgProcessingTime(float)
*/
public void setAvgProcessingTime(float time)
{
this.avgProcessingTime = time;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#setHitCount(int)
*/
public void setHitCount(int hitCount)
{
this.hitcount = hitCount;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#setMaxProcessingTime(float)
*/
public void setMaxProcessingTime(float time)
{
this.maxProcessingTime = time;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#setMinProcessingTime(float)
*/
public void setMinProcessingTime(float time)
{
this.minProcessingTime = time;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.AggregateStatistics#setStdDevProcessingTime(float)
*/
public void setStdDevProcessingTime(float time)
{
this.stddevProcessingTime = time;
}
-
-
- public String toString() {
- String s = "hit count = "+this.hitcount+"\n";
- s = s + "max time = "+this.maxProcessingTime+"\n";
- s = s + "min time = "+this.minProcessingTime+"\n";
- s = s + "avg time = "+this.avgProcessingTime+"\n";
- s = s + "stddev = "+this.stddevProcessingTime+"\n";
+
+ public String toString()
+ {
+ String s = "hit count = " + this.hitcount + "\n";
+ s = s + "max time = " + this.maxProcessingTime + "\n";
+ s = s + "min time = " + this.minProcessingTime + "\n";
+ s = s + "avg time = " + this.avgProcessingTime + "\n";
+ s = s + "stddev = " + this.stddevProcessingTime + "\n";
return s;
+ }
+
+ /**
+ * @return Returns the statlist.
+ */
+ public List getStatlist()
+ {
+ return statlist;
+ }
+
+ /**
+ * @param statlist
+ * The statlist to set.
+ */
+ public void setStatlist(List statlist)
+ {
+ this.statlist = statlist;
}
}
Modified: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPageStatistics.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPageStatistics.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPageStatistics.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPageStatistics.java Mon Nov 7 14:03:29 2005
@@ -26,8 +26,8 @@
* BatchedPageStatistics
* </p>
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: TestPortletEntityDAO.java,v 1.3 2005/05/24 14:43:19 ate Exp $
*/
public class BatchedPageStatistics extends BatchedStatistics
Modified: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPortletStatistics.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPortletStatistics.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPortletStatistics.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedPortletStatistics.java Mon Nov 7 14:03:29 2005
@@ -30,8 +30,8 @@
* instances added to a BatchedStatistics instance are all of the same type
* (Portlet Access, Page Access, or User Logout).
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: TestPortletEntityDAO.java,v 1.3 2005/05/24 14:43:19 ate Exp $
*/
public class BatchedPortletStatistics extends BatchedStatistics
Modified: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedStatistics.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedStatistics.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedStatistics.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedStatistics.java Mon Nov 7 14:03:29 2005
@@ -29,8 +29,8 @@
* BatchedStatistics
* </p>
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: TestPortletEntityDAO.java,v 1.3 2005/05/24 14:43:19 ate Exp $
*/
public abstract class BatchedStatistics implements Runnable
@@ -114,11 +114,11 @@
{
try
{
- synchronized(this.thread) {
+ synchronized (this.thread)
+ {
this.thread.wait(msElapsedTimeThreshold / 4);
}
- }
- catch (InterruptedException ie)
+ } catch (InterruptedException ie)
{
keepRunning = false;
}
Modified: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedUserStatistics.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedUserStatistics.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedUserStatistics.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/BatchedUserStatistics.java Mon Nov 7 14:03:29 2005
@@ -26,8 +26,8 @@
* BatchedUserStatistics
* </p>
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: TestPortletEntityDAO.java,v 1.3 2005/05/24 14:43:19 ate Exp $
*/
public class BatchedUserStatistics extends BatchedStatistics
Modified: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java Mon Nov 7 14:03:29 2005
@@ -24,11 +24,14 @@
import java.sql.Timestamp;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -45,6 +48,7 @@
import org.apache.jetspeed.statistics.InvalidCriteriaException;
import org.apache.jetspeed.statistics.PortalStatistics;
import org.apache.jetspeed.statistics.StatisticsQueryCriteria;
+import org.apache.jetspeed.statistics.UserStats;
import org.springframework.orm.ojb.support.PersistenceBrokerDaoSupport;
/**
@@ -52,15 +56,15 @@
* PortalStatisticsImpl
* </p>
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: TestPortletEntityDAO.java,v 1.3 2005/05/24 14:43:19 ate Exp $
*/
public class PortalStatisticsImpl extends PersistenceBrokerDaoSupport implements
PortalStatistics
{
- /**
+ /**
* @see org.apache.jetspeed.statistics.PortalStatistics#forceFlush()
*/
public void forceFlush()
@@ -123,38 +127,25 @@
private long maxTimeMsToFlush_Page = 10 * 1000;
ConnectionRepositoryEntry jetspeedDSEntry;
-
+
/* after this is NOT for injection */
DataSource ds;
- private int currentUsers = 0;
+ private int currentUserCount = 0;
+
+ private Map currentUsers;
/* date formatter */
protected SimpleDateFormat formatter = null;
- /**
- * <p>
- * Default Constructor.
- * </p>
- */
- public PortalStatisticsImpl()
+ public PortalStatisticsImpl(boolean logToCLF, boolean logToDatabase,
+ int maxRecordToFlush_Portal, int maxRecordToFlush_User,
+ int maxRecordToFlush_Page, long maxTimeMsToFlush_Portal,
+ long maxTimeMsToFlush_User, long maxTimeMsToFlush_Page,
+ ConnectionRepositoryEntry jetspeedDSEntry)
{
- }
-
- public PortalStatisticsImpl(
- boolean logToCLF,
- boolean logToDatabase,
- int maxRecordToFlush_Portal,
- int maxRecordToFlush_User,
- int maxRecordToFlush_Page,
- long maxTimeMsToFlush_Portal,
- long maxTimeMsToFlush_User,
- long maxTimeMsToFlush_Page,
- ConnectionRepositoryEntry jetspeedDSEntry
- )
- {
-
+
this.logToCLF = logToCLF;
this.logToDatabase = logToDatabase;
this.maxRecordToFlush_Portlet = maxRecordToFlush_Portal;
@@ -164,27 +155,28 @@
this.maxTimeMsToFlush_User = maxTimeMsToFlush_User;
this.maxTimeMsToFlush_Page = maxTimeMsToFlush_Page;
this.jetspeedDSEntry = jetspeedDSEntry;
-
+ currentUsers = new TreeMap();
}
public void springInit() throws NamingException
{
formatter = new SimpleDateFormat("dd/MM/yyyy:hh:mm:ss z");
- if (jetspeedDSEntry != null )
+ if (jetspeedDSEntry != null)
{
- if (jetspeedDSEntry.getJndiName() != null) {
+ if (jetspeedDSEntry.getJndiName() != null)
+ {
try
{
Context initialContext = new InitialContext();
- ds = (DataSource) initialContext.lookup(jetspeedDSEntry.getJndiName());
+ ds = (DataSource) initialContext.lookup(jetspeedDSEntry
+ .getJndiName());
} catch (NamingException e)
{
e.printStackTrace();
throw e;
}
- }
- else
+ } else
{
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName(jetspeedDSEntry.getDriverClassName());
@@ -193,11 +185,8 @@
bds.setPassword(jetspeedDSEntry.getPassword());
ds = (DataSource) bds;
}
- }
-
-
- currentUsers = 0;
-
+ }
+ currentUserCount = 0;
}
public DataSource getDataSource()
@@ -247,8 +236,9 @@
{
if (portletBatch == null)
{
- portletBatch = new BatchedPortletStatistics(ds, this.maxRecordToFlush_Portlet, this.maxTimeMsToFlush_Portlet,
- "portletLogBatcher");
+ portletBatch = new BatchedPortletStatistics(ds,
+ this.maxRecordToFlush_Portlet,
+ this.maxTimeMsToFlush_Portlet, "portletLogBatcher");
}
portletBatch.addStatistic(record);
@@ -257,7 +247,8 @@
{
if (pageBatch == null)
{
- pageBatch = new BatchedPageStatistics(ds, this.maxRecordToFlush_Page, this.maxTimeMsToFlush_Page,
+ pageBatch = new BatchedPageStatistics(ds,
+ this.maxRecordToFlush_Page, this.maxTimeMsToFlush_Page,
"pageLogBatcher");
}
pageBatch.addStatistic(record);
@@ -267,7 +258,8 @@
{
if (userBatch == null)
{
- userBatch = new BatchedUserStatistics(ds, this.maxRecordToFlush_User, this.maxTimeMsToFlush_User,
+ userBatch = new BatchedUserStatistics(ds,
+ this.maxRecordToFlush_User, this.maxTimeMsToFlush_User,
"userLogBatcher");
}
userBatch.addStatistic(record);
@@ -352,24 +344,46 @@
}
}
- public void logUserLogout(RequestContext request, long msElapsedTime)
+ public void logUserLogout(String ipAddress, String userName,
+ long msSessionLength)
{
try
{
- currentUsers = currentUsers - 1;
+ currentUserCount = currentUserCount - 1;
+
+ if (userName == null)
+ {
+ userName = "guest";
+ }
+
+ synchronized (currentUsers)
+ {
+ UserStats userStats = (UserStats) currentUsers.get(userName);
+ if (userStats == null)
+ {
+ //log.warn("Trying to log out a user that was never logged
+ // in!");
+ userStats = new UserStatsImpl();
+ userStats.setNumberOfSession(0);
+ userStats.setUsername(userName);
+ currentUsers.put(userName, userStats);
+ }
+ userStats
+ .setNumberOfSession(userStats.getNumberOfSessions() - 1);
+ if (userStats.getNumberOfSessions() <= 0)
+ {
+ currentUsers.remove(userName);
+ }
+ }
- HttpServletRequest req = request.getRequest();
- Principal principal = req.getUserPrincipal();
- String userName = (principal != null) ? principal.getName()
- : "guest";
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
UserLogRecord record = new UserLogRecord();
record.setUserName(userName);
- record.setIpAddress(req.getRemoteAddr());
+ record.setIpAddress(ipAddress);
record.setStatus(STATUS_LOGGED_OUT);
record.setTimeStamp(timestamp);
- record.setMsElapsedTime(msElapsedTime);
+ record.setMsElapsedTime(msSessionLength);
if (logToCLF)
{
@@ -396,7 +410,7 @@
{
try
{
- currentUsers = currentUsers + 1;
+ currentUserCount = currentUserCount + 1;
HttpServletRequest req = request.getRequest();
Principal principal = req.getUserPrincipal();
@@ -405,6 +419,23 @@
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
UserLogRecord record = new UserLogRecord();
+ synchronized (currentUsers)
+ {
+ UserStats userStats = (UserStats) currentUsers.get(userName);
+ if (userStats == null)
+ {
+ //log.warn("Trying to log out a user that was never logged
+ // in!");
+ userStats = new UserStatsImpl();
+ userStats.setNumberOfSession(0);
+ userStats.setUsername(userName);
+ currentUsers.put(userName, userStats);
+
+ }
+ userStats
+ .setNumberOfSession(userStats.getNumberOfSessions() + 1);
+ }
+
record.setUserName(userName);
record.setIpAddress(req.getRemoteAddr());
record.setStatus(STATUS_LOGGED_IN);
@@ -427,7 +458,7 @@
}
- /**
+ /**
* @see org.springframework.beans.factory.DisposableBean#destroy()
*/
public void springDestroy()
@@ -435,16 +466,16 @@
if (portletBatch != null)
{
portletBatch.tellThreadToStop();
- synchronized(portletBatch.thread)
+ synchronized (portletBatch.thread)
{
portletBatch.thread.notify();
}
-
+
}
if (userBatch != null)
{
userBatch.tellThreadToStop();
- synchronized(userBatch.thread)
+ synchronized (userBatch.thread)
{
userBatch.thread.notify();
}
@@ -452,13 +483,13 @@
if (pageBatch != null)
{
pageBatch.tellThreadToStop();
- synchronized(pageBatch.thread)
+ synchronized (pageBatch.thread)
{
pageBatch.thread.notify();
}
}
- if ((this.currentUsers != 0) && logger.isDebugEnabled())
+ if ((this.currentUserCount != 0) && logger.isDebugEnabled())
{
logger.debug("destroying while users are logged in");
}
@@ -491,120 +522,131 @@
try
{
Thread.sleep(2);
- }
- catch (InterruptedException ie)
+ } catch (InterruptedException ie)
{
}
}
long end = System.currentTimeMillis();
// new we're done
-
+
}
- /**
+ /**
* @see org.apache.jetspeed.statistics.PortalStatistics#getNumberOfCurrentUsers()
*/
public int getNumberOfCurrentUsers()
{
- return currentUsers;
+ return currentUserCount;
}
- private Date getStartDateFromPeriod(String period,Date end)
+ private Date getStartDateFromPeriod(String period, Date end)
{
GregorianCalendar gcEnd = new GregorianCalendar();
gcEnd.setTime(end);
- if(period != null)
+ if (period != null)
{
- if(period.endsWith("m"))
+ if (period.endsWith("m"))
{
// months
- String p = period.substring(0,period.length()-1);
+ String p = period.substring(0, period.length() - 1);
int ret = Integer.parseInt(p);
- gcEnd.add(Calendar.MONTH,(ret * -1));
- }
- else if(period.endsWith("h"))
+ gcEnd.add(Calendar.MONTH, (ret * -1));
+ } else if (period.endsWith("h"))
{
// hours
- String p = period.substring(0,period.length()-1);
+ String p = period.substring(0, period.length() - 1);
int ret = Integer.parseInt(p);
- gcEnd.add(Calendar.HOUR,(ret * -1));
- }
- else if(period.equals("all"))
+ gcEnd.add(Calendar.HOUR, (ret * -1));
+ } else if (period.equals("all"))
{
gcEnd = new GregorianCalendar();
- gcEnd.set(1968,07,15);
- }
- else
+ gcEnd.set(1968, 07, 15);
+ } else
{
// minutes
int ret = Integer.parseInt(period);
- gcEnd.add(Calendar.MINUTE,(ret * -1));
+ gcEnd.add(Calendar.MINUTE, (ret * -1));
}
- }
- else
+ } else
{
gcEnd = new GregorianCalendar();
- gcEnd.set(1968,07,15);
-
+ gcEnd.set(1968, 07, 15);
+
}
return gcEnd.getTime();
}
-
+
/**
* @see org.apache.jetspeed.statistics.PortalStatistics#queryStatistics(org.apache.jetspeed.statistics.StatisticsQueryCriteria)
*/
- public AggregateStatistics queryStatistics(StatisticsQueryCriteria criteria) throws InvalidCriteriaException
+ public AggregateStatistics queryStatistics(StatisticsQueryCriteria criteria)
+ throws InvalidCriteriaException
{
AggregateStatistics as = new AggregateStatisticsImpl();
String query;
String query2;
-
+
String tableName;
String groupColumn;
-
+
Date end = new Date();
- Date start = getStartDateFromPeriod(criteria.getTimePeriod(),end);
-
-
+ Date start = getStartDateFromPeriod(criteria.getTimePeriod(), end);
+
String queryType = criteria.getQueryType();
if ("user".equals(queryType))
{
tableName = "USER_STATISTICS";
groupColumn = "USER_NAME";
- }
- else if ("portlet".equals(queryType))
+ } else if ("portlet".equals(queryType))
{
tableName = "PORTLET_STATISTICS";
groupColumn = "PORTLET";
- }
- else if ("page".equals(queryType))
+ } else if ("page".equals(queryType))
{
tableName = "PAGE_STATISTICS";
groupColumn = "PAGE";
- }
- else
+ } else
{
- throw new InvalidCriteriaException(" invalid queryType passed to queryStatistics");
+ throw new InvalidCriteriaException(
+ " invalid queryType passed to queryStatistics");
}
String orderColumn = "count";
-
- //String orderColumn = "MAX(ELAPSSE_TIME)";
- //String orderColumn = "AVG(ELAPSED_TIME)";
- //String orderColumn = "MIN(ELAPSED_TIME)";
-
+
String ascDesc = "DESC";
-
- query= "select count(*) as count , STDDEV(ELAPSED_TIME),MIN(ELAPSED_TIME),AVG(ELAPSED_TIME),MAX(ELAPSED_TIME) from "+tableName+" where time_stamp > ? and time_stamp < ?";
- query2= "select count(*) as count ,"+groupColumn+", MIN(ELAPSED_TIME) as min ,AVG(ELAPSED_TIME) as avg ,MAX(ELAPSED_TIME) as max "
- +"from "+tableName+" where time_stamp > ? and time_stamp < ? group by "+groupColumn+" order by "+orderColumn+" "+ascDesc+" limit 5";
+
+ if (!"user".equals(queryType))
+ {
+ query = "select count(*) as count , STDDEV(ELAPSED_TIME),MIN(ELAPSED_TIME),AVG(ELAPSED_TIME),MAX(ELAPSED_TIME) from "
+ + tableName + " where time_stamp > ? and time_stamp < ?";
+ query2 = "select count(*) as count ,"
+ + groupColumn
+ + ", MIN(ELAPSED_TIME) as min ,AVG(ELAPSED_TIME) as avg ,MAX(ELAPSED_TIME) as max "
+ + "from " + tableName
+ + " where time_stamp > ? and time_stamp < ? group by "
+ + groupColumn + " order by " + orderColumn + " " + ascDesc
+ + " limit 5";
+ } else
+ {
+ query = "select count(*) as count , STDDEV(ELAPSED_TIME),MIN(ELAPSED_TIME),AVG(ELAPSED_TIME),MAX(ELAPSED_TIME) from "
+ + tableName
+ + " where time_stamp > ? and time_stamp < ? and status = 2";
+ query2 = "select count(*) as count ,"
+ + groupColumn
+ + ", MIN(ELAPSED_TIME) as min ,AVG(ELAPSED_TIME) as avg ,MAX(ELAPSED_TIME) as max "
+ + "from "
+ + tableName
+ + " where time_stamp > ? and time_stamp < ? and status = 2 group by "
+ + groupColumn + " order by " + orderColumn + " " + ascDesc
+ + " limit 5";
+ }
try
{
Connection con = ds.getConnection();
PreparedStatement pstmt = con.prepareStatement(query);
- pstmt.setTimestamp(1,new Timestamp(start.getTime()));
- pstmt.setTimestamp(2,new Timestamp(end.getTime()));
+ pstmt.setTimestamp(1, new Timestamp(start.getTime()));
+ pstmt.setTimestamp(2, new Timestamp(end.getTime()));
ResultSet rs = pstmt.executeQuery();
- if(rs.next())
+ if (rs.next())
{
as.setHitCount(rs.getInt("count"));
as.setStdDevProcessingTime(rs.getFloat("STDDEV(ELAPSED_TIME)"));
@@ -613,31 +655,52 @@
as.setMaxProcessingTime(rs.getFloat("MAX(ELAPSED_TIME)"));
}
PreparedStatement pstmt2 = con.prepareStatement(query2);
- pstmt2.setTimestamp(1,new Timestamp(start.getTime()));
- pstmt2.setTimestamp(2,new Timestamp(end.getTime()));
+ pstmt2.setTimestamp(1, new Timestamp(start.getTime()));
+ pstmt2.setTimestamp(2, new Timestamp(end.getTime()));
ResultSet rs2 = pstmt2.executeQuery();
- while(rs2.next())
+
+ while (rs2.next())
{
Map row = new HashMap();
- row.put("count",""+rs2.getInt("count"));
- row.put("groupColumn",rs2.getString(groupColumn));
- row.put("min",""+rs2.getFloat("min"));
- row.put("avg",""+rs2.getFloat("avg"));
- row.put("max",""+rs2.getFloat("max"));
+ row.put("count", "" + rs2.getInt("count"));
+ row.put("groupColumn", rs2.getString(groupColumn));
+ row.put("min", "" + rs2.getFloat("min"));
+ row.put("avg", "" + rs2.getFloat("avg"));
+ row.put("max", "" + rs2.getFloat("max"));
as.addRow(row);
- //as.setHitCount(rs.getInt("count"));
- //as.setStdDevProcessingTime(rs.getFloat("STDDEV(ELAPSED_TIME)"));
- //as.setMinProcessingTime(rs.getFloat("MIN(ELAPSED_TIME)"));
- //as.setAvgProcessingTime(rs.getFloat("AVG(ELAPSED_TIME)"));
- //as.setMaxProcessingTime(rs.getFloat("MAX(ELAPSED_TIME)"));
- }
-
- }
- catch (SQLException e)
+ }
+
+ } catch (SQLException e)
{
throw new InvalidCriteriaException(e.toString());
}
-
+
return as;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.statistics.PortalStatistics#getListOfLoggedInUsers()
+ */
+ public List getListOfLoggedInUsers()
+ {
+ List list = new ArrayList();
+
+ synchronized (currentUsers)
+ {
+ list.addAll(currentUsers.values());
+ }
+ return list;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.statistics.PortalStatistics#getNumberOfLoggedInUsers()
+ */
+ public int getNumberOfLoggedInUsers()
+ {
+ return this.currentUserCount;
}
}
Modified: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/StatisticsQueryCriteriaImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/StatisticsQueryCriteriaImpl.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/StatisticsQueryCriteriaImpl.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/StatisticsQueryCriteriaImpl.java Mon Nov 7 14:03:29 2005
@@ -1,16 +1,16 @@
-
package org.apache.jetspeed.statistics.impl;
import org.apache.jetspeed.statistics.StatisticsQueryCriteria;
-
public class StatisticsQueryCriteriaImpl implements StatisticsQueryCriteria
{
String user;
+
String timePeriod;
+
String queryType;
-
+
/**
* @return Returns the ipAddress.
*/
@@ -18,13 +18,16 @@
{
return timePeriod;
}
+
/**
- * @param ipAddress The ipAddress to set.
+ * @param ipAddress
+ * The ipAddress to set.
*/
public void setTimePeriod(String ipAddress)
{
this.timePeriod = ipAddress;
}
+
/**
* @return Returns the user.
*/
@@ -32,24 +35,30 @@
{
return user;
}
+
/**
- * @param user The user to set.
+ * @param user
+ * The user to set.
*/
public void setUser(String user)
{
this.user = user;
}
-
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.StatisticsQueryCriteria#getQueryType()
*/
public String getQueryType()
{
-
+
return queryType;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.statistics.StatisticsQueryCriteria#setQueryType(java.lang.String)
*/
public void setQueryType(String queryType)
Added: portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/UserStatsImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/UserStatsImpl.java?rev=331613&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/UserStatsImpl.java (added)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/UserStatsImpl.java Mon Nov 7 14:03:29 2005
@@ -0,0 +1,75 @@
+/* Copyright 2005 Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.statistics.impl;
+
+import org.apache.jetspeed.statistics.UserStats;
+
+/**
+ * UserStatsImpl
+ *
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @version $Id: $
+ */
+public class UserStatsImpl implements UserStats
+{
+
+ private String username;
+
+ private int numberOfSessions;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.statistics.UserStats#getNumberOfSessions()
+ */
+ public int getNumberOfSessions()
+ {
+ return numberOfSessions;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.statistics.UserStats#getUsername()
+ */
+ public String getUsername()
+ {
+
+ return username;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.statistics.UserStats#setNumberOfSession(int)
+ */
+ public void setNumberOfSession(int number)
+ {
+ numberOfSessions = number;
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.statistics.UserStats#setUsername(java.lang.String)
+ */
+ public void setUsername(String username)
+ {
+ this.username = username;
+
+ }
+}
Modified: portals/jetspeed-2/trunk/components/statistics/src/test/org/apache/jetspeed/statistics/TestStatistics.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/statistics/src/test/org/apache/jetspeed/statistics/TestStatistics.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/test/org/apache/jetspeed/statistics/TestStatistics.java (original)
+++ portals/jetspeed-2/trunk/components/statistics/src/test/org/apache/jetspeed/statistics/TestStatistics.java Mon Nov 7 14:03:29 2005
@@ -19,6 +19,7 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.List;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -37,14 +38,15 @@
/**
* TestStatistics
*
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
* @version $Id: $
*/
public class TestStatistics extends AbstractSpringTestCase
{
+
private PortalStatistics statistics = null;
-
+
/*
* (non-Javadoc)
*
@@ -65,21 +67,20 @@
public static void main(String args[])
{
junit.awtui.TestRunner.main(new String[]
- { TestStatistics.class.getName() });
-
-
+ { TestStatistics.class.getName()});
+
}
-
protected void setUp() throws Exception
{
super.setUp();
this.statistics = (PortalStatistics) ctx.getBean("PortalStatistics");
assertNotNull("statistics not found ", statistics);
}
-
- public void clearDBs() {
-
+
+ public void clearDBs()
+ {
+
try
{
Connection con = statistics.getDataSource().getConnection();
@@ -100,18 +101,19 @@
fail("problem with database connection:" + e.toString());
}
}
-
- public int count(String query) {
+
+ public int count(String query)
+ {
int val = -1;
try
{
Connection con = statistics.getDataSource().getConnection();
- PreparedStatement psmt = con
- .prepareStatement(query);
+ PreparedStatement psmt = con.prepareStatement(query);
ResultSet rs = psmt.executeQuery();
-
- if(rs.next()) {
+
+ if (rs.next())
+ {
val = rs.getInt(1);
}
psmt.close();
@@ -122,33 +124,36 @@
}
return val;
}
- public int countPages() {
+
+ public int countPages()
+ {
return count("SELECT count(*) from PAGE_STATISTICS");
}
-
- public int countPortlets() {
+
+ public int countPortlets()
+ {
return count("SELECT count(*) from PORTLET_STATISTICS");
}
- public int countUsers() {
+
+ public int countUsers()
+ {
return count("SELECT count(*) from USER_STATISTICS");
}
-
+
public static Test suite()
{
// All methods starting with "test" will be executed in the test suite.
return new TestSuite(TestStatistics.class);
}
-
-
- public void testPortletStatistics()
- throws Exception
+
+ public void testPortletStatistics() throws Exception
{
System.out.println("testing one of each ");
statistics.forceFlush();
clearDBs();
-
+
assertNotNull("statistics service is null", statistics);
-
+
RequestContext request = initRequestContext();
PortletApplicationDefinitionImpl app = new PortletApplicationDefinitionImpl();
app.setName("MyApp");
@@ -157,32 +162,46 @@
portlet.setName("TestPortlet");
portlet.setPortletApplicationDefinition(app);
long elapsedTime = 123;
- statistics.logPortletAccess(request, portlet.getUniqueName(), "401",elapsedTime);
- statistics.logPageAccess(request, "401",elapsedTime);
- statistics.logUserLogin(request,elapsedTime);
- statistics.logUserLogout(request,elapsedTime);
-
+ statistics.logPortletAccess(request, portlet.getUniqueName(), "401",
+ elapsedTime);
+ statistics.logPageAccess(request, "401", elapsedTime);
+ statistics.logUserLogin(request, elapsedTime);
+
+ assertEquals("number of users incorrect", 1, statistics
+ .getNumberOfCurrentUsers());
+
+ List l = statistics.getListOfLoggedInUsers();
+ assertNotNull("list returned is null", l);
+ assertEquals("wrong number of users in list", 1, l.size());
+
+ statistics.logUserLogout("123.234.145.156", "SuperFakeyUser",
+ elapsedTime);
+
statistics.forceFlush();
+
+ assertEquals("number of users incorrect", statistics
+ .getNumberOfCurrentUsers(), 0);
+
int x = 1;
int pages = this.countPages();
int users = this.countUsers();
int portlets = this.countPortlets();
- assertEquals("User Log count incorrect ",2*x,users);
- assertEquals("Portlet Log count incorrect ",x,portlets);
- assertEquals("Page Log count incorrect ",x,pages);
-
- }
-
- public void testLotsOfPortletStatistics()
- throws Exception
+ assertEquals("User Log count incorrect ", 2 * x, users);
+ assertEquals("Portlet Log count incorrect ", x, portlets);
+ assertEquals("Page Log count incorrect ", x, pages);
+
+ }
+
+ public void testLotsOfPortletStatistics() throws Exception
{
System.out.println("testing Multiple portlet stats");
statistics.forceFlush();
clearDBs();
-
+
int x = 37;
assertNotNull("statistics service is null", statistics);
- for(int i = 0; i < x ; i++) {
+ for (int i = 0; i < x; i++)
+ {
RequestContext request = initRequestContext();
PortletApplicationDefinitionImpl app = new PortletApplicationDefinitionImpl();
app.setName("MyApp");
@@ -190,51 +209,64 @@
portlet.setPortletApplicationDefinition(app);
portlet.setName("TestPortlet");
portlet.setPortletApplicationDefinition(app);
- long elapsedTime = 123+i;
+ long elapsedTime = 123 + i;
//System.out.println("logging something, number "+i);
- statistics.logPortletAccess(request, portlet.getUniqueName(), "401",elapsedTime);
- statistics.logPageAccess(request, "401",elapsedTime);
- statistics.logUserLogin(request,elapsedTime);
- statistics.logUserLogout(request,elapsedTime);
- try { Thread.sleep(200);} catch(InterruptedException ie) {}
+ statistics.logPortletAccess(request, portlet.getUniqueName(),
+ "401", elapsedTime);
+ statistics.logPageAccess(request, "401", elapsedTime);
+ statistics.logUserLogin(request, elapsedTime);
+ assertEquals("number of users incorrect", 1, statistics
+ .getNumberOfCurrentUsers());
+ List l = statistics.getListOfLoggedInUsers();
+ assertNotNull("list returned is null", l);
+ assertEquals("wrong number of users in list", 1, l.size());
+
+ statistics.logUserLogout("123.234.145.156", "SuperFakeyUser",
+ elapsedTime);
+ try
+ {
+ Thread.sleep(200);
+ } catch (InterruptedException ie)
+ {
+ }
}
-
+
statistics.forceFlush();
+
+ assertEquals("number of users incorrect", statistics
+ .getNumberOfCurrentUsers(), 0);
+
int pages = this.countPages();
int users = this.countUsers();
int portlets = this.countPortlets();
- assertEquals("User Log count incorrect ",2*x,users);
- assertEquals("Portlet Log count incorrect ",x,portlets);
- assertEquals("Page Log count incorrect ",x,pages);
-
-
+ assertEquals("User Log count incorrect ", 2 * x, users);
+ assertEquals("Portlet Log count incorrect ", x, portlets);
+ assertEquals("Page Log count incorrect ", x, pages);
+
}
-
- public void testQuerySystem()
- throws Exception
+ public void testQuerySystem() throws Exception
{
System.out.println("testing Query System");
StatisticsQueryCriteria sqc = new StatisticsQueryCriteriaImpl();
sqc.setQueryType("user");
- AggregateStatistics as = statistics.queryStatistics( sqc );
- System.out.println("user = "+as);
+ AggregateStatistics as = statistics.queryStatistics(sqc);
+ System.out.println("user = " + as);
sqc.setQueryType("portlet");
- as = statistics.queryStatistics( sqc );
- System.out.println("user = "+as);
+ as = statistics.queryStatistics(sqc);
+ System.out.println("user = " + as);
sqc.setQueryType("page");
- as = statistics.queryStatistics( sqc );
- System.out.println("user = "+as);
-
+ as = statistics.queryStatistics(sqc);
+ System.out.println("user = " + as);
+
}
-
+
private RequestContext initRequestContext()
{
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
MockHttpSession session = new MockHttpSession();
-
request.setRemoteAddr("192.168.2.3");
request.setSession(session);
request.setServerName("www.sporteportal.com");
@@ -243,19 +275,21 @@
request.setServletPath("/portal");
request.setPathInfo("/news/default-page.psml");
request.setRequestURI("/jetspeed/portal/news/default-page.psml");
- request.setMethod("GET");
+ request.setMethod("GET");
RequestContext rc = new MockRequestContext(request, response);
return rc;
}
-
+
protected String[] getConfigurations()
{
- return new String[]{"statistics.xml"};
+ return new String[]
+ { "statistics.xml"};
}
-
+
protected String[] getBootConfigurations()
{
- return new String[]{"test-repository-datasource-spring.xml"};
+ return new String[]
+ { "test-repository-datasource-spring.xml"};
}
}
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/AggregateStatistics.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/AggregateStatistics.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/AggregateStatistics.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/AggregateStatistics.java Mon Nov 7 14:03:29 2005
@@ -1,41 +1,57 @@
/* Copyright 2005 Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.jetspeed.statistics;
import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
/**
* AggregateStatistics
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: $
*/
public interface AggregateStatistics extends Serializable
{
+
public void addRow(Map row);
+
public int getHitCount();
+
public float getAvgProcessingTime();
+
public float getMinProcessingTime();
+
public float getMaxProcessingTime();
+
public float getStdDevProcessingTime();
+
public void setHitCount(int hitCount);
+
public void setAvgProcessingTime(float time);
+
public void setMinProcessingTime(float time);
+
public void setMaxProcessingTime(float time);
+
public void setStdDevProcessingTime(float time);
-
+
+ public List getStatlist();
+
+ public void setStatlist(List statlist);
}
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/InvalidCriteriaException.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/InvalidCriteriaException.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/InvalidCriteriaException.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/InvalidCriteriaException.java Mon Nov 7 14:03:29 2005
@@ -1,31 +1,31 @@
/* Copyright 2005 Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.jetspeed.statistics;
-
-
/**
* InvalidCriteriaException
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: $
*/
public class InvalidCriteriaException extends Exception
{
- public InvalidCriteriaException(String mesg) {
+
+ public InvalidCriteriaException(String mesg)
+ {
super(mesg);
}
}
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/PortalStatistics.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/PortalStatistics.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/PortalStatistics.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/PortalStatistics.java Mon Nov 7 14:03:29 2005
@@ -1,129 +1,153 @@
/* Copyright 2005 Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.jetspeed.statistics;
+import java.util.List;
+
import javax.sql.DataSource;
import org.apache.jetspeed.request.RequestContext;
/**
- * The PortletStatistics interface provides an API for logging portlet statistics.
- * Each log entry is formatted in the <A HREF="http://httpd.apache.org/docs/logs.html">
- * Apache Common Log Format (CLF)</A>. Each CLF log entry has the following form:
+ * The PortletStatistics interface provides an API for logging portlet
+ * statistics. Each log entry is formatted in the <A
+ * HREF="http://httpd.apache.org/docs/logs.html"> Apache Common Log Format (CLF)
+ * </A>. Each CLF log entry has the following form:
* <P>
* "%h %l %u %t \"%r\" %>s %b"
* <P>
* where:
* <UL>
- * <LI><B>%h</B> - remote host</LI>
- * <LI><B>%l</B> - remote log name</LI>
- * <LI><B>%u</B> - remote user</LI>
- * <LI><B>%t</B> - time in common log time format</LI>
- * <LI><B>%r</B> - first line of HTTP request</LI>
- * <LI><B>%s</B> - HTTP status code</LI>
- * <LI><B>%b</B> - number of bytes sent ("-" if no bytes sent).
+ * <LI><B>%h </B>- remote host</LI>
+ * <LI><B>%l </B>- remote log name</LI>
+ * <LI><B>%u </B>- remote user</LI>
+ * <LI><B>%t </B>- time in common log time format</LI>
+ * <LI><B>%r </B>- first line of HTTP request</LI>
+ * <LI><B>%s </B>- HTTP status code</LI>
+ * <LI><B>%b </B>- number of bytes sent ("-" if no bytes sent).
* </UL>
* <P>
* Here's an example of a CLF log entry:
* <P>
+ *
* <PRE>
- * 192.168.2.3 - johndoe [25/Oct/2005:11:44:40 PDT] "GET /jetspeed/DatabaseBrowserTest HTTP/1.1" 200 -
+ *
+ * 192.168.2.3 - johndoe [25/Oct/2005:11:44:40 PDT] "GET
+ * /jetspeed/DatabaseBrowserTest HTTP/1.1" 200 -
+ *
* </PRE>
+ *
* <P>
* The PortletStatistics interface overloads the %r field of the CLF format,
* depending on the type of information being logged:
* <P>
+ *
* <PRE>
- * LOG TYPE FORMAT OF %r FIELD
- * -------------- ----------------------------
- * Portlet access "PORTLET <page-path> <portlet-name>"
- * Page access "PAGE <page-path>"
- * User logout "LOGOUT"
+ *
+ * LOG TYPE FORMAT OF %r FIELD -------------- ----------------------------
+ * Portlet access "PORTLET <page-path><portlet-name>" Page access "PAGE
+ * <page-path>" User logout "LOGOUT"
+ *
* </PRE>
*
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
- * @author <a href="mailto:morciuch@apache.org">Mark Orciuch</a>
- * @author <a href="mailto:rklein@bluesunrise.com">Richard Klein</a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @author <a href="mailto:morciuch@apache.org">Mark Orciuch </a>
+ * @author <a href="mailto:rklein@bluesunrise.com">Richard Klein </a>
* @version $Id: $
*/
public interface PortalStatistics
{
+
public static final String HTTP_OK = "200";
+
public static final String HTTP_UNAUTHORIZED = "401";
+
public static final String HTTP_NOT_FOUND = "404";
+
public static final String HTTP_INTERNAL_ERROR = "500";
-
+
/**
* Logs an access to a portlet.
*
- * @param request current request info object
- * @param portlet portlet being logged
- * @param statusCode HTTP status code.
- * @param msElapsedTime elapsed time the portlet took to render
- */
- public void logPortletAccess(RequestContext request,
- String portlet,
- String statusCode,
- long msElapsedTime);
-
+ * @param request
+ * current request info object
+ * @param portlet
+ * portlet being logged
+ * @param statusCode
+ * HTTP status code.
+ * @param msElapsedTime
+ * elapsed time the portlet took to render
+ */
+ public void logPortletAccess(RequestContext request, String portlet,
+ String statusCode, long msElapsedTime);
+
/**
* Logs an access to a page.
*
- * @param request current request info object
- * @param statusCode HTTP status code
- * @param msElapsedTime elapsed time the page took to render
+ * @param request
+ * current request info object
+ * @param statusCode
+ * HTTP status code
+ * @param msElapsedTime
+ * elapsed time the page took to render
*/
- public void logPageAccess(RequestContext request,
- String statusCode,
+ public void logPageAccess(RequestContext request, String statusCode,
long msElapsedTime);
-
-
+
/**
- * Logs a user logout event. The %s (HTTP status code)
- * field of the log entry will be set to 200 (OK).
+ * Logs a user logout event. The %s (HTTP status code) field of the log
+ * entry will be set to 200 (OK).
*
- * @param request current request info object
- * @param msElapsedTime elapsed time that the user was logged in
+ * @param request
+ * current request info object
+ * @param msElapsedTime
+ * elapsed time that the user was logged in
*/
- public void logUserLogout(RequestContext request,
- long msElapsedTime);
+ public void logUserLogout(String ipAddress, String userName,
+ long msSessionLength);
+
/**
- * Logs a user logout event. The %s (HTTP status code)
- * field of the log entry will be set to 200 (OK).
+ * Logs a user logout event. The %s (HTTP status code) field of the log
+ * entry will be set to 200 (OK).
*
- * @param request current request info object
- * @param msElapsedLoginTime time it took the user to login
+ * @param request
+ * current request info object
+ * @param msElapsedLoginTime
+ * time it took the user to login
*/
public void logUserLogin(RequestContext request, long msElapsedLoginTime);
-
+
/**
- * @return returns the current number of logged in users
+ * @return returns the current number of logged in users
*/
public int getNumberOfCurrentUsers();
-
+
/**
* force the database loggers to flush out
*/
public void forceFlush();
-
+
/**
- * @return DataSource in use by the logger
- * useful for writing decent tests
+ * @return DataSource in use by the logger useful for writing decent tests
*/
public DataSource getDataSource();
- public AggregateStatistics queryStatistics(StatisticsQueryCriteria criteria) throws InvalidCriteriaException;
-
+ public AggregateStatistics queryStatistics(StatisticsQueryCriteria criteria)
+ throws InvalidCriteriaException;
+
+ public int getNumberOfLoggedInUsers();
+
+ public List getListOfLoggedInUsers();
}
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/StatisticsQueryCriteria.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/StatisticsQueryCriteria.java?rev=331613&r1=331612&r2=331613&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/StatisticsQueryCriteria.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/StatisticsQueryCriteria.java Mon Nov 7 14:03:29 2005
@@ -1,36 +1,40 @@
/* Copyright 2005 Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.jetspeed.statistics;
import java.io.Serializable;
-
/**
* StatisticsQueryCriteria
*
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id: $
*/
public interface StatisticsQueryCriteria extends Serializable
{
public String getTimePeriod();
- public void setTimePeriod(String ipAddress);
+
+ public void setTimePeriod(String timePeriod);
+
public String getUser();
+
public void setUser(String user);
+
public void setQueryType(String queryType);
+
public String getQueryType();
}
Added: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/UserStats.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/UserStats.java?rev=331613&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/UserStats.java (added)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/statistics/UserStats.java Mon Nov 7 14:03:29 2005
@@ -0,0 +1,36 @@
+/* Copyright 2005 Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.statistics;
+
+import java.io.Serializable;
+
+/**
+ * UserStats
+ *
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @version $Id: $
+ */
+public interface UserStats extends Serializable
+{
+
+ public String getUsername();
+
+ public int getNumberOfSessions();
+
+ public void setNumberOfSession(int number);
+
+ public void setUsername(String username);
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org