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/04 05:13:02 UTC

svn commit: r330702 - in /portals/jetspeed-2/trunk/components/statistics/src: java/org/apache/jetspeed/statistics/impl/ test/org/apache/jetspeed/statistics/

Author: taylor
Date: Thu Nov  3 20:12:56 2005
New Revision: 330702

URL: http://svn.apache.org/viewcvs?rev=330702&view=rev
Log:
http://issues.apache.org/jira/browse/JS2-362
statistics portlet query support

Added:
    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/StatisticsQueryCriteriaImpl.java
Modified:
    portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java
    portals/jetspeed-2/trunk/components/statistics/src/test/org/apache/jetspeed/statistics/TestStatistics.java

Added: 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=330702&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/AggregateStatisticsImpl.java (added)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/AggregateStatisticsImpl.java Thu Nov  3 20:12:56 2005
@@ -0,0 +1,121 @@
+/* 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 javax.sql.DataSource;
+
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.statistics.AggregateStatistics;
+import org.apache.jetspeed.statistics.StatisticsQueryCriteria;
+
+
+
+/**
+ * AggregateStatisticsImpl
+ * 
+ * @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;
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#getAvgProcessingTime()
+     */
+    public float getAvgProcessingTime()
+    {
+        return this.avgProcessingTime;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#getHitCount()
+     */
+    public int getHitCount()
+    {
+         return this.hitcount;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#getMaxProcessingTime()
+     */
+    public float getMaxProcessingTime()
+    {
+        return this.maxProcessingTime;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#getMinProcessingTime()
+     */
+    public float getMinProcessingTime()
+    {
+        return this.minProcessingTime;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#getStdDevProcessingTime()
+     */
+    public float getStdDevProcessingTime()
+    {
+        return this.stddevProcessingTime;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#setAvgProcessingTime(float)
+     */
+    public void setAvgProcessingTime(float time)
+    {
+        this.avgProcessingTime = time;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#setHitCount(int)
+     */
+    public void setHitCount(int hitCount)
+    {
+        this.hitcount = hitCount;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#setMaxProcessingTime(float)
+     */
+    public void setMaxProcessingTime(float time)
+    {
+        this.maxProcessingTime = time;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.AggregateStatistics#setMinProcessingTime(float)
+     */
+    public void setMinProcessingTime(float time)
+    {
+        this.minProcessingTime = time;
+    }
+    /* (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";
+        return s;
+    }
+}

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=330702&r1=330701&r2=330702&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 Thu Nov  3 20:12:56 2005
@@ -17,6 +17,10 @@
 package org.apache.jetspeed.statistics.impl;
 
 import java.security.Principal;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
@@ -32,7 +36,10 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.jetspeed.components.rdbms.ojb.ConnectionRepositoryEntry;
 import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.statistics.AggregateStatistics;
+import org.apache.jetspeed.statistics.InvalidCriteriaException;
 import org.apache.jetspeed.statistics.PortalStatistics;
+import org.apache.jetspeed.statistics.StatisticsQueryCriteria;
 import org.springframework.orm.ojb.support.PersistenceBrokerDaoSupport;
 
 /**
@@ -493,4 +500,55 @@
     }
 
     
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.PortalStatistics#queryStatistics(org.apache.jetspeed.statistics.StatisticsQueryCriteria)
+     */
+    public AggregateStatistics queryStatistics(StatisticsQueryCriteria criteria) throws InvalidCriteriaException
+    {
+        AggregateStatistics as = new AggregateStatisticsImpl();
+        String query;
+        query= "select count(*) as count ,STDDEV(ELAPSED_TIME),MIN(ELAPSED_TIME),AVG(ELAPSED_TIME),MAX(ELAPSED_TIME) from ? ";
+        //String query = "select count(*) as count ,STDDEV(ELAPSED_TIME),MIN(ELAPSED_TIME),AVG(ELAPSED_TIME),MAX(ELAPSED_TIME),? from ? group by ?";
+        String tableName;
+        String groupColumn;
+        
+        String queryType = criteria.getQueryType();
+        if ("user".equals(queryType))
+        {
+            tableName = "USER_STATISTICS";
+            groupColumn = "USER_NAME";
+        } else if ("portlet".equals(queryType))
+        {
+            tableName = "PORTLET_STATISTICS";
+            groupColumn = "PORTLET";
+        } else if ("page".equals(queryType))
+        {
+            tableName = "PAGE_STATISTICS";
+            groupColumn = "PAGE";
+        } else {
+            throw new InvalidCriteriaException(" invalid queryType passed to queryStatistics");
+        }
+        query= "select count(*) as count ,STDDEV(ELAPSED_TIME),MIN(ELAPSED_TIME),AVG(ELAPSED_TIME),MAX(ELAPSED_TIME) from "+tableName;
+        
+        try
+        {
+            Connection con = ds.getConnection();
+            PreparedStatement pstmt = con.prepareStatement(query);
+            //pstmt.setString(1,groupColumn);
+            //pstmt.setString(2,groupColumn);
+            ResultSet rs = pstmt.executeQuery();
+            while(rs.next()) {
+                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)
+        {
+            throw new InvalidCriteriaException(e.toString());
+        }
+        
+        return as;
+    }
 }

Added: 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=330702&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/StatisticsQueryCriteriaImpl.java (added)
+++ portals/jetspeed-2/trunk/components/statistics/src/java/org/apache/jetspeed/statistics/impl/StatisticsQueryCriteriaImpl.java Thu Nov  3 20:12:56 2005
@@ -0,0 +1,59 @@
+
+package org.apache.jetspeed.statistics.impl;
+
+import org.apache.jetspeed.statistics.StatisticsQueryCriteria;
+
+
+public class StatisticsQueryCriteriaImpl implements StatisticsQueryCriteria
+{
+
+    String user;
+    String ipAddress;
+    String queryType;
+    
+    /**
+     * @return Returns the ipAddress.
+     */
+    public String getIpAddress()
+    {
+        return ipAddress;
+    }
+    /**
+     * @param ipAddress The ipAddress to set.
+     */
+    public void setIpAddress(String ipAddress)
+    {
+        this.ipAddress = ipAddress;
+    }
+    /**
+     * @return Returns the user.
+     */
+    public String getUser()
+    {
+        return user;
+    }
+    /**
+     * @param user The user to set.
+     */
+    public void setUser(String user)
+    {
+        this.user = user;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.StatisticsQueryCriteria#getQueryType()
+     */
+    public String getQueryType()
+    {
+        
+        return queryType;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.statistics.StatisticsQueryCriteria#setQueryType(java.lang.String)
+     */
+    public void setQueryType(String queryType)
+    {
+        this.queryType = queryType;
+    }
+}

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=330702&r1=330701&r2=330702&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 Thu Nov  3 20:12:56 2005
@@ -28,6 +28,7 @@
 import org.apache.jetspeed.om.portlet.impl.PortletApplicationDefinitionImpl;
 import org.apache.jetspeed.om.portlet.impl.PortletDefinitionImpl;
 import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.statistics.impl.StatisticsQueryCriteriaImpl;
 
 import com.mockrunner.mock.web.MockHttpServletRequest;
 import com.mockrunner.mock.web.MockHttpServletResponse;
@@ -138,9 +139,11 @@
         return new TestSuite(TestStatistics.class);
     }
     
+    
     public void testPortletStatistics() 
     throws Exception
     {
+        System.out.println("testing one of each ");
         statistics.forceFlush();
         clearDBs();
         
@@ -173,6 +176,7 @@
     public void testLotsOfPortletStatistics() 
     throws Exception
     {
+        System.out.println("testing Multiple portlet stats");
         statistics.forceFlush();
         clearDBs();
         
@@ -206,6 +210,24 @@
         
     }
 
+    
+    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);
+        sqc.setQueryType("portlet");
+        as = statistics.queryStatistics( sqc );
+        System.out.println("user = "+as);
+        sqc.setQueryType("page");
+        as = statistics.queryStatistics( sqc );
+        System.out.println("user = "+as);
+        
+    }
+    
     private RequestContext initRequestContext()
     {
         MockHttpServletRequest request = new MockHttpServletRequest();



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org