You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2006/05/30 15:17:16 UTC

svn commit: r410272 - in /incubator/roller/branches/roller_3.0: src/org/apache/roller/business/hibernate/ src/org/apache/roller/model/ src/org/apache/roller/pojos/ tests/org/apache/roller/business/ web/WEB-INF/classes/

Author: snoopdave
Date: Tue May 30 06:17:15 2006
New Revision: 410272

URL: http://svn.apache.org/viewvc?rev=410272&view=rev
Log:
New Atlas front page queries

Added:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/StatCount.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogStatsTest.java
Modified:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernatePlanetManagerImpl.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateRefererManagerImpl.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/model/UserManager.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/PermissionTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogTest.java
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/ApplicationResources.properties

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernatePlanetManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernatePlanetManagerImpl.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernatePlanetManagerImpl.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernatePlanetManagerImpl.java Tue May 30 06:17:15 2006
@@ -273,10 +273,12 @@
     
      public List getFeedEntries(String feedUrl, int offset, int length)
         throws RollerException {
-        // TODO: ATLAS getFeedEntries         
+        // TODO: ATLAS getFeedEntries DONE       
         try {
             Session session = ((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(PlanetEntryData.class);
+            criteria.add(Expression.eq("subscription.feedUrl", feedUrl));
+            criteria.addOrder(Order.desc("pubTime"));
             criteria.setFirstResult(offset);
             criteria.setMaxResults(length);
             return criteria.list();

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateRefererManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateRefererManagerImpl.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateRefererManagerImpl.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateRefererManagerImpl.java Tue May 30 06:17:15 2006
@@ -265,6 +265,7 @@
        
     /**
      * Return most popular websites based on dayhits, in descending order.
+     * @returns List of WebsiteDisplayData objects
      */
     public List getDaysPopularWebsites(int sinceDays, int offset, int length) 
         throws RollerException {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateUserManagerImpl.java Tue May 30 06:17:15 2006
@@ -19,10 +19,12 @@
 package org.apache.roller.business.hibernate;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import org.apache.roller.pojos.StatCount;
 import org.hibernate.Criteria;
 import org.hibernate.HibernateException;
 import org.hibernate.Session;
@@ -52,6 +54,7 @@
 import org.apache.roller.pojos.WeblogCategoryData;
 import org.apache.roller.pojos.WeblogEntryData;
 import org.apache.roller.pojos.WebsiteData;
+import org.hibernate.Query;
 
 /**
  * Hibernate implementation of the UserManager.
@@ -766,30 +769,112 @@
     
     public void release() {}
     
-    public Map getUsernameLetterMap() {
-        // TODO: ATLAS getUsernameLetterMap
-        return null;
+    public Map getUsernameLetterMap() throws RollerException {
+        // TODO: ATLAS getUsernameLetterMap DONE TESTED
+        String msg = "Getting username letter map";
+        try {      
+            String lc = "abcdefghijklmnopqrstuvwxyz";
+            Map results = new HashMap();
+            Session session = 
+                ((HibernatePersistenceStrategy)strategy).getSession();
+            for (int i=0; i<26; i++) {
+                Query query = session.createQuery(
+                    "select count(user) from UserData user where lower(user.userName) like '"+lc.charAt(i)+"%'");
+                List row = query.list();
+                Integer count = (Integer)row.get(0);
+                if (count.intValue() > 0) {
+                    results.put(new String(new char[]{lc.charAt(i)}), count);
+                }
+            }
+            return results;
+        } catch (Throwable pe) {
+            log.error(msg, pe);
+            throw new RollerException(msg, pe);
+        }
     }
     
-    public List getUsersByLetter(char letter) {
-        // TODO: ATLAS getUsersByLetter
-        return null;
+    public List getUsersByLetter(char letter, int offset, int length) 
+        throws RollerException { 
+        // TODO: ATLAS getUsersByLetter DONE
+        try {
+            Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+            Criteria criteria = session.createCriteria(UserData.class);
+            criteria.add(Expression.like("userName", new String(new char[]{letter}) + "%", MatchMode.START));
+            criteria.setFirstResult(offset);
+            criteria.setMaxResults(length);
+            return criteria.list();
+        } catch (HibernateException e) {
+            throw new RollerException(e);
+        }
     }
     
-    public Map getWeblogHandleLetterMap() {
-        // TODO: ATLAS getWeblogHandleLetterMap
-        return null;
+    public Map getWeblogHandleLetterMap() throws RollerException {
+        // TODO: ATLAS getWeblogHandleLetterMap DONE
+        String msg = "Getting weblog letter map";
+        try {      
+            String lc = "abcdefghijklmnopqrstuvwxyz";
+            Map results = new HashMap();
+            Session session = 
+                ((HibernatePersistenceStrategy)strategy).getSession();
+            for (int i=0; i<26; i++) {
+                Query query = session.createQuery(
+                    "select count(website) from WebsiteData website where lower(website.handle) like '"+lc.charAt(i)+"%'");
+                List row = query.list();
+                Integer count = (Integer)row.get(0);
+                if (count.intValue() > 0) {
+                    results.put(new String(new char[]{lc.charAt(i)}), count);
+                }
+            }
+            return results;
+        } catch (Throwable pe) {
+            log.error(msg, pe);
+            throw new RollerException(msg, pe);
+        }
     }
     
-    public List getWeblogsByLetter(char letter) {
-        // TODO: ATLAS getWeblogsByLetter
-        return null;
+    public List getWeblogsByLetter(char letter, int offset, int length) 
+        throws RollerException {
+        // TODO: ATLAS getWeblogsByLetter DONE
+        try {
+            Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+            Criteria criteria = session.createCriteria(WebsiteData.class);
+            criteria.add(Expression.like("handle", new String(new char[]{letter}) + "%", MatchMode.START));
+            criteria.setFirstResult(offset);
+            criteria.setMaxResults(length);
+            return criteria.list();
+        } catch (HibernateException e) {
+            throw new RollerException(e);
+        }
     }
         
-    public List getMostCommentedWebsites(int sinceDays, int offset, int len)
-    throws RollerException {
-        // TODO: ATLAS getMostCommentedWebsites
-        return null;
+    public List getMostCommentedWebsites(int sinceDays, int offset, int length) 
+        throws RollerException {
+        // TODO: ATLAS getMostCommentedWebsites DONE TESTED
+        String msg = "Getting most commented websites";
+        try {      
+            Session session = 
+                ((HibernatePersistenceStrategy)strategy).getSession();            
+            Query query = session.createQuery(
+                "select count(distinct c), c.weblogEntry.website.id, c.weblogEntry.website.name, c.weblogEntry.website.description "
+               +"from CommentData c group by c.weblogEntry.website.id, c.weblogEntry.website.name, c.weblogEntry.website.description "
+               +"order by col_0_0_ desc");
+            query.setFirstResult(offset);
+            query.setMaxResults(length);
+            List results = new ArrayList();
+            for (Iterator iter = query.list().iterator(); iter.hasNext();) {
+                Object[] row = (Object[]) iter.next();
+                results.add(new StatCount(
+                    (String)row[1], 
+                    (String)row[2], 
+                    (String)row[3], 
+                    "statCount.weblogCommentCountType", 
+                    new Long((Integer)row[0]).longValue()));
+            }
+            return results;
+        } catch (Throwable pe) {
+            log.error(msg, pe);
+            throw new RollerException(msg, pe);
+        }
     }
      
     /** Doesn't seem to be any other way to get ignore case w/o QBE */

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java Tue May 30 06:17:15 2006
@@ -54,6 +54,7 @@
 import org.hibernate.Query;
 import org.hibernate.criterion.MatchMode;
 import org.apache.roller.model.WeblogManager;
+import org.apache.roller.pojos.StatCount;
 import org.apache.roller.util.DateUtil;
 import org.apache.roller.util.Utilities;
 
@@ -564,9 +565,7 @@
             throw new RollerException(e);
         }
     }
-    
-    
-    
+        
     public List getWeblogEntries(WeblogCategoryData cat, boolean subcats)
     throws RollerException {
         try {
@@ -607,9 +606,7 @@
             throw new RollerException(e);
         }
     }
-    
-    
-    
+        
     public String createAnchor(WeblogEntryData entry) throws RollerException {
         try {
             // Check for uniqueness of anchor
@@ -914,20 +911,17 @@
         // The category did not match and neither did any sub-categories
         return null;
     }
-    
-    
+        
     public CommentData getComment(String id) throws RollerException {
         return (CommentData) this.strategy.load(id, CommentData.class);
     }
-    
-    
+        
     public WeblogEntryData getWeblogEntry(String id)
     throws RollerException {
         return (WeblogEntryData) this.strategy.load(
                 id, WeblogEntryData.class);
     }
-    
-    
+        
     public List getWeblogEntries(
             WebsiteData website,
             Date    startDate,
@@ -1041,9 +1035,43 @@
     }
     
     public List getMostCommentedWeblogEntries(
-            WebsiteData website, int sinceDays, int offset, int len) 
+            WebsiteData website, int sinceDays, int offset, int length) 
             throws RollerException {
-        return null;
+        // TODO: ATLAS getMostCommentedWeblogEntries DONE
+        String msg = "Getting most commented weblog entres";
+        try {      
+            Session session = 
+                ((HibernatePersistenceStrategy)strategy).getSession();            
+            Query query = null;
+            if (website != null) {
+                query = session.createQuery(
+                    "select count(distinct c), c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title "
+                   +"from CommentData c where c.weblogEntry.website=:website group by c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title "
+                   +"order by col_0_0_ desc");
+                query.setParameter("website", website);
+            } else {
+                query = session.createQuery(
+                    "select count(distinct c), c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title "
+                   +"from CommentData c group by c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title "
+                   +"order by col_0_0_ desc");
+            }
+            query.setFirstResult(offset);
+            query.setMaxResults(length);
+            List results = new ArrayList();
+            for (Iterator iter = query.list().iterator(); iter.hasNext();) {
+                Object[] row = (Object[]) iter.next();
+                results.add(new StatCount(
+                    (String)row[1], 
+                    (String)row[2], 
+                    (String)row[3], 
+                    "statCount.weblogEntryCommentCountType", 
+                    new Long((Integer)row[0]).longValue()));
+            }
+            return results;
+        } catch (Throwable pe) {
+            log.error(msg, pe);
+            throw new RollerException(msg, pe);
+        }
     }
     
     public List getNextEntries(
@@ -1087,8 +1115,7 @@
                 Utilities.escapeHTML(contextUrl + "/page/" + site.getHandle());
         return url;
     }
-    
-    
+        
     public void release() {}
 
     /**
@@ -1115,6 +1142,4 @@
             log.error("EXCEPTION applying comment defaults",e);
         }
     }     
-
-
 }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/model/UserManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/model/UserManager.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/model/UserManager.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/model/UserManager.java Tue May 30 06:17:15 2006
@@ -101,20 +101,20 @@
      * containing integers reflecting the number of users whose
      * names start with each letter.
      */
-    public Map getUsernameLetterMap();
+    public Map getUsernameLetterMap() throws RollerException;
     
     /** Get collection of users whose names begin with specified letter */
-    public List getUsersByLetter(char letter);
+    public List getUsersByLetter(char letter, int offset, int length) throws RollerException;
     
     /**
      * Get map with 26 entries, one for each letter A-Z and
      * containing integers reflecting the number of weblogs whose
      * names start with each letter.
      */
-    public Map getWeblogHandleLetterMap();
+    public Map getWeblogHandleLetterMap() throws RollerException;
     
     /** Get collection of weblogs whose handles begin with specified letter */
-    public List getWeblogsByLetter(char letter);
+    public List getWeblogsByLetter(char letter, int offset, int length) throws RollerException;
     
     /**
      * Add new website, give creator admin permission, creates blogroll,
@@ -161,7 +161,7 @@
      * @returns List of WebsiteData objects.
      */
     public List getWebsites(
-            UserData user, Boolean enabled, Boolean active, int offset, int len) 
+            UserData user, Boolean enabled, Boolean active, int offset, int length) 
             throws RollerException;
     
     /**
@@ -171,7 +171,7 @@
      * @param len       Maximum number of results to return (for paging)
      * @returns List of WebsiteData objects.
      */
-    public List getMostCommentedWebsites(int sinceDays, int offset, int len) 
+    public List getMostCommentedWebsites(int sinceDays, int offset, int length) 
             throws RollerException;
     
     /**

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java Tue May 30 06:17:15 2006
@@ -169,7 +169,7 @@
      * @returns List of WeblogEntryData objects.
      */
     public List getMostCommentedWeblogEntries(
-            WebsiteData website, int sinceDays, int offset, int len)
+            WebsiteData website, int sinceDays, int offset, int length)
             throws RollerException;
     
     /**

Added: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/StatCount.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/StatCount.java?rev=410272&view=auto
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/StatCount.java (added)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/StatCount.java Tue May 30 06:17:15 2006
@@ -0,0 +1,72 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+*  contributor license agreements.  The ASF licenses this file to You
+* 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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.roller.pojos;
+
+/**
+ * Represents a statistical count.
+ */
+public class StatCount {    
+    /** Id of the subject of the statistic */
+    private String subjectId;
+    /** Short name of the subject of the statistic */
+    private String subjectNameShort;
+    /** Long name of the subject of the statistic */
+    private String subjectNameLong; 
+    /** I18N key that describes the type of statistic */
+    private String typeKey;      
+    /** The statistical count */    
+    private long count;
+    
+    public StatCount(String subjectId, String subjectNameShort, String subjectNameLong, String typeKey, long count) {
+        this.setSubjectId(subjectId);
+        this.setSubjectNameShort(subjectNameShort);
+        this.setSubjectNameLong(subjectNameLong);
+        this.setTypeKey(typeKey);
+        this.setCount(count);
+    }    
+    public String getTypeKey() {
+        return typeKey;
+    }
+    public void setTypeKey(String typeKey) {
+        this.typeKey = typeKey;
+    }
+    public long getCount() {
+        return count;
+    }
+    public void setCount(long count) {
+        this.count = count;
+    }
+    public String getSubjectId() {
+        return subjectId;
+    }
+    public void setSubjectId(String subjectId) {
+        this.subjectId = subjectId;
+    }
+    public String getSubjectNameShort() {
+        return subjectNameShort;
+    }
+    public void setSubjectNameShort(String subjectNameShort) {
+        this.subjectNameShort = subjectNameShort;
+    }
+    public String getSubjectNameLong() {
+        return subjectNameLong;
+    }
+    public void setSubjectNameLong(String subjectNameLong) {
+        this.subjectNameLong = subjectNameLong;
+    }
+}

Modified: incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/PermissionTest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/PermissionTest.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/PermissionTest.java (original)
+++ incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/PermissionTest.java Tue May 30 06:17:15 2006
@@ -225,7 +225,7 @@
         
         // assert that user is member of weblog
         assertFalse(mgr.getPermissions(testWeblog, user).isPending());
-        List weblogs = mgr.getWebsites(user, null, null, 0, -1);
+        List weblogs = mgr.getWebsites(user, null, null, 0, Integer.MAX_VALUE);
         assertEquals(1, weblogs.size());
         assertEquals(testWeblog.getId(), ((WebsiteData)weblogs.get(0)).getId());
         

Added: incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogStatsTest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogStatsTest.java?rev=410272&view=auto
==============================================================================
--- incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogStatsTest.java (added)
+++ incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogStatsTest.java Tue May 30 06:17:15 2006
@@ -0,0 +1,115 @@
+package org.apache.roller.business;
+
+import java.util.List;
+import java.util.Map;
+import junit.framework.TestCase;
+import org.apache.roller.TestUtils;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.model.UserManager;
+import org.apache.roller.model.WeblogManager;
+import org.apache.roller.pojos.CommentData;
+import org.apache.roller.pojos.StatCount;
+import org.apache.roller.pojos.UserData;
+import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WebsiteData;
+
+/**
+ *
+ */
+public class WeblogStatsTest extends TestCase {
+    
+    private UserData user1, user2;
+    
+    private WebsiteData website1;
+        private WeblogEntryData entry11;
+            private CommentData comment11;
+            private CommentData comment12;
+        private WeblogEntryData entry12;
+            private CommentData comment13;
+
+    private WebsiteData website2;
+        private WeblogEntryData entry21;
+            private CommentData comment21; 
+    
+    public WeblogStatsTest() {
+    }  
+    protected void setUp() throws Exception {
+        // create weblog with three entries and two comments per entry
+        user1 = TestUtils.setupUser("a_commentCountTestUser");
+        user2 = TestUtils.setupUser("b_commentCountTestUser");
+        
+        website1 = TestUtils.setupWeblog("a_testWebsite1", user1);
+        entry11 = TestUtils.setupWeblogEntry(
+                "anchor11", website1.getDefaultCategory(), website1, user1);
+        comment11 = TestUtils.setupComment("Comment11", entry11);
+        comment12 = TestUtils.setupComment("Comment12", entry11);
+        entry12 = TestUtils.setupWeblogEntry(
+                "anchor12", website1.getDefaultCategory(), website1, user1);
+        comment13 = TestUtils.setupComment("Comment13", entry12);
+        
+        website2 = TestUtils.setupWeblog("b_testWebsite2", user1);
+        entry21 = TestUtils.setupWeblogEntry(
+                "anchor21", website2.getDefaultCategory(), website2, user1);
+        comment21 = TestUtils.setupComment("Comment21", entry21);
+        TestUtils.endSession(true);
+    }
+    public void testGetMostCommentedWeblogs() throws Exception {        
+        UserManager mgr = RollerFactory.getRoller().getUserManager();      
+        List list = mgr.getMostCommentedWebsites(10, 0, Integer.MAX_VALUE);  
+        
+        assertNotNull(list);
+        assertEquals(2, list.size());
+        
+        StatCount s1 = (StatCount)list.get(0);
+        assertEquals(website1.getId(), s1.getSubjectId());
+        assertEquals(3L, s1.getCount());   
+        
+        StatCount s2 = (StatCount)list.get(1);
+        assertEquals(website2.getId(), s2.getSubjectId());
+        assertEquals(1L, s2.getCount());   
+    }
+    public void testGetMostCommentedWeblogEntries() throws Exception {        
+        WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();      
+        List list = mgr.getMostCommentedWeblogEntries(null, 10, 0, Integer.MAX_VALUE);
+        
+        assertNotNull(list);
+        assertEquals(3, list.size());
+        
+        StatCount s1 = (StatCount)list.get(0);
+        assertEquals(2L, s1.getCount()); 
+        assertEquals(entry11.getId(), s1.getSubjectId());
+        
+        StatCount s2 = (StatCount)list.get(1);
+        assertEquals(1L, s2.getCount());   
+    }
+    public void testGetUsernameLetterMap() throws Exception {        
+        UserManager mgr = RollerFactory.getRoller().getUserManager();      
+        Map map = mgr.getUsernameLetterMap();    
+        assertNotNull(map.get("a"));
+        assertNotNull(map.get("b"));
+        assertNull(map.get("c"));
+    }
+    public void testGetWeblogLetterMap() throws Exception {        
+        UserManager mgr = RollerFactory.getRoller().getUserManager();      
+        Map map = mgr.getWeblogHandleLetterMap();    
+        assertNotNull(map.get("a"));
+        assertNotNull(map.get("b"));
+        assertNull(map.get("c"));
+    }
+    protected void tearDown() throws Exception {
+        
+        // TODO: ATLAS figure out why comments must be torn down first
+        TestUtils.teardownComment(comment11.getId());
+        TestUtils.teardownComment(comment12.getId());
+        TestUtils.teardownComment(comment13.getId());
+        TestUtils.teardownWeblog(website1.getId());
+        
+        TestUtils.teardownComment(comment21.getId());
+        TestUtils.teardownWeblog(website2.getId());  
+        
+        TestUtils.teardownUser(user1.getId());        
+        TestUtils.teardownUser(user2.getId());        
+        
+        TestUtils.endSession(true);
+    }
+}

Modified: incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogTest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogTest.java?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogTest.java (original)
+++ incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogTest.java Tue May 30 06:17:15 2006
@@ -17,8 +17,6 @@
 */
 package org.apache.roller.business;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import junit.framework.Test;
 import junit.framework.TestCase;
@@ -28,7 +26,10 @@
 import org.apache.roller.TestUtils;
 import org.apache.roller.model.RollerFactory;
 import org.apache.roller.model.UserManager;
+import org.apache.roller.pojos.CommentData;
+import org.apache.roller.pojos.StatCount;
 import org.apache.roller.pojos.UserData;
+import org.apache.roller.pojos.WeblogEntryData;
 import org.apache.roller.pojos.WebsiteData;
 
 
@@ -220,5 +221,6 @@
     public void testRemoveLoadedWeblog() throws Exception {
         // TODO: implement testRemoveLoadedWeblog
     }
-    
 }
+
+

Modified: incubator/roller/branches/roller_3.0/web/WEB-INF/classes/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/web/WEB-INF/classes/ApplicationResources.properties?rev=410272&r1=410271&r2=410272&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/web/WEB-INF/classes/ApplicationResources.properties (original)
+++ incubator/roller/branches/roller_3.0/web/WEB-INF/classes/ApplicationResources.properties Tue May 30 06:17:15 2006
@@ -1064,6 +1064,11 @@
 cacheInfo.prompt=This page offers instrumentation data about what is happening \
 in the system caches.
 
+# ------------------------------------------------------------------ Statistics
+
+statCount.weblogCommentCountType=Weblog comment count
+statCount.weblogEntryCcommentCountType=Weblog entry comment count
+
 # ------------------------------------------------------------------ Tabbed Menu
 
 tabbedmenu.main=Main