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/06/01 21:43:18 UTC

svn commit: r410925 [1/2] - in /incubator/roller/branches/roller_3.0: src/org/apache/roller/business/ src/org/apache/roller/business/hibernate/ src/org/apache/roller/config/ src/org/apache/roller/model/ src/org/apache/roller/pojos/ src/org/apache/rolle...

Author: snoopdave
Date: Thu Jun  1 12:43:16 2006
New Revision: 410925

URL: http://svn.apache.org/viewvc?rev=410925&view=rev
Log:
Ongoing Atlas frontpage dev: page models and query refinements

Added:
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/error-page.vm
Modified:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java
    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/config/RollerConfig.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.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/src/org/apache/roller/pojos/PlanetEntryData.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/xmlrpc/BaseAPIHandler.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/xmlrpc/BloggerAPIHandler.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/xmlrpc/MetaWeblogAPIHandler.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/PlanetManagerLocalTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/PlanetManagerTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/RefererTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/UserTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogEntryTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogStatsTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/ui/authoring/struts/actions/BookmarksActionTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/ui/authoring/struts/actions/WeblogEntryActionTest.java
    incubator/roller/branches/roller_3.0/tests/org/apache/roller/ui/rendering/velocity/ExportRssTest.java
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/comments.vm
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/flavors/atom.vm
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/flavors/rss.vm
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/weblog.vm
    incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/admin/main.jsp
    incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/authoring/CommentManagement.jsp
    incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/authoring/WeblogEntryManagement.jsp
    incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/tiles/searchResults.jsp
    incubator/roller/branches/roller_3.0/web/WEB-INF/velocity.properties
    incubator/roller/branches/roller_3.0/web/themes/sotto/_day.vm

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java Thu Jun  1 12:43:16 2006
@@ -195,7 +195,7 @@
         Map themes = new HashMap();
         
         // NOTE: we need to figure out how to get the roller context path
-        String themespath = RollerConfig.getProperty("context.realpath");
+        String themespath = RollerConfig.getProperty("context.realPath");
         if(themespath.endsWith(File.separator))
             themespath += "themes";
         else

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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
@@ -282,16 +282,17 @@
         }
     }    
    
-    public synchronized List getAggregation(int offset, int len) 
+    public synchronized List getAggregation(Date startDate, Date endDate, int offset, int len) 
         throws RollerException {
-        return getAggregation(null, offset, len);
+        return getAggregation(null, startDate, endDate, offset, len);
     } 
     
     public synchronized List getAggregation(
-        PlanetGroupData group, int offset, int length)
+        PlanetGroupData group, Date startDate, Date endDate, int offset, int length)
         throws RollerException {
         // TODO: ATLAS getAggregation DONE TESTED
         List ret = null;
+        if (endDate == null) endDate = new Date();
         try {
             String groupHandle = (group == null) ? NO_GROUP : group.getHandle();
             long startTime = System.currentTimeMillis();
@@ -299,23 +300,40 @@
                     ((HibernatePersistenceStrategy)strategy).getSession();
             
             if (group != null) {
-                Query query = session.createQuery(
-                    "select entry from org.apache.roller.pojos.PlanetEntryData entry "
-                    +"join entry.subscription.groupSubscriptionAssocs assoc "
-                    +"where assoc.group=:group order by entry.pubTime desc");
+                StringBuffer sb = new StringBuffer();
+                sb.append("select entry from org.apache.roller.pojos.PlanetEntryData entry ");
+                sb.append("join entry.subscription.groupSubscriptionAssocs assoc ");
+                sb.append("where assoc.group=:group and entry.pubTime < :endDate ");
+                if (startDate != null) {
+                    sb.append("and entry.pubTime > :startDate ");
+                }
+                sb.append("order by entry.pubTime desc");
+                Query query = session.createQuery(sb.toString());
                 query.setEntity("group", group);
                 query.setFirstResult(offset);
                 query.setMaxResults(length);
+                query.setParameter("endDate", endDate);
+                if (startDate != null) {
+                    query.setParameter("startDate", startDate);
+                }
                 ret = query.list();
             } else {
-                Query query = session.createQuery(
-                    "select entry from org.apache.roller.pojos.PlanetEntryData entry "
-                    +"join entry.subscription.groupSubscriptionAssocs assoc "
-                    +"where "
-                    +"assoc.group.handle='external' or assoc.group.handle='all'"
-                    +" order by entry.pubTime desc");
+                StringBuffer sb = new StringBuffer();
+                sb.append("select entry from org.apache.roller.pojos.PlanetEntryData entry ");
+                sb.append("join entry.subscription.groupSubscriptionAssocs assoc ");
+                sb.append("where (assoc.group.handle='external' or assoc.group.handle='all') ");
+                sb.append("and entry.pubTime < :endDate ");
+                if (startDate != null) {
+                    sb.append("and entry.pubTime > :startDate ");
+                }
+                sb.append("order by entry.pubTime desc");
+                Query query = session.createQuery(sb.toString());
                 query.setFirstResult(offset);
                 query.setMaxResults(length);
+                query.setParameter("endDate", endDate);
+                if (startDate != null) {
+                    query.setParameter("startDate", startDate);
+                }
                 ret = query.list();
             }
             Date retLastUpdated = null;

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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
@@ -22,6 +22,7 @@
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
@@ -266,14 +267,19 @@
         // TODO: ATLAS getDaysPopularWebsites DONE TESTED
         String msg = "Getting hot weblogs";
         ArrayList result = new ArrayList();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();
         try {      
             Session session = 
                 ((HibernatePersistenceStrategy)strategy).getSession();            
             Query query = session.createQuery(
                 "select sum(r.dayHits) as s, w.id, w.name, w.handle  "
                +"from WebsiteData w, RefererData r "
-               +"where r.website=w and w.enabled=true and w.active=true "
+               +"where r.website=w and w.enabled=true and w.active=true and w.lastModified > :startDate"
                +"group by w.name, w.handle, w.id order by col_0_0_ desc"); 
+            query.setParameter("startDate", startDate);
             
               // +"group by w.name, w.handle, w.id order by s desc");
               // The above would be *much* better but "HQL parser does not   
@@ -310,7 +316,7 @@
     /**
      * @deprecated Replaced by getHotWeblogs().
      */
-    public List getDaysPopularWebsites(int sinceDays, int offset, int length) 
+    public List getDaysPopularWebsites(int offset, int length) 
         throws RollerException {
         // TODO: ATLAS getDaysPopularWebsites DONE TESTED
         String msg = "Getting popular websites";

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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
@@ -19,11 +19,13 @@
 package org.apache.roller.business.hibernate;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
 import org.apache.roller.pojos.StatCount;
 import org.hibernate.Criteria;
 import org.hibernate.HibernateException;
@@ -226,8 +228,8 @@
             adminUser = true;
         }
         
-        if(getUserByUsername(newUser.getUserName()) != null ||
-                getUserByUsername(newUser.getUserName().toLowerCase()) != null) {
+        if(getUserByUserName(newUser.getUserName()) != null ||
+                getUserByUserName(newUser.getUserName().toLowerCase()) != null) {
             throw new RollerException("error.add.user.userNameInUse");
         }
         
@@ -446,9 +448,10 @@
      * Get websites of a user
      */
     public List getWebsites(
-        UserData user, Boolean enabled, Boolean active, int offset, int length)  
+        UserData user, Boolean enabled, Boolean active, Date startDate, Date endDate, int offset, int length)  
         throws RollerException {
         // TODO: ATLAS getWebsites DONE TESTED
+        if (endDate == null) endDate = new Date();
         try {
             Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
             Criteria criteria = session.createCriteria(WebsiteData.class);
@@ -456,7 +459,10 @@
                 criteria.createAlias("permissions","permissions");
                 criteria.add(Expression.eq("permissions.user", user));
                 criteria.add(Expression.eq("permissions.pending", Boolean.FALSE));
-            }
+            }            criteria.add(Expression.lt("dateCreated", endDate));
+            if (startDate != null) {
+                criteria.add(Expression.gt("dateCreated", startDate));
+            }            
             if (enabled != null) {
                 criteria.add(Expression.eq("enabled", enabled));
             }
@@ -480,11 +486,11 @@
         return (UserData)this.strategy.load(id,UserData.class);
     }
         
-    public UserData getUserByUsername(String userName) throws RollerException {
-        return getUserByUsername(userName, Boolean.TRUE);
+    public UserData getUserByUserName(String userName) throws RollerException {
+        return getUserByUserName(userName, Boolean.TRUE);
     }
     
-    public UserData getUserByUsername(String userName, Boolean enabled)
+    public UserData getUserByUserName(String userName, Boolean enabled)
     throws RollerException {
         
         if (userName==null )
@@ -538,14 +544,18 @@
     }
     
     public List getUsers(int offset, int length) throws RollerException {
-        return getUsers(Boolean.TRUE, offset, length);
+        return getUsers(Boolean.TRUE, null, null, offset, length);
     }
     
-    public List getUsers(Boolean enabled, int offset, int length) throws RollerException {
-        
+    public List getUsers(Boolean enabled, Date startDate, Date endDate, int offset, int length) throws RollerException {
+        if (endDate == null) endDate = new Date();
         try {
             Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
             Criteria criteria = session.createCriteria(UserData.class);
+            criteria.add(Expression.lt("dateCreated", endDate));
+            if (startDate != null) {
+                criteria.add(Expression.gt("dateCreated", startDate));
+            }
             if (enabled != null) {
                 criteria.add(Expression.eq("enabled", enabled));
             }
@@ -789,17 +799,17 @@
     
     public void release() {}
     
-    public Map getUsernameLetterMap() throws RollerException {
-        // TODO: ATLAS getUsernameLetterMap DONE TESTED
+    public Map getUserNameLetterMap() throws RollerException {
+        // TODO: ATLAS getUserNameLetterMap DONE TESTED
         String msg = "Getting username letter map";
         try {      
-            String lc = "abcdefghijklmnopqrstuvwxyz";
-            Map results = new HashMap();
+            String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+            Map results = new TreeMap();
             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)+"%'");
+                    "select count(user) from UserData user where upper(user.userName) like '"+lc.charAt(i)+"%'");
                 List row = query.list();
                 Integer count = (Integer)row.get(0);
                 if (count.intValue() > 0) {
@@ -820,6 +830,7 @@
             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.addOrder(Order.asc("userName"));
             if (offset != 0) {
                 criteria.setFirstResult(offset);
             }
@@ -836,18 +847,16 @@
         // TODO: ATLAS getWeblogHandleLetterMap DONE
         String msg = "Getting weblog letter map";
         try {      
-            String lc = "abcdefghijklmnopqrstuvwxyz";
-            Map results = new HashMap();
+            String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+            Map results = new TreeMap();
             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)+"%'");
+                    "select count(website) from WebsiteData website where upper(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);
-                }
+                results.put(new String(new char[]{lc.charAt(i)}), count);
             }
             return results;
         } catch (Throwable pe) {
@@ -863,6 +872,7 @@
             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.addOrder(Order.asc("handle"));
             if (offset != 0) {
                 criteria.setFirstResult(offset);
             }
@@ -875,17 +885,26 @@
         }
     }
         
-    public List getMostCommentedWebsites(int sinceDays, int offset, int length) 
+    public List getMostCommentedWebsites(Date startDate, Date endDate, int offset, int length) 
         throws RollerException {
         // TODO: ATLAS getMostCommentedWebsites DONE TESTED
         String msg = "Getting most commented websites";
+        if (endDate == null) endDate = new Date();
         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");
+            StringBuffer sb = new StringBuffer();
+            sb.append("select count(distinct c), c.weblogEntry.website.id, c.weblogEntry.website.name, c.weblogEntry.website.description ");
+            sb.append("from CommentData c where c.weblogEntry.pubTime < :endDate ");
+            if (startDate != null) {
+                sb.append("and c.weblogEntry.pubTime > :startDate ");
+            }  
+            sb.append("group by c.weblogEntry.website.id, c.weblogEntry.website.name, c.weblogEntry.website.description order by col_0_0_ desc");
+            Query query = session.createQuery(sb.toString());
+            query.setParameter("endDate", endDate);
+            if (startDate != null) {
+                query.setParameter("startDate", startDate);
+            }   
             if (offset != 0) {
                 query.setFirstResult(offset);
             }

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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
@@ -1016,25 +1016,43 @@
     }
     
     public List getMostCommentedWeblogEntries(
-            WebsiteData website, int sinceDays, int offset, int length) 
+            WebsiteData website, Date startDate, Date endDate, int offset, int length) 
             throws RollerException {
         // TODO: ATLAS getMostCommentedWeblogEntries DONE
         String msg = "Getting most commented weblog entres";
+        if (endDate == null) endDate = new Date();
         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");
+                StringBuffer sb = new StringBuffer();
+                sb.append("select count(distinct c), c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title from CommentData c ");
+                sb.append("where c.weblogEntry.website=:website and c.weblogEntry.pubTime < :endDate ");
+                if (startDate != null) {
+                    sb.append("and c.weblogEntry.pubTime > :startDate ");
+                }                   
+                sb.append("group by c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title ");
+                sb.append("order by col_0_0_ desc");
+                query = session.createQuery(sb.toString());
                 query.setParameter("website", website);
+                query.setParameter("endDate", endDate);
+                if (startDate != null) {
+                    query.setParameter("startDate", startDate);
+                }   
             } 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");
+                StringBuffer sb = new StringBuffer();
+                sb.append("select count(distinct c), c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title ");
+                sb.append("from CommentData c group by c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title ");
+                sb.append("where c.weblogEntry.pubTime < :endDate ");
+                if (startDate != null) {
+                    sb.append("and c.weblogEntry.pubTime > :startDate ");
+                } 
+                sb.append("order by col_0_0_ desc");
+                query = session.createQuery(sb.toString());
+                if (startDate != null) {
+                    query.setParameter("startDate", startDate);
+                }   
             }
             if (offset != 0) {
                 query.setFirstResult(offset);
@@ -1127,4 +1145,5 @@
             log.error("EXCEPTION applying comment defaults",e);
         }
     }     
+
 }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java Thu Jun  1 12:43:16 2006
@@ -35,7 +35,7 @@
  * @author Allen Gilliland
  */
 public class RollerConfig {
-
+    
     private static String default_config = "/roller.properties";
     private static String custom_config = "/roller-custom.properties";
     private static String custom_jvm_param = "roller.custom.config";
@@ -46,12 +46,11 @@
     private static Log mLogger =
             LogFactory.getFactory().getInstance(RollerConfig.class);
 
-
     /*
-    * Static block run once at class loading
-    *
-    * We load the default properties and any custom properties we find
-    */
+     * Static block run once at class loading
+     *
+     * We load the default properties and any custom properties we find
+     */
     static {
         mConfig = new Properties();
 
@@ -137,10 +136,9 @@
 
     /**
      * Retrieve a property value
-     *
      * @param     key Name of the property
      * @return    String Value of property requested, null if not found
-     **/
+     */
     public static String getProperty(String key) {
         mLogger.debug("Fetching property ["+key+"="+mConfig.getProperty(key)+"]");
         return mConfig.getProperty(key);
@@ -149,7 +147,7 @@
 
     /**
      * Retrieve a property as a boolean ... defaults to false if not present.
-     **/
+     */
     public static boolean getBooleanProperty(String name) {
         return getBooleanProperty(name,false);
     }
@@ -169,7 +167,7 @@
 
     /**
      * Retrieve a property as an int ... defaults to 0 if not present.
-     **/
+     */
     public static int getIntProperty(String name) {
         return getIntProperty(name, 0);
     }
@@ -189,21 +187,31 @@
 
     /**
      * Retrieve all property keys
-     *
      * @return Enumeration A list of all keys
      **/
     public static Enumeration keys() {
         return mConfig.keys();
     }
-
+   
+    /**
+     * Set the "context.absPath" property at runtime.
+     * <p />
+     * Properties are meant to be read-only, but we make this exception because 
+     * Roller POJOs and backend classes need access to the 
+     * <p />
+     * This property is *not* persisted in any way.
+     */
+    public static void setAbsoluteContextPath(String path) {
+        mConfig.setProperty("context.absPath", path);
+    }
 
     /**
      * Set the "uploads.dir" property at runtime.
-     *
-     * Properties are meant to be read-only, but we make this exception because we 
-     * know that some people are still writing their uploads to the webapp context 
-     * and we can only get that path at runtime (and for unit testing).
-     * 
+     * <p />
+     * Properties are meant to be read-only, but we make this exception because  
+     * we know that some people are still writing their uploads to the webapp  
+     * context and we can only get that path at runtime (and for unit testing).
+     * <p />
      * This property is *not* persisted in any way.
      */
     public static void setUploadsDir(String path) {
@@ -213,24 +221,24 @@
     }
 
     /**
-     * Set the "context.realpath" property at runtime.
-     *
-     * Properties are meant to be read-only, but we make this  exception because 
-     * there are some classes which rely on having filesystem access to files in the 
-     * roller webapp context (and for unit testing).
-     *
+     * Set the "context.realPath" property at runtime.
+     * <p />
+     * Properties are meant to be read-only, but we make this exception because 
+     * there are some classes which rely on having filesystem access to files
+     * in theRoller webapp context (and for unit testing).
+     * <p />
      * This property is *not* persisted in any way.
      */
     public static void setContextRealPath(String path) {
-        mConfig.setProperty("context.realpath", path);
+        mConfig.setProperty("context.realPath", path);
     }
     
     /**
      * Set the "context.realpath" property at runtime.
-     *
-     * Properties are meant to be read-only, but we make this exception to make it
-     * possible for unit tests to control the cache directory.
-     *
+     * <p />
+     * Properties are meant to be read-only, but we make this exception to make 
+     * it possible for unit tests to control the cache directory.
+     * <p />
      * This property is *not* persisted in any way.
      */
     public static void setPlanetCachePath(String path) {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java Thu Jun  1 12:43:16 2006
@@ -134,14 +134,16 @@
      * @param len       Maximum number of results to return (for paging) 
      */
     public List getAggregation(
-        PlanetGroupData group, int offset, int len) throws RollerException;
+            PlanetGroupData group, Date startDate, Date endDate, 
+            int offset, int len) throws RollerException;
     
     /** 
      * Get agggration from cache, enries in reverse chonological order.
      * @param offset    Offset into results (for paging)
      * @param len       Maximum number of results to return (for paging)
      */
-    public List getAggregation(int offset, int len) throws RollerException;
+    public List getAggregation(Date startDate, Date endDate, 
+            int offset, int len) throws RollerException;
     
     //------------------------------------------------------------------ update
     

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java Thu Jun  1 12:43:16 2006
@@ -79,12 +79,13 @@
     
     /**
      * Get most popular websites based on referer day hits.
-     * @param sinceDays Restrict to last X days (or -1 for all)
      * @param offset    Offset into results (for paging)
      * @param len       Maximum number of results to return (for paging)
      * @return List of WebsiteDisplayData objects.
      */
-    public List getDaysPopularWebsites(int sinceDays, int offset, int length) 
+    public List getDaysPopularWebsites(
+            int offset, 
+            int length) 
         throws RollerException;   
     
     /**

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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
@@ -18,6 +18,7 @@
 
 package org.apache.roller.model;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import org.apache.roller.RollerException;
@@ -57,12 +58,12 @@
     /** 
      * Get user object by user name (only enabled users) 
      */
-    public UserData getUserByUsername(String userName) throws RollerException;    
+    public UserData getUserByUserName(String userName) throws RollerException;    
     
     /** 
      * Get user object by user name, optionally include dis-enabled users 
      */
-    public UserData getUserByUsername(String userName, Boolean enabled) 
+    public UserData getUserByUserName(String userName, Boolean enabled) 
             throws RollerException;    
     
     /** 
@@ -72,10 +73,16 @@
     
     /**
      * Get all users, optionally include dis-enabled users.
-     *
      * @param enabled True for enabled only, false for disabled only, null for all
+     * @param startDate Restrict to those created after (or null for all)
+     * @param endDate Restrict to those created before (or null for all)
      */
-    public List getUsers(Boolean enabled, int offset, int length) throws RollerException;    
+    public List getUsers(
+        Boolean enabled, 
+        Date    startDate,
+        Date    endDate,
+        int     offset, 
+        int     length) throws RollerException;    
     
     /**
      * Get all users or a website.
@@ -83,7 +90,11 @@
      * @param website Get all users of this website (or null for all)
      * @returns List of UserData objects.
      */
-    public List getUsers(WebsiteData website, Boolean enabled, int offset, int length) throws RollerException;
+    public List getUsers(
+        WebsiteData website, 
+        Boolean enabled, 
+        int offset, 
+        int length) throws RollerException;
         
     /**
      * Returns users whose usernames or email addresses start with a string.
@@ -101,7 +112,7 @@
      * containing integers reflecting the number of users whose
      * names start with each letter.
      */
-    public Map getUsernameLetterMap() throws RollerException;
+    public Map getUserNameLetterMap() throws RollerException;
     
     /** Get collection of users whose names begin with specified letter */
     public List getUsersByLetter(char letter, int offset, int length) throws RollerException;
@@ -158,21 +169,34 @@
      * @param len     Maximum number of results to return (for paging)
      * @param enabled Get all with this enabled state (or null or all)
      * @param active  Get all with this active state (or null or all)
+     * @param startDate Restrict to those created after (or null for all)
+     * @param endDate Restrict to those created before (or null for all)
      * @returns List of WebsiteData objects.
      */
     public List getWebsites(
-            UserData user, Boolean enabled, Boolean active, int offset, int length) 
-            throws RollerException;
+        UserData user, 
+        Boolean  enabled, 
+        Boolean  active, 
+        Date     startDate, 
+        Date     endDate, 
+        int      offset, 
+        int      length) 
+        throws RollerException;
     
     /**
      * Get websites ordered by descending number of comments.
-     * @param sinceDays Restrict to last X days (or -1 for all)
+     * @param startDate Restrict to those created after (or null for all)
+     * @param endDate Restrict to those created before (or null for all)
      * @param offset    Offset into results (for paging)
      * @param len       Maximum number of results to return (for paging)
      * @returns List of WebsiteData objects.
      */
-    public List getMostCommentedWebsites(int sinceDays, int offset, int length) 
-            throws RollerException;
+    public List getMostCommentedWebsites(
+        Date startDate, 
+        Date endDate, 
+        int  offset, 
+        int  length) 
+        throws RollerException;
     
     /**
      * Save permissions object.

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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
@@ -138,12 +138,15 @@
     /** 
      * Get weblog enties ordered by descending number of comments.
      * @param website Restrict to only this website (or null for all)
-     * @param sinceDays Restrict to last X days (or -1 for all)
      * @param len       Maximum number of results to return (for paging)
      * @returns List of WeblogEntryData objects.
      */
     public List getMostCommentedWeblogEntries(
-            WebsiteData website, int sinceDays, int offset, int length)
+            WebsiteData website,             
+            Date        startDate,
+            Date        endDate,
+            int         offset, 
+            int         length)
             throws RollerException;
     
     /**

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java Thu Jun  1 12:43:16 2006
@@ -95,13 +95,19 @@
      * Init entry from Rome entry
      */
     private void initFromRomeEntry(SyndFeed romeFeed, SyndEntry romeEntry) {
-        setAuthor(romeEntry.getAuthor());
         setTitle(romeEntry.getTitle());
         setPermaLink(romeEntry.getLink());
         
-        // Play some games to get the date
+        // Play some games to get the author
         DCModule entrydc = (DCModule)romeEntry.getModule(DCModule.URI);
         DCModule feeddc = (DCModule)romeFeed.getModule(DCModule.URI);
+        if (romeEntry.getAuthor() != null) {
+            setAuthor(romeEntry.getAuthor());
+        } else {
+            setAuthor(entrydc.getCreator()); // use <dc:creator>
+        }
+        
+        // Play some games to get the date too
         if (romeEntry.getPublishedDate() != null) {
             setPubTime(new Timestamp(romeEntry.getPublishedDate().getTime())); // use <pubDate>
         } else if (entrydc != null) {
@@ -319,6 +325,7 @@
        
     /**
      * Return first entry in category collection.
+     * @roller.wrapPojoMethod type="pojo"
      */
     public WeblogCategoryData getCategory() {
         WeblogCategoryData cat = null;
@@ -390,7 +397,16 @@
     
     public void setData(PersistentObject vo) {}
 
-     
+    /**
+     * Read-only synomym for getSubscription()
+     * @roller.wrapPojoMethod type="pojo"
+     */
+    public PlanetSubscriptionData getWebsite() {
+        return this.subscription;        
+    }
+    public void setWebsite() {
+        // noop
+    }
 }
 
 

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java Thu Jun  1 12:43:16 2006
@@ -27,7 +27,7 @@
  * @hibernate.class lazy="false" table="rag_subscription"
  */
 public class PlanetSubscriptionData extends PersistentObject 
-    implements Serializable, Comparable
+    implements WeblogEntry.Website, Serializable, Comparable
 {
     /** Database ID */
     protected String id;
@@ -186,6 +186,25 @@
         this.inboundblogs = inboundblogs;
     }
 
+    /** 
+     * @roller.wrapPojoMethod type="simple"
+     */
+    public String getName() {
+        return title;
+    }
+    public void setName(String name) {
+        title = name;
+    }
+    /** 
+     * @roller.wrapPojoMethod type="simple"
+     */
+    public String getUrl() {
+        return siteUrl;
+    }
+    public void setUrl(String url) {
+        siteUrl = url;
+    }
+    
     //-------------------------------------------------------------- implementation
    
     /**

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java Thu Jun  1 12:43:16 2006
@@ -43,7 +43,7 @@
  */
 public class UserData
         extends org.apache.roller.pojos.PersistentObject
-        implements java.io.Serializable {
+        implements WeblogEntry.User, java.io.Serializable {
     public static final UserData SYSTEM_USER = new UserData(
             "n/a","systemuser","n/a","systemuser","n/a",
             "en_US_WIN", "America/Los_Angeles", new Date(), Boolean.TRUE);
@@ -137,6 +137,7 @@
     /** User name of the user.
      * @ejb:persistent-field
      * @hibernate.property column="username" non-null="true" unique="true"
+     * @roller.wrapPojoMethod type="simple"
      */
     public String getUserName() {
         return this.userName;
@@ -220,6 +221,7 @@
      * Locale of the user.
      * @ejb:persistent-field
      * @hibernate.property column="locale" non-null="true" unique="false"
+     * @roller.wrapPojoMethod type="simple"
      */
     public String getLocale() {
         return this.locale;
@@ -234,6 +236,7 @@
      * Timezone of the user.
      * @ejb:persistent-field
      * @hibernate.property column="timeZone" non-null="true" unique="false"
+     * @roller.wrapPojoMethod type="simple"
      */
     public String getTimeZone() {
         return this.timeZone;

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java Thu Jun  1 12:43:16 2006
@@ -36,7 +36,8 @@
  * @hibernate.class lazy="false" table="weblogcategory"
  * @hibernate.cache usage="read-write"
  */
-public class WeblogCategoryData extends HierarchicalPersistentObject
+public class WeblogCategoryData 
+    extends HierarchicalPersistentObject implements WeblogEntry.WeblogCategory
 {
     public static final long serialVersionUID = 1435782148712018954L;
 

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java Thu Jun  1 12:43:16 2006
@@ -24,7 +24,7 @@
 /**
  * Common weblog entry interface supported by both WeblogEntryData and 
  * PlanetEntryData, meant primarily as documentation -- to help Roller template
- * author's write template code that works with both blog and planet entries.
+ * author's write code that works with both blog and planet entries.
  */
 public interface WeblogEntry {    
 
@@ -68,7 +68,7 @@
      * category information, this may be null. If there are multiple categories
      * then the first category found is returned.
      */
-    public WeblogCategoryData getCategory();
+    public WeblogCategory getCategory();
     
     /** 
      * Returns collection of WeblogCategoryData objects for entry.
@@ -79,7 +79,30 @@
      * Returns user object of author who created post but since titles are not 
      * required by all feed formats so this method may return null.
      */
-    public UserData getCreator();
+    public User getCreator();
+    
+    /**
+     * Returns website object representing site from which entry originated.
+     */
+    public Website getWebsite();
+   
+    
+    public interface User { 
+        /** User name of user */
+        public String getUserName();
+    }
+    
+    public interface WeblogCategory {     
+        /** Name of category */
+        public String getName();
+    }
+    
+    public interface Website {     
+        /** URL of website */
+        public String getUrl();    
+        /** Name of website */
+        public String getName();
+    }
 }
 
 

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java Thu Jun  1 12:43:16 2006
@@ -39,7 +39,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
-import org.apache.roller.model.Roller;
+import org.apache.roller.config.RollerConfig;
 import org.apache.roller.model.RollerFactory;
 import org.apache.roller.model.UserManager;
 import org.apache.roller.model.WeblogManager;
@@ -711,36 +711,18 @@
      * @return
      */
     public String getPermaLink() {
-        String lAnchor = this.getAnchor();
-        
+        // TODO: ATLAS reconcile entry.getPermaLink() with new URLs
+        String lAnchor = this.getAnchor();        
         try {
             lAnchor = URLEncoder.encode(anchor, "UTF-8");
         } catch (UnsupportedEncodingException e) {
             // go with the "no encoding" version
-        }
-        
+        }        
         WebsiteData website = this.getWebsite();
-        String plink = "/page/" + website.getHandle() +
-                "?entry=" + lAnchor;
-        
+        String absContextUrl = RollerConfig.getProperty("context.absPath");
+        String plink = 
+          absContextUrl + "/page/" + website.getHandle() + "?entry=" + lAnchor;        
         return plink;
-    }
-    
-    /**
-     * Get the "relative" URL to this entry.  Proper use of this will
-     * require prepending the baseURL (either the full root
-     * [http://server.com/context] or at least the context
-     * [/context]) in order to generate a functional link.
-     *
-     * @roller.wrapPojoMethod type="simple"
-     * @param category The category name to insert into the permalink.
-     * @return String
-     */
-    public String getPermaLink(String categoryPath) {
-        // i don't really understand the purpose of this method since
-        // WeblogEntryData.getPermaLink() is only meant to point to this entry
-        
-        return this.getPermaLink();
     }
     
     /**

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java Thu Jun  1 12:43:16 2006
@@ -33,6 +33,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.ThemeNotFoundException;
+import org.apache.roller.config.RollerConfig;
 import org.apache.roller.config.RollerRuntimeConfig;
 import org.apache.roller.model.ThemeManager;
 import org.apache.roller.model.UserManager;
@@ -51,7 +52,7 @@
  * @hibernate.cache usage="read-write"
  */
 public class WebsiteData extends org.apache.roller.pojos.PersistentObject
-        implements java.io.Serializable {
+        implements WeblogEntry.Website, java.io.Serializable {
     public static final long serialVersionUID = 206437645033737127L;
     
     private static Log mLogger = LogFactory.getLog(WebsiteData.class);
@@ -1011,6 +1012,17 @@
     public void setLastModified(Date lastModified) {
         this.lastModified = lastModified;
     }
-    
+  
+    /** 
+     * @roller.wrapPojoMethod type="simple"
+     */
+    public String getUrl() {
+        // TODO: ATLAS reconcile entry.getPermaLink() with new URLs
+        String absContextUrl = RollerConfig.getProperty("context.absPath");
+        return absContextUrl + "/page/" + getHandle();       
+    }
+    public void setUrl(String url) {
+        // noop
+    }
 }
 

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java Thu Jun  1 12:43:16 2006
@@ -106,7 +106,7 @@
          */
         public List getAggregation(int num) throws RollerException {
             Roller roller = RollerFactory.getRoller();
-            return roller.getPlanetManager().getAggregation(0, num);
+            return roller.getPlanetManager().getAggregation(null, null, 0, num);
         }
         /**
          * Get named group
@@ -129,7 +129,7 @@
             try {
                 Roller roller = RollerFactory.getRoller();
                 PlanetGroupData group= roller.getPlanetManager().getGroup(name);
-                ret = roller.getPlanetManager().getAggregation(group, 0, num);
+                ret = roller.getPlanetManager().getAggregation(group, null, null, 0, num);
             } catch (RollerException e) {
                 mLogger.error(e);
             }
@@ -167,7 +167,7 @@
          */
         public List getPopularWebsites(int num) throws RollerException {
             Roller roller = RollerFactory.getRoller();
-            return roller.getRefererManager().getDaysPopularWebsites(-1, 0, num);
+            return roller.getRefererManager().getDaysPopularWebsites(0, num);
         }
     }
 }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java Thu Jun  1 12:43:16 2006
@@ -91,7 +91,7 @@
                 {
                     ActionMessages msgs = getErrors(request);
                     msgs = (msgs == null) ? new ActionMessages() : msgs;
-                    user = mgr.getUserByUsername(userForm.getUserName(), null);                    
+                    user = mgr.getUserByUserName(userForm.getUserName(), null);                    
                     if (user != null)
                     {
                         userForm.copyFrom(user, request.getLocale());                        

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java Thu Jun  1 12:43:16 2006
@@ -138,7 +138,7 @@
         ActionMessages errors = new ActionErrors();
         InviteMemberForm form = (InviteMemberForm)actionForm;
         UserManager umgr = RollerFactory.getRoller().getUserManager();
-        UserData user = umgr.getUserByUsername(form.getUserName());
+        UserData user = umgr.getUserByUserName(form.getUserName());
         
         BasePageModel pageModel = new BasePageModel(
             "inviteMember.title", request, response, mapping);              

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java Thu Jun  1 12:43:16 2006
@@ -102,7 +102,7 @@
             List list = null;
             mLogger.debug("Refreshing popular websites list");
             Roller roller = RollerFactory.getRoller();
-            list = roller.getRefererManager().getDaysPopularWebsites(-1, 0, num);
+            list = roller.getRefererManager().getDaysPopularWebsites(0, num);
             return list;
         }
         

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java Thu Jun  1 12:43:16 2006
@@ -445,24 +445,23 @@
     
     /** Get absolute URL of Roller context */
     public String getAbsoluteContextUrl(HttpServletRequest request) {
-        
-        String url = RollerRuntimeConfig.getProperty("site.absoluteurl");
-        
-        if (url == null || url.trim().length() == 0) {
-            try {
-                URL absURL = RequestUtils.absoluteURL(request, "/");
-                url = absURL.toString();
-            } catch (MalformedURLException e) {
-                url = "/";
-                mLogger.error("ERROR: forming absolute URL", e);
+        String url = RollerConfig.getProperty("context.absPath");
+        if (url == null) {
+            url = RollerRuntimeConfig.getProperty("site.absoluteurl");
+            if (url == null || url.trim().length() == 0) {
+                try {
+                    URL absURL = RequestUtils.absoluteURL(request, "/");
+                    url = absURL.toString();
+                } catch (MalformedURLException e) {
+                    url = "/";
+                    mLogger.error("ERROR: forming absolute URL", e);
+                }
             }
+            if (url.endsWith("/")) {
+                url = url.substring(0, url.length() - 1);
+            }   
+            RollerConfig.setAbsoluteContextPath(url);
         }
-        
-        if (url.endsWith("/")) {
-            url = url.substring(0, url.length() - 1);
-        }
-        
-        mContext.setAttribute("org.apache.roller.absoluteContextURL", url);
         return url;
     }
     

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java Thu Jun  1 12:43:16 2006
@@ -169,7 +169,7 @@
         if (userName != null)
         {
             UserManager userMgr = RollerFactory.getRoller().getUserManager();
-            UserData currentUser = userMgr.getUserByUsername(userName);
+            UserData currentUser = userMgr.getUserByUserName(userName);
             // TODO: possible fix for backend refactoryings
             //RollerFactory.getRoller().setUser(currentUser);
         }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java Thu Jun  1 12:43:16 2006
@@ -81,7 +81,7 @@
                 try 
                 {
                     UserManager umgr = RollerFactory.getRoller().getUserManager();
-                    UserData user = umgr.getUserByUsername(principal.getName());
+                    UserData user = umgr.getUserByUserName(principal.getName());
                     // only set authenticated user if user is enabled
                     if (user.getEnabled().booleanValue()) 
                     {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java Thu Jun  1 12:43:16 2006
@@ -233,6 +233,9 @@
                 // categories may contain spaces, which is not desired
                 key.append("/").append(org.apache.commons.lang.StringUtils.deleteWhitespace(cat));
             }
+            
+            // TODO: ATLAS reconcile with new URL structure
+            key.append(pageRequest.getRequest().getQueryString());
         }
         
         // add page name

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java Thu Jun  1 12:43:16 2006
@@ -546,4 +546,5 @@
         
         return "";
     }
+        
 }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java Thu Jun  1 12:43:16 2006
@@ -763,6 +763,10 @@
         return mRollerReq.getRequest().getParameter(key);
     }
     
+    public int getIntRequestParameter(String key) {
+        return Integer.parseInt(mRollerReq.getRequest().getParameter(key));
+    }
+    
     //------------------------------------------------------------------------
     
     public FolderDataWrapper getFolderByPath(String path) {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java Thu Jun  1 12:43:16 2006
@@ -19,7 +19,6 @@
 
 import java.io.IOException;
 import java.io.StringWriter;
-import java.net.SocketException;
 import java.util.Date;
 import java.util.Map;
 import javax.servlet.ServletConfig;
@@ -38,8 +37,8 @@
 import org.apache.roller.RollerException;
 import org.apache.roller.pojos.WeblogTemplate;
 import org.apache.roller.pojos.WebsiteData;
-import org.apache.roller.ui.core.InvalidRequestException;
 import org.apache.roller.ui.core.RollerRequest;
+import org.apache.velocity.exception.ParseErrorException;
 
 
 /**
@@ -198,14 +197,25 @@
         
         try {
             outty = getTemplate(page.getId(), "UTF-8");
-        } catch(ResourceNotFoundException ex) {
+        } 
+        catch (ParseErrorException parseError) {            
+            // Error at this point indicates error in template, so let's show 
+            // it to the template author so they can debug it.
+            ctx.put("displayException", parseError);
+            try {
+                outty = getTemplate("error-page.vm", "UTF-8");
+            } catch (Throwable totallyUnexpected) {
+                throw new RuntimeException("ERROR parsing Velocity error page");
+            }
+        } 
+        catch (ResourceNotFoundException notFound) {
             // just rethrow
-            throw ex;
-        } catch(Exception ex) {
+            throw notFound;
+        } 
+        catch (Exception ex) { 
             // wrap this as a roller exception
-            throw new RollerException("Error getting velocity template", ex);
-        }
-        
+            throw new RollerException("ERROR getting velocity template", ex);            
+        }        
         return outty;
     }
     

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java Thu Jun  1 12:43:16 2006
@@ -18,6 +18,8 @@
 package org.apache.roller.ui.rendering.velocity;
 
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import org.apache.commons.logging.Log;
@@ -45,12 +47,16 @@
      * @param offset   Offset into results (for paging)
      * @param len      Max number of results to return
      */
-    public List getAggregation(int offset, int len) {
+    public List getAggregation(int sinceDays, int offset, int len) {
         List results = new ArrayList();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();        
         try {
             Roller roller = RollerFactory.getRoller();
             PlanetManager planetManager = roller.getPlanetManager();
-            List entries = planetManager.getAggregation(offset, len);
+            List entries = planetManager.getAggregation(startDate, null, offset, len);
             for (Iterator it = entries.iterator(); it.hasNext();) {
                 PlanetEntryData entry = (PlanetEntryData) it.next();
                 PlanetEntryDataWrapper wrapped = PlanetEntryDataWrapper.wrap(entry);
@@ -68,14 +74,18 @@
      * @param offset   Offset into results (for paging)
      * @param len      Max number of results to return
      */
-    public List getAggregation(String groupHandle, int offset, int len) {
+    public List getAggregation(String groupHandle, int sinceDays, int offset, int len) {
         List list = new ArrayList();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();
         try {
             Roller roller = RollerFactory.getRoller();
             PlanetManager planetManager = roller.getPlanetManager();
             PlanetGroupData group = planetManager.getGroup(groupHandle);
             if (group != null) {
-                list = planetManager.getAggregation(group, offset, len);
+                list = planetManager.getAggregation(group, startDate, null, offset, len);
             }
         } catch (Exception e) {
             log.error("ERROR: get aggregation", e);

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java Thu Jun  1 12:43:16 2006
@@ -18,6 +18,7 @@
 package org.apache.roller.ui.rendering.velocity;
 
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -53,12 +54,17 @@
      * @param offset   Offset into results (for paging)
      * @param len      Max number of results to return
      */
-    public List getWeblogs(int offset, int length) {
+    public List getWeblogs(int sinceDays, int offset, int length) {
         List results = new ArrayList();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();
         try {            
             Roller roller = RollerFactory.getRoller();
             UserManager umgr = roller.getUserManager();
-            List weblogs = umgr.getWebsites(null, Boolean.TRUE, Boolean.TRUE, offset, length);
+            List weblogs = umgr.getWebsites(
+                null, Boolean.TRUE, Boolean.TRUE, startDate, null, offset, length);
             for (Iterator it = weblogs.iterator(); it.hasNext();) {
                 WebsiteData website = (WebsiteData) it.next();
                 results.add(WebsiteDataWrapper.wrap(website));
@@ -76,12 +82,17 @@
      * @param offset   Offset into results (for paging)
      * @param length   Max number of results to return
      */
-    public List getCommentedWeblogs(int sinceDays , int offset, int length) {
+    public List getMostCommentedWeblogs(int sinceDays , int offset, int length) {
         List results = new ArrayList();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();
         try {            
             Roller roller = RollerFactory.getRoller();
             UserManager umgr = roller.getUserManager();
-            results = umgr.getMostCommentedWebsites(Integer.MAX_VALUE, offset, length);
+            results = umgr.getMostCommentedWebsites(
+                    startDate, new Date(), offset, length);
         } catch (Exception e) {
             log.error("ERROR: fetching commented weblog list", e);
         }
@@ -96,12 +107,18 @@
      * @param offset   Offset into results (for paging)
      * @param len      Max number of results to return
      */
-    public List getCommentedWeblogEntries(List cats, int sinceDays, int offset, int length) {
+    public List getMostCommentedWeblogEntries(
+            List cats, int sinceDays, int offset, int length) {
         List results = new ArrayList();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();
         try {            
             Roller roller = RollerFactory.getRoller();
             WeblogManager wmgr = roller.getWeblogManager();
-            results = wmgr.getMostCommentedWeblogEntries(null, Integer.MAX_VALUE, offset, length);
+            results = wmgr.getMostCommentedWeblogEntries(
+                    null, startDate, new Date(), offset, length);
         } catch (Exception e) {
             log.error("ERROR: fetching commented weblog entries list", e);
         }
@@ -111,31 +128,35 @@
     /**
      * Get most recent WeblogEntry objects across all weblogs,
      * in reverse chrono order by pubTime.
-     * @param cat      To limit results to a specific category
-     * @param offset   Offset into results (for paging)
-     * @param length   Max number of results to return
+     * @param handle    Restrict to this weblog handle (or 'nil' for all)
+     * @param userName  Restrict to this userName (or 'nil' for all)
+     * @param cat       Restrict to category (or 'nil' for all)
+     * @param offset    Offset into results (for paging)
+     * @param length    Max number of results to return
      */
-    public List getWeblogEntries(String cat, int offset, int length) {
-        return getUserWeblogEntries(null, cat, offset, length);
-    }
-    
-    /**
-     * Get most recent WeblogEntry objects across all weblogs,
-     * in reverse chrono order by pubTime.
-     * @param username   Limit entries to those created by this user
-     * @param offset     Offset into results (for paging)
-     * @param len        Max number of results to return
-     */
-    public List getUserWeblogEntries(String username, String cat, int offset, int length) {
+    public List getWeblogEntries(String handle, String userName, String cat, int sinceDays, int offset, int length) {
         List results = new ArrayList();
+        if (handle.equals(PageModel.VELOCITY_NULL)) handle = null;
+        if (userName.equals(PageModel.VELOCITY_NULL)) userName = null;
         if (cat.equals(PageModel.VELOCITY_NULL)) cat = null;
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();
         try {            
             Roller roller = RollerFactory.getRoller();
             WeblogManager wmgr = roller.getWeblogManager();
             UserManager umgr = roller.getUserManager();
-            UserData user = umgr.getUserByUsername(username);
+            WebsiteData website = null;
+            if (handle != null) {
+                website = umgr.getWebsiteByHandle(handle);
+            }
+            UserData user = null;
+            if (userName != null) {
+                user = umgr.getUserByUserName(userName);
+            }
             List entries = wmgr.getWeblogEntries( 
-                null, user, null, new Date(), cat, WeblogEntryData.PUBLISHED, "pubTime", offset, length);
+                website, user, startDate, new Date(), cat, WeblogEntryData.PUBLISHED, "pubTime", offset, length);
             for (Iterator it = entries.iterator(); it.hasNext();) {
                 WeblogEntryData entry = (WeblogEntryData) it.next();
                 results.add(WeblogEntryDataWrapper.wrap(entry));
@@ -145,20 +166,24 @@
         }
         return results;
     }
-    
+        
     /**
      * Get most recent Comment objects across all weblogs,
      * in reverse chrono order by postTime.
      * @param offset   Offset into results (for paging)
      * @param len      Max number of results to return
      */
-    public List getComments(int offset, int length) {
+    public List getComments(int sinceDays, int offset, int length) {
         List results = new ArrayList();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.add(Calendar.DATE, -1 * sinceDays);
+        Date startDate = cal.getTime();
         try {            
             Roller roller = RollerFactory.getRoller();
             WeblogManager wmgr = roller.getWeblogManager();
-            List entries = wmgr.getComments(
-                null, null, null, null, new Date(), 
+            List entries = wmgr.getComments( 
+                null, null, null, startDate, new Date(), 
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, true, offset, length);
             for (Iterator it = entries.iterator(); it.hasNext();) {
                 CommentData comment = (CommentData) it.next();
@@ -175,7 +200,7 @@
      * @param offset   Offset into results (for paging)
      * @param len      Max number of results to return
      */
-    public List getUsers(int offset, int length) {
+    public List getUsers(int sinceDays, int offset, int length) {
         List results = new ArrayList();
         try {            
             Roller roller = RollerFactory.getRoller();
@@ -215,7 +240,7 @@
         try {            
             Roller roller = RollerFactory.getRoller();
             UserManager umgr = roller.getUserManager();
-            UserData user = umgr.getUserByUsername(username, Boolean.TRUE);
+            UserData user = umgr.getUserByUserName(username, Boolean.TRUE);
             wrappedUser = UserDataWrapper.wrap(user);
         } catch (Exception e) {
             log.error("ERROR: fetching users by letter", e);
@@ -242,12 +267,12 @@
      * containing integers reflecting the number of users whose
      * names start with each letter.
      */
-    public Map getUsernameLetterMap() {
+    public Map getUserNameLetterMap() {
         Map results = new HashMap();
         try {            
             Roller roller = RollerFactory.getRoller();
             UserManager umgr = roller.getUserManager();
-            results = umgr.getUsernameLetterMap();
+            results = umgr.getUserNameLetterMap();
         } catch (Exception e) {
             log.error("ERROR: fetching username letter map", e);
         }
@@ -255,12 +280,13 @@
     }
     
     /** Get collection of users whose names begin with specified letter */
-    public List getUsersByLetter(char letter, int offset, int length) {
+    public List getUsersByLetter(String letter, int offset, int length) {
         List results = new ArrayList();
+        letter = letter.toUpperCase();
         try {            
             Roller roller = RollerFactory.getRoller();
             UserManager umgr = roller.getUserManager();
-            List users = umgr.getUsersByLetter(letter, offset, length);
+            List users = umgr.getUsersByLetter(letter.charAt(0), offset, length);
             for (Iterator it = users.iterator(); it.hasNext();) {
                 UserData user = (UserData) it.next();
                 results.add(UserDataWrapper.wrap(user));
@@ -289,12 +315,13 @@
     }
     
     /** Get collection of weblogs whose handles begin with specified letter */
-    public List getWeblogsByLetter(char letter, int offset, int length) {
+    public List getWeblogsByLetter(String letter, int offset, int length) {
         List results = new ArrayList();
+        letter = letter.toUpperCase();
         try {            
             Roller roller = RollerFactory.getRoller();
             UserManager umgr = roller.getUserManager();
-            List weblogs = umgr.getWeblogsByLetter(letter, offset, length);
+            List weblogs = umgr.getWeblogsByLetter(letter.charAt(0), offset, length);
             for (Iterator it = weblogs.iterator(); it.hasNext();) {
                 WebsiteData website = (WebsiteData) it.next();
                 results.add(WebsiteDataWrapper.wrap(website));

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java Thu Jun  1 12:43:16 2006
@@ -45,7 +45,7 @@
      */
     protected void verifyUser() throws HandlerException {
         try {
-            UserData user = getRoller().getUserManager().getUserByUsername(getUserName());
+            UserData user = getRoller().getUserManager().getUserByUserName(getUserName());
             if (user != null && user.hasRole("admin") && user.getEnabled().booleanValue()) {
                 // success! no exception
             } else {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java Thu Jun  1 12:43:16 2006
@@ -54,7 +54,7 @@
                     int p = userPass.indexOf(":");
                     if (p != -1) {
                         userName = userPass.substring(0, p);
-                        UserData user = getRoller().getUserManager().getUserByUsername(userName);
+                        UserData user = getRoller().getUserManager().getUserByUserName(userName);
                         if (user == null) {
                             throw new UnauthorizedException("ERROR: User does not exist: " + userName);
                         }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java Thu Jun  1 12:43:16 2006
@@ -177,7 +177,7 @@
                 if (wd == null) {
                     throw new NotFoundException("ERROR: Unknown weblog handle: " + handle);
                 }
-                UserData ud = getRoller().getUserManager().getUserByUsername(username);
+                UserData ud = getRoller().getUserManager().getUserByUserName(username);
                 if (ud == null) {
                     throw new NotFoundException("ERROR: Unknown user name: " + username);
                 }
@@ -280,7 +280,7 @@
     private PermissionsData toPermissionsData(MemberEntry entry) throws HandlerException {
         try {
             UserManager mgr = getRoller().getUserManager();
-            UserData ud = mgr.getUserByUsername(entry.getName());
+            UserData ud = mgr.getUserByUserName(entry.getName());
             WebsiteData wd = mgr.getWebsiteByHandle(entry.getHandle());
             PermissionsData pd = new PermissionsData();
             pd.setUser(ud);
@@ -301,7 +301,7 @@
     private PermissionsData getPermissionsData(String handle, String username) throws HandlerException {
         try {
             UserManager mgr = getRoller().getUserManager();
-            UserData ud = mgr.getUserByUsername(username);
+            UserData ud = mgr.getUserByUserName(username);
             WebsiteData wd = mgr.getWebsiteByHandle(handle);
             PermissionsData pd = mgr.getPermissions(wd, ud);
             
@@ -340,7 +340,7 @@
         // TODO: does the permissions data need to be invalidated?
         
         try {
-            UserData ud = getRoller().getUserManager().getUserByUsername(entry.getName());
+            UserData ud = getRoller().getUserManager().getUserByUserName(entry.getName());
             CacheManager.invalidate(ud);
             WebsiteData wd = getRoller().getUserManager().getWebsiteByHandle(entry.getHandle());
             CacheManager.invalidate(wd);
@@ -375,7 +375,7 @@
             UserManager mgr = getRoller().getUserManager();
             mgr.removePermissions(pd);
             
-            UserData ud = getRoller().getUserManager().getUserByUsername(username);
+            UserData ud = getRoller().getUserManager().getUserByUserName(username);
             CacheManager.invalidate(ud);
             WebsiteData wd = getRoller().getUserManager().getWebsiteByHandle(handle);
             CacheManager.invalidate(wd);

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java Thu Jun  1 12:43:16 2006
@@ -102,7 +102,7 @@
     
     private EntrySet getEntry() throws HandlerException {
         try {
-            UserData ud = getRoller().getUserManager().getUserByUsername(getUri().getEntryId());
+            UserData ud = getRoller().getUserManager().getUserByUserName(getUri().getEntryId());
             if (ud == null) {
                 throw new NotFoundException("ERROR: Unknown user: " + getUri().getEntryId());
             }
@@ -183,7 +183,7 @@
             List userDatas = new ArrayList();
             for (int i = 0; i < c.getEntries().length; i++) {
                 UserEntry entry = (UserEntry)c.getEntries()[i];
-                UserData ud = mgr.getUserByUsername(entry.getName());
+                UserData ud = mgr.getUserByUserName(entry.getName());
                 if (ud == null) {
                     throw new NotFoundException("ERROR: Unknown user: " + entry.getName());
                 }
@@ -223,7 +223,7 @@
     private EntrySet deleteEntry() throws HandlerException {
         try {
             UserManager mgr = getRoller().getUserManager();
-            UserData ud = mgr.getUserByUsername(getUri().getEntryId());
+            UserData ud = mgr.getUserByUserName(getUri().getEntryId());
             
             if (ud == null) {
                 throw new NotFoundException("ERROR: Unknown user: " + getUri().getEntryId());

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java?rev=410925&r1=410924&r2=410925&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java Thu Jun  1 12:43:16 2006
@@ -177,7 +177,7 @@
             List websiteDatas = new ArrayList();
             for (int i = 0; i < c.getEntries().length; i++) {
                 WeblogEntry entry = (WeblogEntry)c.getEntries()[i];
-                UserData user = mgr.getUserByUsername(entry.getCreatingUser());
+                UserData user = mgr.getUserByUserName(entry.getCreatingUser());
                 WebsiteData wd = new WebsiteData(
                         entry.getHandle(),
                         user,



Re: svn commit: r410925 [1/2] - in /incubator/roller/branches/roller_3.0: src/org/apache/roller/business/ src/org/apache/roller/business/hibernate/ src/org/apache/roller/config/ src/org/apache/roller/model/ src/org/apache/roller/pojos/ src/org/apache/rolle...

Posted by Allen Gilliland <al...@sun.com>.
Dave,

I'm just taking a peak through this stuff right now and I have a few 
comments/concerns ...

1. I noticed you setup the PermissionsData pojo to make it available in 
the velocity context, but I am wondering if we can try and avoid that. 
That object doesn't actually contain any information that should be used 
at rendering time and I think it would be best to not make it available 
in the rendering context.  Why is this needed?  It appears that the 
methods that return the wrapped PermissionsData are supposed to return 
either Users or Weblogs.

2. Can rename the default PageModel to WeblogPageModel since that is 
more descriptive.

3. I noticed that you altered that absoulte site url handling a bit and 
i think that's a good thing, but I want to make sure we are doing it 
carefully.  I saw that you were removing the old way of 
$absBaseURL$entry.permaLink and changing that to just $entry.permaLink, 
but that would cause problems for existing blogs right?  Existing blogs 
are probably counting on $absBaseURL being valid, so we can't remove 
that field, and we also can't change the behavior of $entry.permaLink 
since that would also break links.  We may need to simply add a new 
method like $entry.permalink (notice the lower case l) to keep them 
separate.

4. I see some new interfaces which are inner classes of the WeblogEntry 
interface.  We've talked about the WeblogEntry interface before and I am 
still not convinced this is necessary design decision.  However, I feel 
even more strongly about the other interfaces that you added on top of 
that.  What is the need for those interfaces and why are they inner 
classes of the WeblogEntry interface?  I don't see the need for any of 
these interfaces and to me they only seem to be complicating things.

-- Allen


snoopdave@apache.org wrote:
> Author: snoopdave
> Date: Thu Jun  1 12:43:16 2006
> New Revision: 410925
> 
> URL: http://svn.apache.org/viewvc?rev=410925&view=rev
> Log:
> Ongoing Atlas frontpage dev: page models and query refinements
> 
> Added:
>     incubator/roller/branches/roller_3.0/web/WEB-INF/classes/error-page.vm
> Modified:
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java
>     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/config/RollerConfig.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.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/src/org/apache/roller/pojos/PlanetEntryData.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/xmlrpc/BaseAPIHandler.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/xmlrpc/BloggerAPIHandler.java
>     incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/xmlrpc/MetaWeblogAPIHandler.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/PlanetManagerLocalTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/PlanetManagerTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/RefererTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/UserTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogEntryTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/business/WeblogStatsTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/ui/authoring/struts/actions/BookmarksActionTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/ui/authoring/struts/actions/WeblogEntryActionTest.java
>     incubator/roller/branches/roller_3.0/tests/org/apache/roller/ui/rendering/velocity/ExportRssTest.java
>     incubator/roller/branches/roller_3.0/web/WEB-INF/classes/comments.vm
>     incubator/roller/branches/roller_3.0/web/WEB-INF/classes/flavors/atom.vm
>     incubator/roller/branches/roller_3.0/web/WEB-INF/classes/flavors/rss.vm
>     incubator/roller/branches/roller_3.0/web/WEB-INF/classes/weblog.vm
>     incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/admin/main.jsp
>     incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/authoring/CommentManagement.jsp
>     incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/authoring/WeblogEntryManagement.jsp
>     incubator/roller/branches/roller_3.0/web/WEB-INF/jsps/tiles/searchResults.jsp
>     incubator/roller/branches/roller_3.0/web/WEB-INF/velocity.properties
>     incubator/roller/branches/roller_3.0/web/themes/sotto/_day.vm
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java Thu Jun  1 12:43:16 2006
> @@ -195,7 +195,7 @@
>          Map themes = new HashMap();
>          
>          // NOTE: we need to figure out how to get the roller context path
> -        String themespath = RollerConfig.getProperty("context.realpath");
> +        String themespath = RollerConfig.getProperty("context.realPath");
>          if(themespath.endsWith(File.separator))
>              themespath += "themes";
>          else
> 
> 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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
> @@ -282,16 +282,17 @@
>          }
>      }    
>     
> -    public synchronized List getAggregation(int offset, int len) 
> +    public synchronized List getAggregation(Date startDate, Date endDate, int offset, int len) 
>          throws RollerException {
> -        return getAggregation(null, offset, len);
> +        return getAggregation(null, startDate, endDate, offset, len);
>      } 
>      
>      public synchronized List getAggregation(
> -        PlanetGroupData group, int offset, int length)
> +        PlanetGroupData group, Date startDate, Date endDate, int offset, int length)
>          throws RollerException {
>          // TODO: ATLAS getAggregation DONE TESTED
>          List ret = null;
> +        if (endDate == null) endDate = new Date();
>          try {
>              String groupHandle = (group == null) ? NO_GROUP : group.getHandle();
>              long startTime = System.currentTimeMillis();
> @@ -299,23 +300,40 @@
>                      ((HibernatePersistenceStrategy)strategy).getSession();
>              
>              if (group != null) {
> -                Query query = session.createQuery(
> -                    "select entry from org.apache.roller.pojos.PlanetEntryData entry "
> -                    +"join entry.subscription.groupSubscriptionAssocs assoc "
> -                    +"where assoc.group=:group order by entry.pubTime desc");
> +                StringBuffer sb = new StringBuffer();
> +                sb.append("select entry from org.apache.roller.pojos.PlanetEntryData entry ");
> +                sb.append("join entry.subscription.groupSubscriptionAssocs assoc ");
> +                sb.append("where assoc.group=:group and entry.pubTime < :endDate ");
> +                if (startDate != null) {
> +                    sb.append("and entry.pubTime > :startDate ");
> +                }
> +                sb.append("order by entry.pubTime desc");
> +                Query query = session.createQuery(sb.toString());
>                  query.setEntity("group", group);
>                  query.setFirstResult(offset);
>                  query.setMaxResults(length);
> +                query.setParameter("endDate", endDate);
> +                if (startDate != null) {
> +                    query.setParameter("startDate", startDate);
> +                }
>                  ret = query.list();
>              } else {
> -                Query query = session.createQuery(
> -                    "select entry from org.apache.roller.pojos.PlanetEntryData entry "
> -                    +"join entry.subscription.groupSubscriptionAssocs assoc "
> -                    +"where "
> -                    +"assoc.group.handle='external' or assoc.group.handle='all'"
> -                    +" order by entry.pubTime desc");
> +                StringBuffer sb = new StringBuffer();
> +                sb.append("select entry from org.apache.roller.pojos.PlanetEntryData entry ");
> +                sb.append("join entry.subscription.groupSubscriptionAssocs assoc ");
> +                sb.append("where (assoc.group.handle='external' or assoc.group.handle='all') ");
> +                sb.append("and entry.pubTime < :endDate ");
> +                if (startDate != null) {
> +                    sb.append("and entry.pubTime > :startDate ");
> +                }
> +                sb.append("order by entry.pubTime desc");
> +                Query query = session.createQuery(sb.toString());
>                  query.setFirstResult(offset);
>                  query.setMaxResults(length);
> +                query.setParameter("endDate", endDate);
> +                if (startDate != null) {
> +                    query.setParameter("startDate", startDate);
> +                }
>                  ret = query.list();
>              }
>              Date retLastUpdated = null;
> 
> 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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
> @@ -22,6 +22,7 @@
>  
>  import java.text.SimpleDateFormat;
>  import java.util.ArrayList;
> +import java.util.Calendar;
>  import java.util.Date;
>  import java.util.Iterator;
>  import java.util.List;
> @@ -266,14 +267,19 @@
>          // TODO: ATLAS getDaysPopularWebsites DONE TESTED
>          String msg = "Getting hot weblogs";
>          ArrayList result = new ArrayList();
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();
>          try {      
>              Session session = 
>                  ((HibernatePersistenceStrategy)strategy).getSession();            
>              Query query = session.createQuery(
>                  "select sum(r.dayHits) as s, w.id, w.name, w.handle  "
>                 +"from WebsiteData w, RefererData r "
> -               +"where r.website=w and w.enabled=true and w.active=true "
> +               +"where r.website=w and w.enabled=true and w.active=true and w.lastModified > :startDate"
>                 +"group by w.name, w.handle, w.id order by col_0_0_ desc"); 
> +            query.setParameter("startDate", startDate);
>              
>                // +"group by w.name, w.handle, w.id order by s desc");
>                // The above would be *much* better but "HQL parser does not   
> @@ -310,7 +316,7 @@
>      /**
>       * @deprecated Replaced by getHotWeblogs().
>       */
> -    public List getDaysPopularWebsites(int sinceDays, int offset, int length) 
> +    public List getDaysPopularWebsites(int offset, int length) 
>          throws RollerException {
>          // TODO: ATLAS getDaysPopularWebsites DONE TESTED
>          String msg = "Getting popular websites";
> 
> 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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
> @@ -19,11 +19,13 @@
>  package org.apache.roller.business.hibernate;
>  
>  import java.util.ArrayList;
> +import java.util.Date;
>  import java.util.HashMap;
>  import java.util.Hashtable;
>  import java.util.Iterator;
>  import java.util.List;
>  import java.util.Map;
> +import java.util.TreeMap;
>  import org.apache.roller.pojos.StatCount;
>  import org.hibernate.Criteria;
>  import org.hibernate.HibernateException;
> @@ -226,8 +228,8 @@
>              adminUser = true;
>          }
>          
> -        if(getUserByUsername(newUser.getUserName()) != null ||
> -                getUserByUsername(newUser.getUserName().toLowerCase()) != null) {
> +        if(getUserByUserName(newUser.getUserName()) != null ||
> +                getUserByUserName(newUser.getUserName().toLowerCase()) != null) {
>              throw new RollerException("error.add.user.userNameInUse");
>          }
>          
> @@ -446,9 +448,10 @@
>       * Get websites of a user
>       */
>      public List getWebsites(
> -        UserData user, Boolean enabled, Boolean active, int offset, int length)  
> +        UserData user, Boolean enabled, Boolean active, Date startDate, Date endDate, int offset, int length)  
>          throws RollerException {
>          // TODO: ATLAS getWebsites DONE TESTED
> +        if (endDate == null) endDate = new Date();
>          try {
>              Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
>              Criteria criteria = session.createCriteria(WebsiteData.class);
> @@ -456,7 +459,10 @@
>                  criteria.createAlias("permissions","permissions");
>                  criteria.add(Expression.eq("permissions.user", user));
>                  criteria.add(Expression.eq("permissions.pending", Boolean.FALSE));
> -            }
> +            }            criteria.add(Expression.lt("dateCreated", endDate));
> +            if (startDate != null) {
> +                criteria.add(Expression.gt("dateCreated", startDate));
> +            }            
>              if (enabled != null) {
>                  criteria.add(Expression.eq("enabled", enabled));
>              }
> @@ -480,11 +486,11 @@
>          return (UserData)this.strategy.load(id,UserData.class);
>      }
>          
> -    public UserData getUserByUsername(String userName) throws RollerException {
> -        return getUserByUsername(userName, Boolean.TRUE);
> +    public UserData getUserByUserName(String userName) throws RollerException {
> +        return getUserByUserName(userName, Boolean.TRUE);
>      }
>      
> -    public UserData getUserByUsername(String userName, Boolean enabled)
> +    public UserData getUserByUserName(String userName, Boolean enabled)
>      throws RollerException {
>          
>          if (userName==null )
> @@ -538,14 +544,18 @@
>      }
>      
>      public List getUsers(int offset, int length) throws RollerException {
> -        return getUsers(Boolean.TRUE, offset, length);
> +        return getUsers(Boolean.TRUE, null, null, offset, length);
>      }
>      
> -    public List getUsers(Boolean enabled, int offset, int length) throws RollerException {
> -        
> +    public List getUsers(Boolean enabled, Date startDate, Date endDate, int offset, int length) throws RollerException {
> +        if (endDate == null) endDate = new Date();
>          try {
>              Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
>              Criteria criteria = session.createCriteria(UserData.class);
> +            criteria.add(Expression.lt("dateCreated", endDate));
> +            if (startDate != null) {
> +                criteria.add(Expression.gt("dateCreated", startDate));
> +            }
>              if (enabled != null) {
>                  criteria.add(Expression.eq("enabled", enabled));
>              }
> @@ -789,17 +799,17 @@
>      
>      public void release() {}
>      
> -    public Map getUsernameLetterMap() throws RollerException {
> -        // TODO: ATLAS getUsernameLetterMap DONE TESTED
> +    public Map getUserNameLetterMap() throws RollerException {
> +        // TODO: ATLAS getUserNameLetterMap DONE TESTED
>          String msg = "Getting username letter map";
>          try {      
> -            String lc = "abcdefghijklmnopqrstuvwxyz";
> -            Map results = new HashMap();
> +            String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
> +            Map results = new TreeMap();
>              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)+"%'");
> +                    "select count(user) from UserData user where upper(user.userName) like '"+lc.charAt(i)+"%'");
>                  List row = query.list();
>                  Integer count = (Integer)row.get(0);
>                  if (count.intValue() > 0) {
> @@ -820,6 +830,7 @@
>              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.addOrder(Order.asc("userName"));
>              if (offset != 0) {
>                  criteria.setFirstResult(offset);
>              }
> @@ -836,18 +847,16 @@
>          // TODO: ATLAS getWeblogHandleLetterMap DONE
>          String msg = "Getting weblog letter map";
>          try {      
> -            String lc = "abcdefghijklmnopqrstuvwxyz";
> -            Map results = new HashMap();
> +            String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
> +            Map results = new TreeMap();
>              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)+"%'");
> +                    "select count(website) from WebsiteData website where upper(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);
> -                }
> +                results.put(new String(new char[]{lc.charAt(i)}), count);
>              }
>              return results;
>          } catch (Throwable pe) {
> @@ -863,6 +872,7 @@
>              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.addOrder(Order.asc("handle"));
>              if (offset != 0) {
>                  criteria.setFirstResult(offset);
>              }
> @@ -875,17 +885,26 @@
>          }
>      }
>          
> -    public List getMostCommentedWebsites(int sinceDays, int offset, int length) 
> +    public List getMostCommentedWebsites(Date startDate, Date endDate, int offset, int length) 
>          throws RollerException {
>          // TODO: ATLAS getMostCommentedWebsites DONE TESTED
>          String msg = "Getting most commented websites";
> +        if (endDate == null) endDate = new Date();
>          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");
> +            StringBuffer sb = new StringBuffer();
> +            sb.append("select count(distinct c), c.weblogEntry.website.id, c.weblogEntry.website.name, c.weblogEntry.website.description ");
> +            sb.append("from CommentData c where c.weblogEntry.pubTime < :endDate ");
> +            if (startDate != null) {
> +                sb.append("and c.weblogEntry.pubTime > :startDate ");
> +            }  
> +            sb.append("group by c.weblogEntry.website.id, c.weblogEntry.website.name, c.weblogEntry.website.description order by col_0_0_ desc");
> +            Query query = session.createQuery(sb.toString());
> +            query.setParameter("endDate", endDate);
> +            if (startDate != null) {
> +                query.setParameter("startDate", startDate);
> +            }   
>              if (offset != 0) {
>                  query.setFirstResult(offset);
>              }
> 
> 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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
> @@ -1016,25 +1016,43 @@
>      }
>      
>      public List getMostCommentedWeblogEntries(
> -            WebsiteData website, int sinceDays, int offset, int length) 
> +            WebsiteData website, Date startDate, Date endDate, int offset, int length) 
>              throws RollerException {
>          // TODO: ATLAS getMostCommentedWeblogEntries DONE
>          String msg = "Getting most commented weblog entres";
> +        if (endDate == null) endDate = new Date();
>          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");
> +                StringBuffer sb = new StringBuffer();
> +                sb.append("select count(distinct c), c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title from CommentData c ");
> +                sb.append("where c.weblogEntry.website=:website and c.weblogEntry.pubTime < :endDate ");
> +                if (startDate != null) {
> +                    sb.append("and c.weblogEntry.pubTime > :startDate ");
> +                }                   
> +                sb.append("group by c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title ");
> +                sb.append("order by col_0_0_ desc");
> +                query = session.createQuery(sb.toString());
>                  query.setParameter("website", website);
> +                query.setParameter("endDate", endDate);
> +                if (startDate != null) {
> +                    query.setParameter("startDate", startDate);
> +                }   
>              } 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");
> +                StringBuffer sb = new StringBuffer();
> +                sb.append("select count(distinct c), c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title ");
> +                sb.append("from CommentData c group by c.weblogEntry.id, c.weblogEntry.anchor, c.weblogEntry.title ");
> +                sb.append("where c.weblogEntry.pubTime < :endDate ");
> +                if (startDate != null) {
> +                    sb.append("and c.weblogEntry.pubTime > :startDate ");
> +                } 
> +                sb.append("order by col_0_0_ desc");
> +                query = session.createQuery(sb.toString());
> +                if (startDate != null) {
> +                    query.setParameter("startDate", startDate);
> +                }   
>              }
>              if (offset != 0) {
>                  query.setFirstResult(offset);
> @@ -1127,4 +1145,5 @@
>              log.error("EXCEPTION applying comment defaults",e);
>          }
>      }     
> +
>  }
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/config/RollerConfig.java Thu Jun  1 12:43:16 2006
> @@ -35,7 +35,7 @@
>   * @author Allen Gilliland
>   */
>  public class RollerConfig {
> -
> +    
>      private static String default_config = "/roller.properties";
>      private static String custom_config = "/roller-custom.properties";
>      private static String custom_jvm_param = "roller.custom.config";
> @@ -46,12 +46,11 @@
>      private static Log mLogger =
>              LogFactory.getFactory().getInstance(RollerConfig.class);
>  
> -
>      /*
> -    * Static block run once at class loading
> -    *
> -    * We load the default properties and any custom properties we find
> -    */
> +     * Static block run once at class loading
> +     *
> +     * We load the default properties and any custom properties we find
> +     */
>      static {
>          mConfig = new Properties();
>  
> @@ -137,10 +136,9 @@
>  
>      /**
>       * Retrieve a property value
> -     *
>       * @param     key Name of the property
>       * @return    String Value of property requested, null if not found
> -     **/
> +     */
>      public static String getProperty(String key) {
>          mLogger.debug("Fetching property ["+key+"="+mConfig.getProperty(key)+"]");
>          return mConfig.getProperty(key);
> @@ -149,7 +147,7 @@
>  
>      /**
>       * Retrieve a property as a boolean ... defaults to false if not present.
> -     **/
> +     */
>      public static boolean getBooleanProperty(String name) {
>          return getBooleanProperty(name,false);
>      }
> @@ -169,7 +167,7 @@
>  
>      /**
>       * Retrieve a property as an int ... defaults to 0 if not present.
> -     **/
> +     */
>      public static int getIntProperty(String name) {
>          return getIntProperty(name, 0);
>      }
> @@ -189,21 +187,31 @@
>  
>      /**
>       * Retrieve all property keys
> -     *
>       * @return Enumeration A list of all keys
>       **/
>      public static Enumeration keys() {
>          return mConfig.keys();
>      }
> -
> +   
> +    /**
> +     * Set the "context.absPath" property at runtime.
> +     * <p />
> +     * Properties are meant to be read-only, but we make this exception because 
> +     * Roller POJOs and backend classes need access to the 
> +     * <p />
> +     * This property is *not* persisted in any way.
> +     */
> +    public static void setAbsoluteContextPath(String path) {
> +        mConfig.setProperty("context.absPath", path);
> +    }
>  
>      /**
>       * Set the "uploads.dir" property at runtime.
> -     *
> -     * Properties are meant to be read-only, but we make this exception because we 
> -     * know that some people are still writing their uploads to the webapp context 
> -     * and we can only get that path at runtime (and for unit testing).
> -     * 
> +     * <p />
> +     * Properties are meant to be read-only, but we make this exception because  
> +     * we know that some people are still writing their uploads to the webapp  
> +     * context and we can only get that path at runtime (and for unit testing).
> +     * <p />
>       * This property is *not* persisted in any way.
>       */
>      public static void setUploadsDir(String path) {
> @@ -213,24 +221,24 @@
>      }
>  
>      /**
> -     * Set the "context.realpath" property at runtime.
> -     *
> -     * Properties are meant to be read-only, but we make this  exception because 
> -     * there are some classes which rely on having filesystem access to files in the 
> -     * roller webapp context (and for unit testing).
> -     *
> +     * Set the "context.realPath" property at runtime.
> +     * <p />
> +     * Properties are meant to be read-only, but we make this exception because 
> +     * there are some classes which rely on having filesystem access to files
> +     * in theRoller webapp context (and for unit testing).
> +     * <p />
>       * This property is *not* persisted in any way.
>       */
>      public static void setContextRealPath(String path) {
> -        mConfig.setProperty("context.realpath", path);
> +        mConfig.setProperty("context.realPath", path);
>      }
>      
>      /**
>       * Set the "context.realpath" property at runtime.
> -     *
> -     * Properties are meant to be read-only, but we make this exception to make it
> -     * possible for unit tests to control the cache directory.
> -     *
> +     * <p />
> +     * Properties are meant to be read-only, but we make this exception to make 
> +     * it possible for unit tests to control the cache directory.
> +     * <p />
>       * This property is *not* persisted in any way.
>       */
>      public static void setPlanetCachePath(String path) {
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/model/PlanetManager.java Thu Jun  1 12:43:16 2006
> @@ -134,14 +134,16 @@
>       * @param len       Maximum number of results to return (for paging) 
>       */
>      public List getAggregation(
> -        PlanetGroupData group, int offset, int len) throws RollerException;
> +            PlanetGroupData group, Date startDate, Date endDate, 
> +            int offset, int len) throws RollerException;
>      
>      /** 
>       * Get agggration from cache, enries in reverse chonological order.
>       * @param offset    Offset into results (for paging)
>       * @param len       Maximum number of results to return (for paging)
>       */
> -    public List getAggregation(int offset, int len) throws RollerException;
> +    public List getAggregation(Date startDate, Date endDate, 
> +            int offset, int len) throws RollerException;
>      
>      //------------------------------------------------------------------ update
>      
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/model/RefererManager.java Thu Jun  1 12:43:16 2006
> @@ -79,12 +79,13 @@
>      
>      /**
>       * Get most popular websites based on referer day hits.
> -     * @param sinceDays Restrict to last X days (or -1 for all)
>       * @param offset    Offset into results (for paging)
>       * @param len       Maximum number of results to return (for paging)
>       * @return List of WebsiteDisplayData objects.
>       */
> -    public List getDaysPopularWebsites(int sinceDays, int offset, int length) 
> +    public List getDaysPopularWebsites(
> +            int offset, 
> +            int length) 
>          throws RollerException;   
>      
>      /**
> 
> 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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
> @@ -18,6 +18,7 @@
>  
>  package org.apache.roller.model;
>  
> +import java.util.Date;
>  import java.util.List;
>  import java.util.Map;
>  import org.apache.roller.RollerException;
> @@ -57,12 +58,12 @@
>      /** 
>       * Get user object by user name (only enabled users) 
>       */
> -    public UserData getUserByUsername(String userName) throws RollerException;    
> +    public UserData getUserByUserName(String userName) throws RollerException;    
>      
>      /** 
>       * Get user object by user name, optionally include dis-enabled users 
>       */
> -    public UserData getUserByUsername(String userName, Boolean enabled) 
> +    public UserData getUserByUserName(String userName, Boolean enabled) 
>              throws RollerException;    
>      
>      /** 
> @@ -72,10 +73,16 @@
>      
>      /**
>       * Get all users, optionally include dis-enabled users.
> -     *
>       * @param enabled True for enabled only, false for disabled only, null for all
> +     * @param startDate Restrict to those created after (or null for all)
> +     * @param endDate Restrict to those created before (or null for all)
>       */
> -    public List getUsers(Boolean enabled, int offset, int length) throws RollerException;    
> +    public List getUsers(
> +        Boolean enabled, 
> +        Date    startDate,
> +        Date    endDate,
> +        int     offset, 
> +        int     length) throws RollerException;    
>      
>      /**
>       * Get all users or a website.
> @@ -83,7 +90,11 @@
>       * @param website Get all users of this website (or null for all)
>       * @returns List of UserData objects.
>       */
> -    public List getUsers(WebsiteData website, Boolean enabled, int offset, int length) throws RollerException;
> +    public List getUsers(
> +        WebsiteData website, 
> +        Boolean enabled, 
> +        int offset, 
> +        int length) throws RollerException;
>          
>      /**
>       * Returns users whose usernames or email addresses start with a string.
> @@ -101,7 +112,7 @@
>       * containing integers reflecting the number of users whose
>       * names start with each letter.
>       */
> -    public Map getUsernameLetterMap() throws RollerException;
> +    public Map getUserNameLetterMap() throws RollerException;
>      
>      /** Get collection of users whose names begin with specified letter */
>      public List getUsersByLetter(char letter, int offset, int length) throws RollerException;
> @@ -158,21 +169,34 @@
>       * @param len     Maximum number of results to return (for paging)
>       * @param enabled Get all with this enabled state (or null or all)
>       * @param active  Get all with this active state (or null or all)
> +     * @param startDate Restrict to those created after (or null for all)
> +     * @param endDate Restrict to those created before (or null for all)
>       * @returns List of WebsiteData objects.
>       */
>      public List getWebsites(
> -            UserData user, Boolean enabled, Boolean active, int offset, int length) 
> -            throws RollerException;
> +        UserData user, 
> +        Boolean  enabled, 
> +        Boolean  active, 
> +        Date     startDate, 
> +        Date     endDate, 
> +        int      offset, 
> +        int      length) 
> +        throws RollerException;
>      
>      /**
>       * Get websites ordered by descending number of comments.
> -     * @param sinceDays Restrict to last X days (or -1 for all)
> +     * @param startDate Restrict to those created after (or null for all)
> +     * @param endDate Restrict to those created before (or null for all)
>       * @param offset    Offset into results (for paging)
>       * @param len       Maximum number of results to return (for paging)
>       * @returns List of WebsiteData objects.
>       */
> -    public List getMostCommentedWebsites(int sinceDays, int offset, int length) 
> -            throws RollerException;
> +    public List getMostCommentedWebsites(
> +        Date startDate, 
> +        Date endDate, 
> +        int  offset, 
> +        int  length) 
> +        throws RollerException;
>      
>      /**
>       * Save permissions object.
> 
> 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=410925&r1=410924&r2=410925&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 Thu Jun  1 12:43:16 2006
> @@ -138,12 +138,15 @@
>      /** 
>       * Get weblog enties ordered by descending number of comments.
>       * @param website Restrict to only this website (or null for all)
> -     * @param sinceDays Restrict to last X days (or -1 for all)
>       * @param len       Maximum number of results to return (for paging)
>       * @returns List of WeblogEntryData objects.
>       */
>      public List getMostCommentedWeblogEntries(
> -            WebsiteData website, int sinceDays, int offset, int length)
> +            WebsiteData website,             
> +            Date        startDate,
> +            Date        endDate,
> +            int         offset, 
> +            int         length)
>              throws RollerException;
>      
>      /**
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetEntryData.java Thu Jun  1 12:43:16 2006
> @@ -95,13 +95,19 @@
>       * Init entry from Rome entry
>       */
>      private void initFromRomeEntry(SyndFeed romeFeed, SyndEntry romeEntry) {
> -        setAuthor(romeEntry.getAuthor());
>          setTitle(romeEntry.getTitle());
>          setPermaLink(romeEntry.getLink());
>          
> -        // Play some games to get the date
> +        // Play some games to get the author
>          DCModule entrydc = (DCModule)romeEntry.getModule(DCModule.URI);
>          DCModule feeddc = (DCModule)romeFeed.getModule(DCModule.URI);
> +        if (romeEntry.getAuthor() != null) {
> +            setAuthor(romeEntry.getAuthor());
> +        } else {
> +            setAuthor(entrydc.getCreator()); // use <dc:creator>
> +        }
> +        
> +        // Play some games to get the date too
>          if (romeEntry.getPublishedDate() != null) {
>              setPubTime(new Timestamp(romeEntry.getPublishedDate().getTime())); // use <pubDate>
>          } else if (entrydc != null) {
> @@ -319,6 +325,7 @@
>         
>      /**
>       * Return first entry in category collection.
> +     * @roller.wrapPojoMethod type="pojo"
>       */
>      public WeblogCategoryData getCategory() {
>          WeblogCategoryData cat = null;
> @@ -390,7 +397,16 @@
>      
>      public void setData(PersistentObject vo) {}
>  
> -     
> +    /**
> +     * Read-only synomym for getSubscription()
> +     * @roller.wrapPojoMethod type="pojo"
> +     */
> +    public PlanetSubscriptionData getWebsite() {
> +        return this.subscription;        
> +    }
> +    public void setWebsite() {
> +        // noop
> +    }
>  }
>  
>  
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/PlanetSubscriptionData.java Thu Jun  1 12:43:16 2006
> @@ -27,7 +27,7 @@
>   * @hibernate.class lazy="false" table="rag_subscription"
>   */
>  public class PlanetSubscriptionData extends PersistentObject 
> -    implements Serializable, Comparable
> +    implements WeblogEntry.Website, Serializable, Comparable
>  {
>      /** Database ID */
>      protected String id;
> @@ -186,6 +186,25 @@
>          this.inboundblogs = inboundblogs;
>      }
>  
> +    /** 
> +     * @roller.wrapPojoMethod type="simple"
> +     */
> +    public String getName() {
> +        return title;
> +    }
> +    public void setName(String name) {
> +        title = name;
> +    }
> +    /** 
> +     * @roller.wrapPojoMethod type="simple"
> +     */
> +    public String getUrl() {
> +        return siteUrl;
> +    }
> +    public void setUrl(String url) {
> +        siteUrl = url;
> +    }
> +    
>      //-------------------------------------------------------------- implementation
>     
>      /**
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/UserData.java Thu Jun  1 12:43:16 2006
> @@ -43,7 +43,7 @@
>   */
>  public class UserData
>          extends org.apache.roller.pojos.PersistentObject
> -        implements java.io.Serializable {
> +        implements WeblogEntry.User, java.io.Serializable {
>      public static final UserData SYSTEM_USER = new UserData(
>              "n/a","systemuser","n/a","systemuser","n/a",
>              "en_US_WIN", "America/Los_Angeles", new Date(), Boolean.TRUE);
> @@ -137,6 +137,7 @@
>      /** User name of the user.
>       * @ejb:persistent-field
>       * @hibernate.property column="username" non-null="true" unique="true"
> +     * @roller.wrapPojoMethod type="simple"
>       */
>      public String getUserName() {
>          return this.userName;
> @@ -220,6 +221,7 @@
>       * Locale of the user.
>       * @ejb:persistent-field
>       * @hibernate.property column="locale" non-null="true" unique="false"
> +     * @roller.wrapPojoMethod type="simple"
>       */
>      public String getLocale() {
>          return this.locale;
> @@ -234,6 +236,7 @@
>       * Timezone of the user.
>       * @ejb:persistent-field
>       * @hibernate.property column="timeZone" non-null="true" unique="false"
> +     * @roller.wrapPojoMethod type="simple"
>       */
>      public String getTimeZone() {
>          return this.timeZone;
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogCategoryData.java Thu Jun  1 12:43:16 2006
> @@ -36,7 +36,8 @@
>   * @hibernate.class lazy="false" table="weblogcategory"
>   * @hibernate.cache usage="read-write"
>   */
> -public class WeblogCategoryData extends HierarchicalPersistentObject
> +public class WeblogCategoryData 
> +    extends HierarchicalPersistentObject implements WeblogEntry.WeblogCategory
>  {
>      public static final long serialVersionUID = 1435782148712018954L;
>  
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntry.java Thu Jun  1 12:43:16 2006
> @@ -24,7 +24,7 @@
>  /**
>   * Common weblog entry interface supported by both WeblogEntryData and 
>   * PlanetEntryData, meant primarily as documentation -- to help Roller template
> - * author's write template code that works with both blog and planet entries.
> + * author's write code that works with both blog and planet entries.
>   */
>  public interface WeblogEntry {    
>  
> @@ -68,7 +68,7 @@
>       * category information, this may be null. If there are multiple categories
>       * then the first category found is returned.
>       */
> -    public WeblogCategoryData getCategory();
> +    public WeblogCategory getCategory();
>      
>      /** 
>       * Returns collection of WeblogCategoryData objects for entry.
> @@ -79,7 +79,30 @@
>       * Returns user object of author who created post but since titles are not 
>       * required by all feed formats so this method may return null.
>       */
> -    public UserData getCreator();
> +    public User getCreator();
> +    
> +    /**
> +     * Returns website object representing site from which entry originated.
> +     */
> +    public Website getWebsite();
> +   
> +    
> +    public interface User { 
> +        /** User name of user */
> +        public String getUserName();
> +    }
> +    
> +    public interface WeblogCategory {     
> +        /** Name of category */
> +        public String getName();
> +    }
> +    
> +    public interface Website {     
> +        /** URL of website */
> +        public String getUrl();    
> +        /** Name of website */
> +        public String getName();
> +    }
>  }
>  
>  
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogEntryData.java Thu Jun  1 12:43:16 2006
> @@ -39,7 +39,7 @@
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
>  import org.apache.roller.RollerException;
> -import org.apache.roller.model.Roller;
> +import org.apache.roller.config.RollerConfig;
>  import org.apache.roller.model.RollerFactory;
>  import org.apache.roller.model.UserManager;
>  import org.apache.roller.model.WeblogManager;
> @@ -711,36 +711,18 @@
>       * @return
>       */
>      public String getPermaLink() {
> -        String lAnchor = this.getAnchor();
> -        
> +        // TODO: ATLAS reconcile entry.getPermaLink() with new URLs
> +        String lAnchor = this.getAnchor();        
>          try {
>              lAnchor = URLEncoder.encode(anchor, "UTF-8");
>          } catch (UnsupportedEncodingException e) {
>              // go with the "no encoding" version
> -        }
> -        
> +        }        
>          WebsiteData website = this.getWebsite();
> -        String plink = "/page/" + website.getHandle() +
> -                "?entry=" + lAnchor;
> -        
> +        String absContextUrl = RollerConfig.getProperty("context.absPath");
> +        String plink = 
> +          absContextUrl + "/page/" + website.getHandle() + "?entry=" + lAnchor;        
>          return plink;
> -    }
> -    
> -    /**
> -     * Get the "relative" URL to this entry.  Proper use of this will
> -     * require prepending the baseURL (either the full root
> -     * [http://server.com/context] or at least the context
> -     * [/context]) in order to generate a functional link.
> -     *
> -     * @roller.wrapPojoMethod type="simple"
> -     * @param category The category name to insert into the permalink.
> -     * @return String
> -     */
> -    public String getPermaLink(String categoryPath) {
> -        // i don't really understand the purpose of this method since
> -        // WeblogEntryData.getPermaLink() is only meant to point to this entry
> -        
> -        return this.getPermaLink();
>      }
>      
>      /**
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WebsiteData.java Thu Jun  1 12:43:16 2006
> @@ -33,6 +33,7 @@
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
>  import org.apache.roller.ThemeNotFoundException;
> +import org.apache.roller.config.RollerConfig;
>  import org.apache.roller.config.RollerRuntimeConfig;
>  import org.apache.roller.model.ThemeManager;
>  import org.apache.roller.model.UserManager;
> @@ -51,7 +52,7 @@
>   * @hibernate.cache usage="read-write"
>   */
>  public class WebsiteData extends org.apache.roller.pojos.PersistentObject
> -        implements java.io.Serializable {
> +        implements WeblogEntry.Website, java.io.Serializable {
>      public static final long serialVersionUID = 206437645033737127L;
>      
>      private static Log mLogger = LogFactory.getLog(WebsiteData.class);
> @@ -1011,6 +1012,17 @@
>      public void setLastModified(Date lastModified) {
>          this.lastModified = lastModified;
>      }
> -    
> +  
> +    /** 
> +     * @roller.wrapPojoMethod type="simple"
> +     */
> +    public String getUrl() {
> +        // TODO: ATLAS reconcile entry.getPermaLink() with new URLs
> +        String absContextUrl = RollerConfig.getProperty("context.absPath");
> +        return absContextUrl + "/page/" + getHandle();       
> +    }
> +    public void setUrl(String url) {
> +        // noop
> +    }
>  }
>  
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/PlanetAction.java Thu Jun  1 12:43:16 2006
> @@ -106,7 +106,7 @@
>           */
>          public List getAggregation(int num) throws RollerException {
>              Roller roller = RollerFactory.getRoller();
> -            return roller.getPlanetManager().getAggregation(0, num);
> +            return roller.getPlanetManager().getAggregation(null, null, 0, num);
>          }
>          /**
>           * Get named group
> @@ -129,7 +129,7 @@
>              try {
>                  Roller roller = RollerFactory.getRoller();
>                  PlanetGroupData group= roller.getPlanetManager().getGroup(name);
> -                ret = roller.getPlanetManager().getAggregation(group, 0, num);
> +                ret = roller.getPlanetManager().getAggregation(group, null, null, 0, num);
>              } catch (RollerException e) {
>                  mLogger.error(e);
>              }
> @@ -167,7 +167,7 @@
>           */
>          public List getPopularWebsites(int num) throws RollerException {
>              Roller roller = RollerFactory.getRoller();
> -            return roller.getRefererManager().getDaysPopularWebsites(-1, 0, num);
> +            return roller.getRefererManager().getDaysPopularWebsites(0, num);
>          }
>      }
>  }
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/admin/struts/actions/UserAdminAction.java Thu Jun  1 12:43:16 2006
> @@ -91,7 +91,7 @@
>                  {
>                      ActionMessages msgs = getErrors(request);
>                      msgs = (msgs == null) ? new ActionMessages() : msgs;
> -                    user = mgr.getUserByUsername(userForm.getUserName(), null);                    
> +                    user = mgr.getUserByUserName(userForm.getUserName(), null);                    
>                      if (user != null)
>                      {
>                          userForm.copyFrom(user, request.getLocale());                        
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java Thu Jun  1 12:43:16 2006
> @@ -138,7 +138,7 @@
>          ActionMessages errors = new ActionErrors();
>          InviteMemberForm form = (InviteMemberForm)actionForm;
>          UserManager umgr = RollerFactory.getRoller().getUserManager();
> -        UserData user = umgr.getUserByUsername(form.getUserName());
> +        UserData user = umgr.getUserByUserName(form.getUserName());
>          
>          BasePageModel pageModel = new BasePageModel(
>              "inviteMember.title", request, response, mapping);              
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/MainPageAction.java Thu Jun  1 12:43:16 2006
> @@ -102,7 +102,7 @@
>              List list = null;
>              mLogger.debug("Refreshing popular websites list");
>              Roller roller = RollerFactory.getRoller();
> -            list = roller.getRefererManager().getDaysPopularWebsites(-1, 0, num);
> +            list = roller.getRefererManager().getDaysPopularWebsites(0, num);
>              return list;
>          }
>          
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerContext.java Thu Jun  1 12:43:16 2006
> @@ -445,24 +445,23 @@
>      
>      /** Get absolute URL of Roller context */
>      public String getAbsoluteContextUrl(HttpServletRequest request) {
> -        
> -        String url = RollerRuntimeConfig.getProperty("site.absoluteurl");
> -        
> -        if (url == null || url.trim().length() == 0) {
> -            try {
> -                URL absURL = RequestUtils.absoluteURL(request, "/");
> -                url = absURL.toString();
> -            } catch (MalformedURLException e) {
> -                url = "/";
> -                mLogger.error("ERROR: forming absolute URL", e);
> +        String url = RollerConfig.getProperty("context.absPath");
> +        if (url == null) {
> +            url = RollerRuntimeConfig.getProperty("site.absoluteurl");
> +            if (url == null || url.trim().length() == 0) {
> +                try {
> +                    URL absURL = RequestUtils.absoluteURL(request, "/");
> +                    url = absURL.toString();
> +                } catch (MalformedURLException e) {
> +                    url = "/";
> +                    mLogger.error("ERROR: forming absolute URL", e);
> +                }
>              }
> +            if (url.endsWith("/")) {
> +                url = url.substring(0, url.length() - 1);
> +            }   
> +            RollerConfig.setAbsoluteContextPath(url);
>          }
> -        
> -        if (url.endsWith("/")) {
> -            url = url.substring(0, url.length() - 1);
> -        }
> -        
> -        mContext.setAttribute("org.apache.roller.absoluteContextURL", url);
>          return url;
>      }
>      
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerRequest.java Thu Jun  1 12:43:16 2006
> @@ -169,7 +169,7 @@
>          if (userName != null)
>          {
>              UserManager userMgr = RollerFactory.getRoller().getUserManager();
> -            UserData currentUser = userMgr.getUserByUsername(userName);
> +            UserData currentUser = userMgr.getUserByUserName(userName);
>              // TODO: possible fix for backend refactoryings
>              //RollerFactory.getRoller().setUser(currentUser);
>          }
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/core/RollerSession.java Thu Jun  1 12:43:16 2006
> @@ -81,7 +81,7 @@
>                  try 
>                  {
>                      UserManager umgr = RollerFactory.getRoller().getUserManager();
> -                    UserData user = umgr.getUserByUsername(principal.getName());
> +                    UserData user = umgr.getUserByUserName(principal.getName());
>                      // only set authenticated user if user is enabled
>                      if (user.getEnabled().booleanValue()) 
>                      {
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/filters/WeblogPageCacheFilter.java Thu Jun  1 12:43:16 2006
> @@ -233,6 +233,9 @@
>                  // categories may contain spaces, which is not desired
>                  key.append("/").append(org.apache.commons.lang.StringUtils.deleteWhitespace(cat));
>              }
> +            
> +            // TODO: ATLAS reconcile with new URL structure
> +            key.append(pageRequest.getRequest().getQueryString());
>          }
>          
>          // add page name
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java Thu Jun  1 12:43:16 2006
> @@ -546,4 +546,5 @@
>          
>          return "";
>      }
> +        
>  }
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java Thu Jun  1 12:43:16 2006
> @@ -763,6 +763,10 @@
>          return mRollerReq.getRequest().getParameter(key);
>      }
>      
> +    public int getIntRequestParameter(String key) {
> +        return Integer.parseInt(mRollerReq.getRequest().getParameter(key));
> +    }
> +    
>      //------------------------------------------------------------------------
>      
>      public FolderDataWrapper getFolderByPath(String path) {
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageServlet.java Thu Jun  1 12:43:16 2006
> @@ -19,7 +19,6 @@
>  
>  import java.io.IOException;
>  import java.io.StringWriter;
> -import java.net.SocketException;
>  import java.util.Date;
>  import java.util.Map;
>  import javax.servlet.ServletConfig;
> @@ -38,8 +37,8 @@
>  import org.apache.roller.RollerException;
>  import org.apache.roller.pojos.WeblogTemplate;
>  import org.apache.roller.pojos.WebsiteData;
> -import org.apache.roller.ui.core.InvalidRequestException;
>  import org.apache.roller.ui.core.RollerRequest;
> +import org.apache.velocity.exception.ParseErrorException;
>  
>  
>  /**
> @@ -198,14 +197,25 @@
>          
>          try {
>              outty = getTemplate(page.getId(), "UTF-8");
> -        } catch(ResourceNotFoundException ex) {
> +        } 
> +        catch (ParseErrorException parseError) {            
> +            // Error at this point indicates error in template, so let's show 
> +            // it to the template author so they can debug it.
> +            ctx.put("displayException", parseError);
> +            try {
> +                outty = getTemplate("error-page.vm", "UTF-8");
> +            } catch (Throwable totallyUnexpected) {
> +                throw new RuntimeException("ERROR parsing Velocity error page");
> +            }
> +        } 
> +        catch (ResourceNotFoundException notFound) {
>              // just rethrow
> -            throw ex;
> -        } catch(Exception ex) {
> +            throw notFound;
> +        } 
> +        catch (Exception ex) { 
>              // wrap this as a roller exception
> -            throw new RollerException("Error getting velocity template", ex);
> -        }
> -        
> +            throw new RollerException("ERROR getting velocity template", ex);            
> +        }        
>          return outty;
>      }
>      
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java Thu Jun  1 12:43:16 2006
> @@ -18,6 +18,8 @@
>  package org.apache.roller.ui.rendering.velocity;
>  
>  import java.util.ArrayList;
> +import java.util.Calendar;
> +import java.util.Date;
>  import java.util.Iterator;
>  import java.util.List;
>  import org.apache.commons.logging.Log;
> @@ -45,12 +47,16 @@
>       * @param offset   Offset into results (for paging)
>       * @param len      Max number of results to return
>       */
> -    public List getAggregation(int offset, int len) {
> +    public List getAggregation(int sinceDays, int offset, int len) {
>          List results = new ArrayList();
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();        
>          try {
>              Roller roller = RollerFactory.getRoller();
>              PlanetManager planetManager = roller.getPlanetManager();
> -            List entries = planetManager.getAggregation(offset, len);
> +            List entries = planetManager.getAggregation(startDate, null, offset, len);
>              for (Iterator it = entries.iterator(); it.hasNext();) {
>                  PlanetEntryData entry = (PlanetEntryData) it.next();
>                  PlanetEntryDataWrapper wrapped = PlanetEntryDataWrapper.wrap(entry);
> @@ -68,14 +74,18 @@
>       * @param offset   Offset into results (for paging)
>       * @param len      Max number of results to return
>       */
> -    public List getAggregation(String groupHandle, int offset, int len) {
> +    public List getAggregation(String groupHandle, int sinceDays, int offset, int len) {
>          List list = new ArrayList();
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();
>          try {
>              Roller roller = RollerFactory.getRoller();
>              PlanetManager planetManager = roller.getPlanetManager();
>              PlanetGroupData group = planetManager.getGroup(groupHandle);
>              if (group != null) {
> -                list = planetManager.getAggregation(group, offset, len);
> +                list = planetManager.getAggregation(group, startDate, null, offset, len);
>              }
>          } catch (Exception e) {
>              log.error("ERROR: get aggregation", e);
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java Thu Jun  1 12:43:16 2006
> @@ -18,6 +18,7 @@
>  package org.apache.roller.ui.rendering.velocity;
>  
>  import java.util.ArrayList;
> +import java.util.Calendar;
>  import java.util.Date;
>  import java.util.HashMap;
>  import java.util.Iterator;
> @@ -53,12 +54,17 @@
>       * @param offset   Offset into results (for paging)
>       * @param len      Max number of results to return
>       */
> -    public List getWeblogs(int offset, int length) {
> +    public List getWeblogs(int sinceDays, int offset, int length) {
>          List results = new ArrayList();
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              UserManager umgr = roller.getUserManager();
> -            List weblogs = umgr.getWebsites(null, Boolean.TRUE, Boolean.TRUE, offset, length);
> +            List weblogs = umgr.getWebsites(
> +                null, Boolean.TRUE, Boolean.TRUE, startDate, null, offset, length);
>              for (Iterator it = weblogs.iterator(); it.hasNext();) {
>                  WebsiteData website = (WebsiteData) it.next();
>                  results.add(WebsiteDataWrapper.wrap(website));
> @@ -76,12 +82,17 @@
>       * @param offset   Offset into results (for paging)
>       * @param length   Max number of results to return
>       */
> -    public List getCommentedWeblogs(int sinceDays , int offset, int length) {
> +    public List getMostCommentedWeblogs(int sinceDays , int offset, int length) {
>          List results = new ArrayList();
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              UserManager umgr = roller.getUserManager();
> -            results = umgr.getMostCommentedWebsites(Integer.MAX_VALUE, offset, length);
> +            results = umgr.getMostCommentedWebsites(
> +                    startDate, new Date(), offset, length);
>          } catch (Exception e) {
>              log.error("ERROR: fetching commented weblog list", e);
>          }
> @@ -96,12 +107,18 @@
>       * @param offset   Offset into results (for paging)
>       * @param len      Max number of results to return
>       */
> -    public List getCommentedWeblogEntries(List cats, int sinceDays, int offset, int length) {
> +    public List getMostCommentedWeblogEntries(
> +            List cats, int sinceDays, int offset, int length) {
>          List results = new ArrayList();
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              WeblogManager wmgr = roller.getWeblogManager();
> -            results = wmgr.getMostCommentedWeblogEntries(null, Integer.MAX_VALUE, offset, length);
> +            results = wmgr.getMostCommentedWeblogEntries(
> +                    null, startDate, new Date(), offset, length);
>          } catch (Exception e) {
>              log.error("ERROR: fetching commented weblog entries list", e);
>          }
> @@ -111,31 +128,35 @@
>      /**
>       * Get most recent WeblogEntry objects across all weblogs,
>       * in reverse chrono order by pubTime.
> -     * @param cat      To limit results to a specific category
> -     * @param offset   Offset into results (for paging)
> -     * @param length   Max number of results to return
> +     * @param handle    Restrict to this weblog handle (or 'nil' for all)
> +     * @param userName  Restrict to this userName (or 'nil' for all)
> +     * @param cat       Restrict to category (or 'nil' for all)
> +     * @param offset    Offset into results (for paging)
> +     * @param length    Max number of results to return
>       */
> -    public List getWeblogEntries(String cat, int offset, int length) {
> -        return getUserWeblogEntries(null, cat, offset, length);
> -    }
> -    
> -    /**
> -     * Get most recent WeblogEntry objects across all weblogs,
> -     * in reverse chrono order by pubTime.
> -     * @param username   Limit entries to those created by this user
> -     * @param offset     Offset into results (for paging)
> -     * @param len        Max number of results to return
> -     */
> -    public List getUserWeblogEntries(String username, String cat, int offset, int length) {
> +    public List getWeblogEntries(String handle, String userName, String cat, int sinceDays, int offset, int length) {
>          List results = new ArrayList();
> +        if (handle.equals(PageModel.VELOCITY_NULL)) handle = null;
> +        if (userName.equals(PageModel.VELOCITY_NULL)) userName = null;
>          if (cat.equals(PageModel.VELOCITY_NULL)) cat = null;
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              WeblogManager wmgr = roller.getWeblogManager();
>              UserManager umgr = roller.getUserManager();
> -            UserData user = umgr.getUserByUsername(username);
> +            WebsiteData website = null;
> +            if (handle != null) {
> +                website = umgr.getWebsiteByHandle(handle);
> +            }
> +            UserData user = null;
> +            if (userName != null) {
> +                user = umgr.getUserByUserName(userName);
> +            }
>              List entries = wmgr.getWeblogEntries( 
> -                null, user, null, new Date(), cat, WeblogEntryData.PUBLISHED, "pubTime", offset, length);
> +                website, user, startDate, new Date(), cat, WeblogEntryData.PUBLISHED, "pubTime", offset, length);
>              for (Iterator it = entries.iterator(); it.hasNext();) {
>                  WeblogEntryData entry = (WeblogEntryData) it.next();
>                  results.add(WeblogEntryDataWrapper.wrap(entry));
> @@ -145,20 +166,24 @@
>          }
>          return results;
>      }
> -    
> +        
>      /**
>       * Get most recent Comment objects across all weblogs,
>       * in reverse chrono order by postTime.
>       * @param offset   Offset into results (for paging)
>       * @param len      Max number of results to return
>       */
> -    public List getComments(int offset, int length) {
> +    public List getComments(int sinceDays, int offset, int length) {
>          List results = new ArrayList();
> +        Calendar cal = Calendar.getInstance();
> +        cal.setTime(new Date());
> +        cal.add(Calendar.DATE, -1 * sinceDays);
> +        Date startDate = cal.getTime();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              WeblogManager wmgr = roller.getWeblogManager();
> -            List entries = wmgr.getComments(
> -                null, null, null, null, new Date(), 
> +            List entries = wmgr.getComments( 
> +                null, null, null, startDate, new Date(), 
>                  Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, true, offset, length);
>              for (Iterator it = entries.iterator(); it.hasNext();) {
>                  CommentData comment = (CommentData) it.next();
> @@ -175,7 +200,7 @@
>       * @param offset   Offset into results (for paging)
>       * @param len      Max number of results to return
>       */
> -    public List getUsers(int offset, int length) {
> +    public List getUsers(int sinceDays, int offset, int length) {
>          List results = new ArrayList();
>          try {            
>              Roller roller = RollerFactory.getRoller();
> @@ -215,7 +240,7 @@
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              UserManager umgr = roller.getUserManager();
> -            UserData user = umgr.getUserByUsername(username, Boolean.TRUE);
> +            UserData user = umgr.getUserByUserName(username, Boolean.TRUE);
>              wrappedUser = UserDataWrapper.wrap(user);
>          } catch (Exception e) {
>              log.error("ERROR: fetching users by letter", e);
> @@ -242,12 +267,12 @@
>       * containing integers reflecting the number of users whose
>       * names start with each letter.
>       */
> -    public Map getUsernameLetterMap() {
> +    public Map getUserNameLetterMap() {
>          Map results = new HashMap();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              UserManager umgr = roller.getUserManager();
> -            results = umgr.getUsernameLetterMap();
> +            results = umgr.getUserNameLetterMap();
>          } catch (Exception e) {
>              log.error("ERROR: fetching username letter map", e);
>          }
> @@ -255,12 +280,13 @@
>      }
>      
>      /** Get collection of users whose names begin with specified letter */
> -    public List getUsersByLetter(char letter, int offset, int length) {
> +    public List getUsersByLetter(String letter, int offset, int length) {
>          List results = new ArrayList();
> +        letter = letter.toUpperCase();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              UserManager umgr = roller.getUserManager();
> -            List users = umgr.getUsersByLetter(letter, offset, length);
> +            List users = umgr.getUsersByLetter(letter.charAt(0), offset, length);
>              for (Iterator it = users.iterator(); it.hasNext();) {
>                  UserData user = (UserData) it.next();
>                  results.add(UserDataWrapper.wrap(user));
> @@ -289,12 +315,13 @@
>      }
>      
>      /** Get collection of weblogs whose handles begin with specified letter */
> -    public List getWeblogsByLetter(char letter, int offset, int length) {
> +    public List getWeblogsByLetter(String letter, int offset, int length) {
>          List results = new ArrayList();
> +        letter = letter.toUpperCase();
>          try {            
>              Roller roller = RollerFactory.getRoller();
>              UserManager umgr = roller.getUserManager();
> -            List weblogs = umgr.getWeblogsByLetter(letter, offset, length);
> +            List weblogs = umgr.getWeblogsByLetter(letter.charAt(0), offset, length);
>              for (Iterator it = weblogs.iterator(); it.hasNext();) {
>                  WebsiteData website = (WebsiteData) it.next();
>                  results.add(WebsiteDataWrapper.wrap(website));
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/Authenticator.java Thu Jun  1 12:43:16 2006
> @@ -45,7 +45,7 @@
>       */
>      protected void verifyUser() throws HandlerException {
>          try {
> -            UserData user = getRoller().getUserManager().getUserByUsername(getUserName());
> +            UserData user = getRoller().getUserManager().getUserByUserName(getUserName());
>              if (user != null && user.hasRole("admin") && user.getEnabled().booleanValue()) {
>                  // success! no exception
>              } else {
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/BasicAuthenticator.java Thu Jun  1 12:43:16 2006
> @@ -54,7 +54,7 @@
>                      int p = userPass.indexOf(":");
>                      if (p != -1) {
>                          userName = userPass.substring(0, p);
> -                        UserData user = getRoller().getUserManager().getUserByUsername(userName);
> +                        UserData user = getRoller().getUserManager().getUserByUserName(userName);
>                          if (user == null) {
>                              throw new UnauthorizedException("ERROR: User does not exist: " + userName);
>                          }
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerMemberHandler.java Thu Jun  1 12:43:16 2006
> @@ -177,7 +177,7 @@
>                  if (wd == null) {
>                      throw new NotFoundException("ERROR: Unknown weblog handle: " + handle);
>                  }
> -                UserData ud = getRoller().getUserManager().getUserByUsername(username);
> +                UserData ud = getRoller().getUserManager().getUserByUserName(username);
>                  if (ud == null) {
>                      throw new NotFoundException("ERROR: Unknown user name: " + username);
>                  }
> @@ -280,7 +280,7 @@
>      private PermissionsData toPermissionsData(MemberEntry entry) throws HandlerException {
>          try {
>              UserManager mgr = getRoller().getUserManager();
> -            UserData ud = mgr.getUserByUsername(entry.getName());
> +            UserData ud = mgr.getUserByUserName(entry.getName());
>              WebsiteData wd = mgr.getWebsiteByHandle(entry.getHandle());
>              PermissionsData pd = new PermissionsData();
>              pd.setUser(ud);
> @@ -301,7 +301,7 @@
>      private PermissionsData getPermissionsData(String handle, String username) throws HandlerException {
>          try {
>              UserManager mgr = getRoller().getUserManager();
> -            UserData ud = mgr.getUserByUsername(username);
> +            UserData ud = mgr.getUserByUserName(username);
>              WebsiteData wd = mgr.getWebsiteByHandle(handle);
>              PermissionsData pd = mgr.getPermissions(wd, ud);
>              
> @@ -340,7 +340,7 @@
>          // TODO: does the permissions data need to be invalidated?
>          
>          try {
> -            UserData ud = getRoller().getUserManager().getUserByUsername(entry.getName());
> +            UserData ud = getRoller().getUserManager().getUserByUserName(entry.getName());
>              CacheManager.invalidate(ud);
>              WebsiteData wd = getRoller().getUserManager().getWebsiteByHandle(entry.getHandle());
>              CacheManager.invalidate(wd);
> @@ -375,7 +375,7 @@
>              UserManager mgr = getRoller().getUserManager();
>              mgr.removePermissions(pd);
>              
> -            UserData ud = getRoller().getUserManager().getUserByUsername(username);
> +            UserData ud = getRoller().getUserManager().getUserByUserName(username);
>              CacheManager.invalidate(ud);
>              WebsiteData wd = getRoller().getUserManager().getWebsiteByHandle(handle);
>              CacheManager.invalidate(wd);
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerUserHandler.java Thu Jun  1 12:43:16 2006
> @@ -102,7 +102,7 @@
>      
>      private EntrySet getEntry() throws HandlerException {
>          try {
> -            UserData ud = getRoller().getUserManager().getUserByUsername(getUri().getEntryId());
> +            UserData ud = getRoller().getUserManager().getUserByUserName(getUri().getEntryId());
>              if (ud == null) {
>                  throw new NotFoundException("ERROR: Unknown user: " + getUri().getEntryId());
>              }
> @@ -183,7 +183,7 @@
>              List userDatas = new ArrayList();
>              for (int i = 0; i < c.getEntries().length; i++) {
>                  UserEntry entry = (UserEntry)c.getEntries()[i];
> -                UserData ud = mgr.getUserByUsername(entry.getName());
> +                UserData ud = mgr.getUserByUserName(entry.getName());
>                  if (ud == null) {
>                      throw new NotFoundException("ERROR: Unknown user: " + entry.getName());
>                  }
> @@ -223,7 +223,7 @@
>      private EntrySet deleteEntry() throws HandlerException {
>          try {
>              UserManager mgr = getRoller().getUserManager();
> -            UserData ud = mgr.getUserByUsername(getUri().getEntryId());
> +            UserData ud = mgr.getUserByUserName(getUri().getEntryId());
>              
>              if (ud == null) {
>                  throw new NotFoundException("ERROR: Unknown user: " + getUri().getEntryId());
> 
> Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java
> URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java?rev=410925&r1=410924&r2=410925&view=diff
> ==============================================================================
> --- incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java (original)
> +++ incubator/roller/branches/roller_3.0/src/org/apache/roller/webservices/adminapi/RollerWeblogHandler.java Thu Jun  1 12:43:16 2006
> @@ -177,7 +177,7 @@
>              List websiteDatas = new ArrayList();
>              for (int i = 0; i < c.getEntries().length; i++) {
>                  WeblogEntry entry = (WeblogEntry)c.getEntries()[i];
> -                UserData user = mgr.getUserByUsername(entry.getCreatingUser());
> +                UserData user = mgr.getUserByUserName(entry.getCreatingUser());
>                  WebsiteData wd = new WebsiteData(
>                          entry.getHandle(),
>                          user,
> 
>