You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by cl...@apache.org on 2006/12/06 18:54:39 UTC

svn commit: r483166 [2/2] - in /incubator/roller/trunk/sandbox/jdobackend: ./ src/org/apache/roller/business/datamapper/ src/org/apache/roller/business/jdo/ src/org/apache/roller/business/jpa/ src/org/apache/roller/pojos/

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java Wed Dec  6 09:54:36 2006
@@ -20,6 +20,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+
 import org.apache.roller.RollerException;
 import org.apache.roller.business.BookmarkManager;
 import org.apache.roller.business.RollerFactory;
@@ -42,15 +43,17 @@
 import org.apache.roller.pojos.WeblogTemplate;
 import org.apache.roller.pojos.WebsiteData;
 import org.apache.roller.pojos.CommentData;
+import org.apache.roller.pojos.WeblogEntryTagData;
+import org.apache.roller.pojos.TagStat;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
-import java.util.Collections;
 
 /*
  * DatamapperUserManagerImpl.java
@@ -58,7 +61,7 @@
  * Created on May 29, 2006, 3:15 PM
  *
  */
-public class DatamapperUserManagerImpl implements UserManager {
+public abstract class DatamapperUserManagerImpl implements UserManager {
     
     /** The logger instance for this class. */
     private static Log log = LogFactory.getLog(DatamapperUserManagerImpl.class);    
@@ -102,11 +105,24 @@
      * TODO BACKEND: use manager methods instead of queries here
      * TODO DatamapperPort: Use bulk deletes instead of current approach
      */
-    private void removeWebsiteContents(WebsiteData website) throws  RollerException {
+    private void removeWebsiteContents(WebsiteData website) 
+            throws  RollerException {
 
         BookmarkManager bmgr = RollerFactory.getRoller().getBookmarkManager();
         WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
 
+        // remove tags
+        DatamapperQuery tagQuery = strategy.newQuery(WeblogEntryTagData.class,
+                "WeblogEntryTagData.getByWeblog");
+        for(Iterator iter = ( (List)tagQuery.execute(website) ) .iterator(); iter.hasNext();) {
+            WeblogEntryTagData tagData = (WeblogEntryTagData) iter.next();
+            this.strategy.remove(tagData);
+        }
+
+        // remove site tag aggregates
+        List tags = wmgr.getTags(website, null, null, -1);
+        updateTagAggregates(tags);
+
         // Remove the website's ping queue entries
         List queueEntries = (List)strategy.newQuery(PingQueueEntryData.class,
                 "PingQueueEntryData.getByWebsite").execute(website);
@@ -116,7 +132,8 @@
         }
 
         // Remove the website's auto ping configurations
-        AutoPingManager autoPingMgr = RollerFactory.getRoller().getAutopingManager();
+        AutoPingManager autoPingMgr = RollerFactory.getRoller()
+            .getAutopingManager();
         List autopings = autoPingMgr.getAutoPingsByWebsite(website);
         it = autopings.iterator();
         while(it.hasNext()) {
@@ -180,6 +197,9 @@
 
     }
 
+    protected abstract void updateTagAggregates(List tags) 
+        throws RollerException;
+
     public void saveUser(UserData data) throws RollerException {
         this.strategy.store(data);
     }
@@ -191,11 +211,13 @@
         this.userNameToIdMap.remove(user.getUserName());
     }
 
-    public void savePermissions(PermissionsData perms) throws RollerException {
+    public void savePermissions(PermissionsData perms) 
+            throws RollerException {
         this.strategy.store(perms);
     }
 
-    public void removePermissions(PermissionsData perms) throws RollerException {
+    public void removePermissions(PermissionsData perms) 
+            throws RollerException {
         this.strategy.remove(perms);
     }
 
@@ -206,7 +228,8 @@
         this.strategy.store(page);
 
         // update weblog last modified date.  date updated by saveWebsite()
-        RollerFactory.getRoller().getUserManager().saveWebsite(page.getWebsite());
+        RollerFactory.getRoller().getUserManager()
+            .saveWebsite(page.getWebsite());
     }
 
     public void removePage(WeblogTemplate page) throws RollerException {
@@ -227,7 +250,7 @@
         }
 
         if(getUserByUserName(newUser.getUserName()) != null ||
-                getUserByUserName(newUser.getUserName().toLowerCase()) != null) {
+            getUserByUserName(newUser.getUserName().toLowerCase()) != null) {
             throw new RollerException("error.add.user.userNameInUse");
         }
 
@@ -245,7 +268,8 @@
         this.addWeblogContents(newWeblog);
     }
 
-    private void addWeblogContents(WebsiteData newWeblog) throws RollerException {
+    private void addWeblogContents(WebsiteData newWeblog) 
+            throws RollerException {
 
         // grant weblog creator ADMIN permissions
         PermissionsData perms = new PermissionsData();
@@ -314,8 +338,10 @@
         }
 
         // add any auto enabled ping targets
-        PingTargetManager pingTargetMgr = RollerFactory.getRoller().getPingTargetManager();
-        AutoPingManager autoPingMgr = RollerFactory.getRoller().getAutopingManager();
+        PingTargetManager pingTargetMgr = RollerFactory.getRoller()
+            .getPingTargetManager();
+        AutoPingManager autoPingMgr = RollerFactory.getRoller()
+            .getAutopingManager();
 
         Iterator pingTargets = pingTargetMgr.getCommonPingTargets().iterator();
         PingTargetData pingTarget = null;
@@ -323,7 +349,8 @@
             pingTarget = (PingTargetData) pingTargets.next();
 
             if(pingTarget.isAutoEnabled()) {
-                AutoPingData autoPing = new AutoPingData(null, pingTarget, newWeblog);
+                AutoPingData autoPing = new AutoPingData(
+                   null, pingTarget, newWeblog);
                 autoPingMgr.saveAutoPing(autoPing);
             }
         }
@@ -394,7 +421,8 @@
         // NOTE: if we ever allow changing handles then this needs updating
         if(this.weblogHandleToIdMap.containsKey(handle)) {
 
-            WebsiteData weblog = this.getWebsite((String) this.weblogHandleToIdMap.get(handle));
+            WebsiteData weblog = this.getWebsite(
+                (String) this.weblogHandleToIdMap.get(handle));
             if(weblog != null) {
                 // only return weblog if enabled status matches
                 if(enabled == null || enabled.equals(weblog.getEnabled())) {
@@ -411,10 +439,12 @@
         DatamapperQuery query;
         Object[] params;
         if (enabled != null) {
-            query = strategy.newQuery(WebsiteData.class,"WebsiteData.getByHandle&enabled");
+            query = strategy.newQuery(WebsiteData.class,
+                "WebsiteData.getByHandle&enabled");
             params = new Object[] {handle, enabled};
         } else {
-            query = strategy.newQuery(WebsiteData.class,"WebsiteData.getByHandle");
+            query = strategy.newQuery(WebsiteData.class,
+                "WebsiteData.getByHandle");
             params = new Object[] {handle};
         }
         query.setUnique();
@@ -562,7 +592,8 @@
         // NOTE: if we ever allow changing usernames then this needs updating
         if(this.userNameToIdMap.containsKey(userName)) {
 
-            UserData user = this.getUser((String) this.userNameToIdMap.get(userName));
+            UserData user = this.getUser(
+                (String) this.userNameToIdMap.get(userName));
             if(user != null) {
                 // only return the user if the enabled status matches
                 if(enabled == null || enabled.equals(user.getEnabled())) {
@@ -579,10 +610,12 @@
         DatamapperQuery query;
         Object[] params;
         if (enabled != null) {
-            query = strategy.newQuery(UserData.class,"UserData.getByUserName&enabled");
+            query = strategy.newQuery(UserData.class,
+                "UserData.getByUserName&enabled");
             params = new Object[] {userName, enabled};
         } else {
-            query = strategy.newQuery(WebsiteData.class,"UserData.getByUserName");
+            query = strategy.newQuery(WebsiteData.class,
+                "UserData.getByUserName");
             params = new Object[] {userName};
         }
         query.setUnique();
@@ -616,21 +649,27 @@
         if (weblog != null) {
             if (enabled != null) {
                 if (startDate != null) {
-                    query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website&Enabled&EndDate&StartDate");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getByPermissions.website&Enabled&EndDate&StartDate");
                     if (setRange) query.setRange(offset, offset + length);
                     results = (List) query.execute(new Object[] {weblog, enabled, endDate, startDate});
                 } else {
-                    query = strategy.newQuery(UserData.class, "UserData.getByEnabled&Permissions.website");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getByEnabled&Permissions.website");
                     if (setRange) query.setRange(offset, offset + length);
-                    results = (List) query.execute(new Object[] {enabled, weblog});
+                    results = (List) query.execute(
+                        new Object[] {enabled, weblog});
                 }
             } else {
                 if (startDate != null) {
-                    query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website&EndDate&StartDate");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getByPermissions.website&EndDate&StartDate");
                     if (setRange) query.setRange(offset, offset + length);
-                    results = (List) query.execute(new Object[] {weblog, endDate, startDate});
+                    results = (List) query.execute(
+                        new Object[] {weblog, endDate, startDate});
                 } else {
-                    query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getByPermissions.website");
                     if (setRange) query.setRange(offset, offset + length);
                     results = (List) query.execute(weblog);
                 }
@@ -638,21 +677,27 @@
         } else {
             if (enabled != null) {
                 if (startDate != null) {
-                    query = strategy.newQuery(UserData.class, "UserData.getByEnabled&EndDate&StartDate");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getByEnabled&EndDate&StartDate");
                     if (setRange) query.setRange(offset, offset + length);
-                    results = (List) query.execute(new Object[] {enabled, endDate, startDate});
+                    results = (List) query.execute(
+                        new Object[] {enabled, endDate, startDate});
                 } else {
-                    query = strategy.newQuery(UserData.class, "UserData.getByEnabled");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getByEnabled");
                     if (setRange) query.setRange(offset, offset + length);
                     results = (List) query.execute(new Object[] {enabled});
                 }
             } else {
                 if (startDate != null) {
-                    query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website&EndDate&StartDate");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getByPermissions.website&EndDate&StartDate");
                     if (setRange) query.setRange(offset, offset + length);
-                    results = (List) query.execute(new Object[] {endDate, startDate});
+                    results = (List) query.execute(
+                        new Object[] {endDate, startDate});
                 } else {
-                    query = strategy.newQuery(UserData.class, "UserData.getAll");
+                    query = strategy.newQuery(UserData.class, 
+                        "UserData.getAll");
                     if (setRange) query.setRange(offset, offset + length);
                     results = (List) query.execute();
                 }
@@ -666,7 +711,9 @@
         return getUsers(Boolean.TRUE, null, null, offset, length);
     }
 
-    public List getUsers(Boolean enabled, Date startDate, Date endDate, int offset, int length) throws RollerException {
+    public List getUsers(Boolean enabled, Date startDate, Date endDate, 
+            int offset, int length) 
+            throws RollerException {
         DatamapperQuery query = null;
         List results = null;
         boolean setRange = offset != 0 || length != -1;
@@ -678,22 +725,29 @@
         }
 
         if (enabled != null) {
-              if (startDate != null) {
-                  query = strategy.newQuery(UserData.class, "UserData.getByEnabled&EndDate&StartDateOrderByStartDateDesc");
-                  if (setRange) query.setRange(offset, offset + length);
-                  results = (List) query.execute(new Object[] {enabled, endDate, startDate});                
-              } else {
-                  query = strategy.newQuery(UserData.class, "UserData.getByEnabled&EndDateOrderByStartDateDesc");
-                  if (setRange) query.setRange(offset, offset + length);
-                  results = (List) query.execute(new Object[] {enabled, endDate});                
+            if (startDate != null) {
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEnabled&EndDate&StartDateOrderByStartDateDesc");
+                if (setRange) query.setRange(offset, offset + length);
+                results = (List) query.execute(
+                    new Object[] {enabled, endDate, startDate});                
+            } else {
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEnabled&EndDateOrderByStartDateDesc");
+                if (setRange) query.setRange(offset, offset + length);
+                results = (List) query.execute(
+                    new Object[] {enabled, endDate});                
               }
         } else {
             if (startDate != null) {
-                query = strategy.newQuery(UserData.class, "UserData.getByEndDate&StartDateOrderByStartDateDesc");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEndDate&StartDateOrderByStartDateDesc");
                 if (setRange) query.setRange(offset, offset + length);
-                results = (List) query.execute(new Object[] {endDate, startDate});                
+                results = (List) query.execute(
+                    new Object[] {endDate, startDate});                
             } else {
-                query = strategy.newQuery(UserData.class, "UserData.getByEndDateOrderByStartDateDesc");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEndDateOrderByStartDateDesc");
                 if (setRange) query.setRange(offset, offset + length);
                 results = (List) query.execute(endDate);                
             }
@@ -716,17 +770,20 @@
 
         if (enabled != null) {
             if (website != null) {
-                query = strategy.newQuery(UserData.class, "UserData.getByEnabled&Permissions.website");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEnabled&Permissions.website");
                 if (setRange) query.setRange(offset, offset + length);
                 results = (List) query.execute(new Object[] {enabled, website});                
             } else {
-                query = strategy.newQuery(UserData.class, "UserData.getByEnabled");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEnabled");
                 if (setRange) query.setRange(offset, offset + length);
                 results = (List) query.execute(enabled);                
             }
         } else {
             if (website != null) {
-                query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByPermissions.website");
                 if (setRange) query.setRange(offset, offset + length);
                 results = (List) query.execute(website);                
             } else {
@@ -750,17 +807,21 @@
 
         if (enabled != null) {
             if (startsWith != null) {
-                query = strategy.newQuery(UserData.class, "UserData.getByEnabled&UserNameOrEmailAddressStartsWith");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEnabled&UserNameOrEmailAddressStartsWith");
                 if (setRange) query.setRange(offset, offset + length);
-                results = (List) query.execute(new Object[] {enabled, startsWith});
+                results = (List) query.execute(
+                    new Object[] {enabled, startsWith});
             } else {
-                query = strategy.newQuery(UserData.class, "UserData.getByEnabled");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByEnabled");
                 if (setRange) query.setRange(offset, offset + length);
                 results = (List) query.execute(enabled);                
             }
         } else { 
             if (startsWith != null) {
-                query = strategy.newQuery(UserData.class, "UserData.getByUserNameOrEmailAddressStartsWith");
+                query = strategy.newQuery(UserData.class, 
+                    "UserData.getByUserNameOrEmailAddressStartsWith");
                 if (setRange) query.setRange(offset, offset + length);
                 results = (List) query.execute(startsWith);
             } else {
@@ -827,8 +888,10 @@
                 "WeblogTemplate.getByWebsiteOrderByName").execute(website);
     }
 
-    public PermissionsData getPermissions(String inviteId) throws RollerException {
-        return (PermissionsData)this.strategy.load(PermissionsData.class, inviteId);
+    public PermissionsData getPermissions(String inviteId) 
+            throws RollerException {
+        return (PermissionsData)this.strategy.load(
+            PermissionsData.class, inviteId);
     }
 
     /**
@@ -836,7 +899,8 @@
      */
     public PermissionsData getPermissions(
             WebsiteData website, UserData user) throws RollerException {
-        List list = (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByWebsiteAndUser").
+        List list = (List) strategy.newQuery(PermissionsData.class, 
+            "PermissionsData.getByWebsiteAndUser").
                 execute(new Object[] {website, user} );
         return list.size()!=0 ? (PermissionsData)list.get(0) : null;
     }
@@ -845,33 +909,36 @@
      * Get pending permissions for user
      */
     public List getPendingPermissions(UserData user) throws RollerException {
-        return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByUserAndPending").
-                execute(new Object[] {user, Boolean.TRUE} );
+        return (List) strategy.newQuery(PermissionsData.class, 
+            "PermissionsData.getByUserAndPending")
+                .execute(new Object[] {user, Boolean.TRUE} );
     }
 
     /**
      * Get pending permissions for website
      */
     public List getPendingPermissions(WebsiteData website) throws RollerException {
-        return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByWebsiteAndPending").
-                execute(new Object[] {website, Boolean.TRUE} );
+        return (List) strategy.newQuery(PermissionsData.class, 
+            "PermissionsData.getByWebsiteAndPending")
+            .execute(new Object[] {website, Boolean.TRUE} );
     }
 
     /**
      * Get all permissions of a website (pendings not including)
      */
     public List getAllPermissions(WebsiteData website) throws RollerException {
-        return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByWebsiteAndPending").
-                execute(new Object[] {website, Boolean.FALSE} );
-
+        return (List) strategy.newQuery(PermissionsData.class, 
+            "PermissionsData.getByWebsiteAndPending")
+            .execute(new Object[] {website, Boolean.FALSE} );
     }
 
     /**
      * Get all permissions of a user.
      */
     public List getAllPermissions(UserData user) throws RollerException {
-        return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByUserAndPending").
-                execute(new Object[] {user, Boolean.FALSE} );
+        return (List) strategy.newQuery(PermissionsData.class, 
+            "PermissionsData.getByUserAndPending")
+            .execute(new Object[] {user, Boolean.FALSE} );
 
     }
 
@@ -881,7 +948,8 @@
         // TODO: ATLAS getUserNameLetterMap DONE TESTED
         String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
         Map results = new TreeMap();
-        DatamapperQuery query = strategy.newQuery(UserData.class, "UserData.getCountByUserNameLike");
+        DatamapperQuery query = strategy.newQuery(UserData.class, 
+            "UserData.getCountByUserNameLike");
         for (int i=0; i<26; i++) {
             char currentChar = lc.charAt(i);
             List row = (List) query.execute(currentChar + "%");
@@ -894,7 +962,8 @@
     public List getUsersByLetter(char letter, int offset, int length)
         throws RollerException {
         // TODO: ATLAS getUsersByLetter DONE
-        DatamapperQuery query = strategy.newQuery(UserData.class, "UserData.getByUserNameOrderByUserName");
+        DatamapperQuery query = strategy.newQuery(UserData.class, 
+            "UserData.getByUserNameOrderByUserName");
         query.setRange(offset, offset + length);
         return (List) query.execute(letter + "%");
     }
@@ -902,7 +971,8 @@
     public Map getWeblogHandleLetterMap() throws RollerException {
         String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
         Map results = new TreeMap();
-        DatamapperQuery query = strategy.newQuery(WebsiteData.class, "WebsiteData.getCountByHandleLike");
+        DatamapperQuery query = strategy.newQuery(WebsiteData.class, 
+            "WebsiteData.getCountByHandleLike");
         for (int i=0; i<26; i++) {
             char currentChar = lc.charAt(i);
             List row = (List) query.execute(currentChar + "%");
@@ -915,7 +985,8 @@
     public List getWeblogsByLetter(char letter, int offset, int length)
         throws RollerException {
         // TODO: ATLAS getWeblogsByLetter DONE
-        DatamapperQuery query = strategy.newQuery(WebsiteData.class, "WebsiteData.getByHandleOrderByHandle");
+        DatamapperQuery query = strategy.newQuery(WebsiteData.class, 
+            "WebsiteData.getByHandleOrderByHandle");
         if (offset != 0 || length != -1) {
             if (length == -1) {
                 length = Integer.MAX_VALUE - offset;
@@ -925,7 +996,8 @@
         return (List) query.execute(letter + "%");
     }
 
-    public List getMostCommentedWebsites(Date startDate, Date endDate, int offset, int length)
+    public List getMostCommentedWebsites(Date startDate, Date endDate, 
+        int offset, int length)
         throws RollerException {
         // TODO: ATLAS getMostCommentedWebsites DONE TESTED
 
@@ -940,11 +1012,14 @@
         if (endDate == null) endDate = new Date();
         
         if (startDate != null) {
-            query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWebsiteByEndDate&StartDate");
+            query = strategy.newQuery(CommentData.class, 
+                "CommentData.getMostCommentedWebsiteByEndDate&StartDate");
             if (setRange) query.setRange(offset, offset + length);
-            queryResults = (List) query.execute(new Object[] {endDate, startDate});            
+            queryResults = (List) query.execute(
+                new Object[] {endDate, startDate});            
         } else {
-            query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWebsiteByEndDate");
+            query = strategy.newQuery(CommentData.class, 
+                "CommentData.getMostCommentedWebsiteByEndDate");
             if (setRange) query.setRange(offset, offset + length);
             queryResults = (List) query.execute(endDate);
         }
@@ -965,7 +1040,8 @@
                 "statCount.weblogCommentCountType",
                 new Long(((Integer)row[0]).intValue()).longValue()));
         }
-        // TODO Collections.sort(results, StatCount.getComparator());
+        //TODO Uncomment following once integrated with code
+        //Collections.sort(results, StatCount.getComparator());
         Collections.reverse(results);
         return results;
     }
@@ -975,7 +1051,8 @@
      */    
     public long getWeblogCount() throws RollerException {
         long ret = 0;
-        List results = (List) strategy.newQuery(WebsiteData.class, "WebsiteData.getCountAllDistinct").execute();
+        List results = (List) strategy.newQuery(WebsiteData.class, 
+            "WebsiteData.getCountAllDistinct").execute();
 
         ret = ((Integer)results.get(0)).intValue();
         
@@ -988,7 +1065,8 @@
      */    
     public long getUserCount() throws RollerException {
         long ret = 0;
-        List results = (List) strategy.newQuery(UserData.class, "UserData.getCountEnabledDistinct").execute(Boolean.TRUE);
+        List results = (List) strategy.newQuery(UserData.class, 
+            "UserData.getCountEnabledDistinct").execute(Boolean.TRUE);
 
         ret =((Integer)results.get(0)).intValue();
 

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java Wed Dec  6 09:54:36 2006
@@ -18,6 +18,17 @@
  */
 package org.apache.roller.business.datamapper;
 
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
 import org.apache.commons.collections.comparators.ReverseComparator;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -39,17 +50,6 @@
 import org.apache.roller.util.DateUtil;
 import org.apache.roller.util.Utilities;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Collections;
-
 /*
  * DatamapperWeblogManagerImpl.java
  *
@@ -58,7 +58,8 @@
  */
 public class DatamapperWeblogManagerImpl implements WeblogManager {
 
-    private static Log log = LogFactory.getLog(DatamapperWeblogManagerImpl.class);
+    private static Log log = LogFactory.getLog(
+        DatamapperWeblogManagerImpl.class);
     
     private DatamapperPersistenceStrategy strategy;
 
@@ -89,7 +90,8 @@
         this.strategy.store(cat);
     }
 
-    public void moveWeblogCategory(WeblogCategoryData srcCat, WeblogCategoryData destCat)
+    public void moveWeblogCategory(WeblogCategoryData srcCat, 
+        WeblogCategoryData destCat)
             throws RollerException {
         
         // TODO: this check should be made before calling this method?
@@ -98,7 +100,8 @@
                     "ERROR cannot move parent category into it's own child");
         }
         
-        log.debug("Moving category "+srcCat.getPath()+" under "+destCat.getPath());
+        log.debug("Moving category "+srcCat.getPath() +
+            " under "+destCat.getPath());
         
         srcCat.setParent(destCat);
         if("/".equals(destCat.getPath())) {
@@ -115,7 +118,8 @@
     
     
     // updates the paths of all descendents of the given category
-    private void updatePathTree(WeblogCategoryData cat) throws RollerException {
+    private void updatePathTree(WeblogCategoryData cat) 
+            throws RollerException {
         
         log.debug("Updating path tree for category "+cat.getPath());
         
@@ -155,25 +159,29 @@
         
         // update website default cats if needed
         if(cat.getWebsite().getBloggerCategory().equals(cat)) {
-            WeblogCategoryData rootCat = this.getRootWeblogCategory(cat.getWebsite());
+            WeblogCategoryData rootCat = this.getRootWeblogCategory(
+                cat.getWebsite());
             cat.getWebsite().setBloggerCategory(rootCat);
             this.strategy.store(cat.getWebsite());
         }
         
         if(cat.getWebsite().getDefaultCategory().equals(cat)) {
-            WeblogCategoryData rootCat = this.getRootWeblogCategory(cat.getWebsite());
+            WeblogCategoryData rootCat = this.getRootWeblogCategory(
+                cat.getWebsite());
             cat.getWebsite().setDefaultCategory(rootCat);
             this.strategy.store(cat.getWebsite());
         }
         
         // update weblog last modified date.  date updated by saveWebsite()
-        RollerFactory.getRoller().getUserManager().saveWebsite(cat.getWebsite());
+        RollerFactory.getRoller().getUserManager().saveWebsite(
+                cat.getWebsite());
     }
 
     /**
      * Recategorize all entries with one category to another.
      */
-    public void moveWeblogCategoryContents(WeblogCategoryData srcCat, WeblogCategoryData destCat)
+    public void moveWeblogCategoryContents(WeblogCategoryData srcCat, 
+                WeblogCategoryData destCat)
             throws RollerException {
                 
         // TODO: this check should be made before calling this method?
@@ -198,13 +206,15 @@
         // Make sure website's default and bloggerapi categories
         // are valid after the move
         
-        if (srcCat.getWebsite().getDefaultCategory().getId().equals(srcCat.getId())
+        if (srcCat.getWebsite().getDefaultCategory().getId()
+                .equals(srcCat.getId())
         || srcCat.getWebsite().getDefaultCategory().descendentOf(srcCat)) {
             srcCat.getWebsite().setDefaultCategory(destCat);
             this.strategy.store(srcCat.getWebsite());
         }
         
-        if (srcCat.getWebsite().getBloggerCategory().getId().equals(srcCat.getId())
+        if (srcCat.getWebsite().getBloggerCategory().getId()
+                .equals(srcCat.getId())
         || srcCat.getWebsite().getBloggerCategory().descendentOf(srcCat)) {
             srcCat.getWebsite().setBloggerCategory(destCat);
             this.strategy.store(srcCat.getWebsite());
@@ -218,7 +228,8 @@
         this.strategy.store(comment);
         
         // update weblog last modified date.  date updated by saveWebsite()
-        RollerFactory.getRoller().getUserManager().saveWebsite(comment.getWeblogEntry().getWebsite());
+        RollerFactory.getRoller().getUserManager()
+            .saveWebsite(comment.getWeblogEntry().getWebsite());
     }
 
     /**
@@ -228,7 +239,8 @@
         this.strategy.remove(comment);
         
         // update weblog last modified date.  date updated by saveWebsite()
-        RollerFactory.getRoller().getUserManager().saveWebsite(comment.getWeblogEntry().getWebsite());
+        RollerFactory.getRoller().getUserManager()
+            .saveWebsite(comment.getWeblogEntry().getWebsite());
     }
 
     /**
@@ -254,12 +266,14 @@
         
         // update weblog last modified date.  date updated by saveWebsite()
         if(entry.isPublished()) {
-            RollerFactory.getRoller().getUserManager().saveWebsite(entry.getWebsite());
+            RollerFactory.getRoller().getUserManager()
+                .saveWebsite(entry.getWebsite());
         }
         
         if(entry.isPublished()) {
             // Queue applicable pings for this update.
-            RollerFactory.getRoller().getAutopingManager().queueApplicableAutoPings(entry);
+            RollerFactory.getRoller().getAutopingManager()
+                .queueApplicableAutoPings(entry);
         }
     }
 
@@ -268,7 +282,8 @@
      */
     public void removeWeblogEntry(WeblogEntryData entry)
             throws RollerException {
-        List referers = (List) strategy.newQuery(RefererData.class, "RefererData.getByWeblogEntry").execute(entry);
+        List referers = (List) strategy.newQuery(RefererData.class, 
+            "RefererData.getByWeblogEntry").execute(entry);
         for (Iterator iter = referers.iterator(); iter.hasNext();) {
             RefererData referer = (RefererData) iter.next();
             this.strategy.remove(referer);
@@ -305,7 +320,8 @@
         
         // update weblog last modified date.  date updated by saveWebsite()
         if(entry.isPublished()) {
-            RollerFactory.getRoller().getUserManager().saveWebsite(entry.getWebsite());
+            RollerFactory.getRoller().getUserManager()
+                .saveWebsite(entry.getWebsite());
         }
         
         // TODO: remove entry from cache mapping
@@ -319,7 +335,8 @@
         WeblogCategoryData category = null;
         
         if (catName != null && !catName.trim().equals("/")) {
-            category = getWeblogCategoryByPath(current.getWebsite(), null, catName);
+            category = getWeblogCategoryByPath(current.getWebsite(), null, 
+                catName);
         }
         
         if (category != null) {
@@ -328,25 +345,37 @@
                     query = strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeGreater&Category&LocaleLikeOrderByPubTimeAsc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category, locale});
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                            WeblogEntryData.PUBLISHED, 
+                            current.getPubTime(), category, locale});
                 } else {
                     query = strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeLess&Category&LocaleLikeOrderByPubTimeDesc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category, locale});  
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                        WeblogEntryData.PUBLISHED, current.getPubTime(), 
+                        category, locale});  
                 }
             } else {
                 if (next) {
                     results = (List) strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeGreater&CategoryOrderByPubTimeAsc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category});
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                        WeblogEntryData.PUBLISHED, current.getPubTime(), 
+                        category});
                 
                 } else {
                     results = (List) strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeLess&CategoryOrderByPubTimeDesc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category});                
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                        WeblogEntryData.PUBLISHED, current.getPubTime(), 
+                        category});                
                 }
             }
         } else {
@@ -355,25 +384,35 @@
                     query = strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeGreater&LocaleLikeOrderByPubTimeAsc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), locale});
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                        WeblogEntryData.PUBLISHED, current.getPubTime(), 
+                        locale});
                 } else {
                     query = strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeLess&LocaleLikeOrderByPubTimeDesc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), locale});  
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                        WeblogEntryData.PUBLISHED, current.getPubTime(), 
+                        locale});  
                 }
             } else {
                 if (next) {
                     results = (List) strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeGreater&OrderByPubTimeAsc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime()});
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                        WeblogEntryData.PUBLISHED, current.getPubTime()});
                 
                 } else {
                     results = (List) strategy.newQuery(WeblogEntryData.class, 
                             "WeblogEntryData.getByWebsite&Status&PubTimeLessOrderByPubTimeDesc");
                     if (maxEntries > -1) query.setRange(0, maxEntries);
-                    results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime()});                
+                    results = (List) query.execute(
+                        new Object[] {current.getWebsite(), 
+                        WeblogEntryData.PUBLISHED, current.getPubTime()});                
                 }
             }
         }
@@ -390,7 +429,8 @@
             throw new RollerException("website is null");
         
         return (WeblogCategoryData) strategy.newQuery(WeblogCategoryData.class, 
-                "WeblogCategoryData.getByWebsite&ParentNull").setUnique().execute(website);
+                "WeblogCategoryData.getByWebsite&ParentNull")
+                        .setUnique().execute(website);
     }
 
     /**
@@ -467,7 +507,8 @@
         
         // TODO Impl entryAnchorToIdMap CACHE
         
-        return (WeblogEntryData)strategy.newQuery(WeblogEntryData.class, "getByAnchor")
+        return (WeblogEntryData)strategy.newQuery(WeblogEntryData.class, 
+            "getByAnchor")
             .execute(anchor);
     }
 
@@ -488,19 +529,26 @@
         List list = null;
         if (website != null) {
             if (cat != null) {
-                  list = (List) strategy.newQuery(WeblogEntryData.class, 
-                          "WeblogEntryData.getByStatus&PubTimeLessEqual&Category&WebsiteOrderByPubTimeDesc").setRange(0, 1)
-                          .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date(), cat, website});
+                list = (List) strategy.newQuery(WeblogEntryData.class, 
+                    "WeblogEntryData.getByStatus&PubTimeLessEqual&Category&WebsiteOrderByPubTimeDesc")
+                    .setRange(0, 1)
+                    .execute(
+                        new Object[] {WeblogEntryData.PUBLISHED, new Date(), 
+                            cat, website});
             } else {
                 list = (List) strategy.newQuery(WeblogEntryData.class, 
-                        "WeblogEntryData.getByStatus&PubTimeLessEqual&WebsiteOrderByPubTimeDesc").setRange(0, 1)
-                        .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date(), website});
+                        "WeblogEntryData.getByStatus&PubTimeLessEqual&WebsiteOrderByPubTimeDesc")
+                    .setRange(0, 1)
+                    .execute(
+                        new Object[] {WeblogEntryData.PUBLISHED, new Date(), 
+                        website});
             }
         } else {
             // cat must also be null
             list = (List) strategy.newQuery(WeblogEntryData.class, 
-                    "WeblogEntryData.getByStatus&PubTimeLessEqualOrderByPubTimeDesc").setRange(0, 1)
-                    .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date()});
+                    "WeblogEntryData.getByStatus&PubTimeLessEqualOrderByPubTimeDesc")
+                .setRange(0, 1)
+                .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date()});
         }
         if (list.size() > 0) {
             return ((WeblogEntryData)list.get(0)).getPubTime();
@@ -522,10 +570,13 @@
         List results = null;
         
         if (!subcats) {
-            results = (List) strategy.newQuery(WeblogEntryData.class, "WeblogEntryData.getByCategory").execute(cat);
+            results = (List) strategy.newQuery(WeblogEntryData.class, 
+                "WeblogEntryData.getByCategory")
+                .execute(cat);
         } else {
             results = (List) strategy.newQuery(WeblogEntryData.class, 
-                    "WeblogEntryData.getByCategory.pathLike&amp;Website").execute(new Object[] {cat, cat.getPath(), cat.getWebsite()});  
+                "WeblogEntryData.getByCategory.pathLike&amp;Website")
+                .execute(new Object[] {cat, cat.getPath(), cat.getWebsite()});  
         }
         
         return results;
@@ -546,7 +597,8 @@
             }
                 
             List results = (List) strategy.newQuery(WeblogEntryData.class, 
-                "WeblogEntryData.getByWeblogEntry&Anchor").execute(new Object[] {entry, name});
+                "WeblogEntryData.getByWeblogEntry&Anchor")
+                .execute(new Object[] {entry, name});
                 
             if (results.size() < 1) {
                 break;
@@ -566,7 +618,8 @@
         // ensure that no sibling categories share the same name
         WeblogCategoryData parent = cat.getParent();
         if (null != parent) {
-            return (getWeblogCategoryByPath(cat.getWebsite(), cat.getPath()) != null);
+            return (getWeblogCategoryByPath(
+                cat.getWebsite(), cat.getPath()) != null);
         }
         
         return false;
@@ -577,7 +630,8 @@
      */
     public boolean isWeblogCategoryInUse(WeblogCategoryData cat)
             throws RollerException {
-        int entryCount = ((List) strategy.newQuery(WeblogEntryData.class, "").execute(cat)).size();
+        int entryCount = ((List) strategy.newQuery(
+            WeblogEntryData.class, "").execute(cat)).size();
             
         if (entryCount > 0) {
             return true;
@@ -700,7 +754,8 @@
         if (path.trim().equals("/")) {
             return getRootWeblogCategory(website);
         } else if (category == null || path.trim().startsWith("/")) {
-            cats = getRootWeblogCategory(website).getWeblogCategories().iterator();
+            cats = getRootWeblogCategory(website)
+            .getWeblogCategories().iterator();
         } else {
             cats = category.getWeblogCategories().iterator();
         }
@@ -761,9 +816,10 @@
      * @throws org.apache.roller.RollerException
      */
     public Map getWeblogEntryObjectMap(WebsiteData website,
-                                       Date startDate, Date endDate, String catName, List tags,
-                                       String status, String locale, int offset,
-                                       int range) throws RollerException {
+            Date startDate, Date endDate, String catName, List tags,
+            String status, String locale, int offset,
+            int range) 
+                throws RollerException {
         return getWeblogEntryMap(
             website,
             startDate,
@@ -883,21 +939,28 @@
 
         if (website != null) {
             if (startDate != null) {
-                query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate&StartDate");
+                query = strategy.newQuery(CommentData.class, 
+                    "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate&StartDate");
                 if (setRange) query.setRange(offset, offset + length);
-                queryResults = (List) query.execute(new Object[] {website, endDate, startDate});
+                queryResults = (List) query.execute(
+                    new Object[] {website, endDate, startDate});
             } else {
-                query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate");
+                query = strategy.newQuery(CommentData.class, 
+                    "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate");
                 if (setRange) query.setRange(offset, offset + length);
-                queryResults = (List) query.execute(new Object[] {website, endDate});            
+                queryResults = (List) query.execute(
+                    new Object[] {website, endDate});            
             }
         } else {
             if (startDate != null) {
-                query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByEndDate&StartDate");
+                query = strategy.newQuery(CommentData.class, 
+                    "CommentData.getMostCommentedWeblogEntryByEndDate&StartDate");
                 if (setRange) query.setRange(offset, offset + length);
-                queryResults = (List) query.execute(new Object[] {endDate, startDate});
+                queryResults = (List) query.execute(
+                    new Object[] {endDate, startDate});
             } else {
-                query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByEndDate");
+                query = strategy.newQuery(CommentData.class, 
+                    "CommentData.getMostCommentedWeblogEntryByEndDate");
                 if (setRange) query.setRange(offset, offset + length);
                 queryResults = (List) query.execute(endDate);            
             }
@@ -913,7 +976,8 @@
                 "statCount.weblogEntryCommentCountType",
                 new Long(((Integer)row[0]).intValue()).longValue()));
         }
-        // TODO Collections.sort(results, StatCount.getComparator());
+        //TODO Uncomment following once integrated with code
+        //Collections.sort(results, StatCount.getComparator());
         Collections.reverse(results);
         return results;
     }
@@ -1009,21 +1073,26 @@
         
         if (website != null) {
             if (startDate != null) {
-                query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsite&StartDate");
+                query = strategy.newQuery(WeblogEntryTagAggregateData.class, 
+                    "WeblogEntryTagAggregateData.getPopularTagsByWebsite&StartDate");
                 if (limit > 0) query.setRange(0, limit);
-                queryResults = (List) query.execute(new Object[] {website, startDate});
+                queryResults = (List) query.execute(
+                    new Object[] {website, startDate});
             } else {
-                query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsite");
+                query = strategy.newQuery(WeblogEntryTagAggregateData.class, 
+                    "WeblogEntryTagAggregateData.getPopularTagsByWebsite");
                 if (limit > 0) query.setRange(0, limit);
                 queryResults = (List) query.execute(startDate);                
             }
         } else {
             if (startDate != null) {
-                query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull&StartDate");
+                query = strategy.newQuery(WeblogEntryTagAggregateData.class, 
+                    "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull&StartDate");
                 if (limit > 0) query.setRange(0, limit);
                 queryResults = (List) query.execute(startDate);
             } else {
-                query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull");
+                query = strategy.newQuery(WeblogEntryTagAggregateData.class, 
+                    "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull");
                 if (limit > 0) query.setRange(0, limit);
                 queryResults = (List) query.execute();                
             }
@@ -1069,7 +1138,8 @@
      * @see org.apache.roller.business.WeblogManager#getTags(org.apache.roller.pojos.WebsiteData,
      *      java.lang.String, java.lang.String, int)
      */
-    public List getTags(WebsiteData website, String sortBy, String startsWith, int limit) throws RollerException {    
+    public List getTags(WebsiteData website, String sortBy, 
+            String startsWith, int limit) throws RollerException {    
         DatamapperQuery query = null;
         List queryResults = null;
         boolean sortByName = sortBy == null || !sortBy.equals("count");
@@ -1077,21 +1147,27 @@
         if (website != null) {
             if (startsWith != null) {
                 if (sortByName) {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWithOrderByName");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, 
+                        "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWithOrderByName");
                     if (limit > 0) query.setRange(0, limit);
-                    queryResults = (List) query.execute(new Object[] {website, startsWith});
+                    queryResults = (List) query.execute(
+                        new Object[] {website, startsWith});
                 } else {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWith");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+                        "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWith");
                     if (limit > 0) query.setRange(0, limit);
-                    queryResults = (List) query.execute(new Object[] {website, startsWith});
+                    queryResults = (List) query.execute(
+                        new Object[] {website, startsWith});
                 }
             } else {
                 if (sortByName) {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteOrderByName");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+                        "WeblogEntryTagAggregateData.getTagsByWebsiteOrderByName");
                     if (limit > 0) query.setRange(0, limit);
                     queryResults = (List) query.execute(startsWith);   
                 } else {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsite");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+                        "WeblogEntryTagAggregateData.getTagsByWebsite");
                     if (limit > 0) query.setRange(0, limit);
                     queryResults = (List) query.execute(startsWith);   
                 }
@@ -1099,21 +1175,25 @@
         } else {
             if (startsWith != null) {
                 if (sortByName) {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWithOrderByName");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+                        "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWithOrderByName");
                     if (limit > 0) query.setRange(0, limit);
                     queryResults = (List) query.execute(startsWith);
                 } else {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWith");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+                        "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWith");
                     if (limit > 0) query.setRange(0, limit);
                     queryResults = (List) query.execute(startsWith);
                 }
             } else {
                 if (sortByName) {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNullOrderByName");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+                        "WeblogEntryTagAggregateData.getTagsByWebsiteNullOrderByName");
                     if (limit > 0) query.setRange(0, limit);
                     queryResults = (List) query.execute();
                 } else {
-                    query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNull");
+                    query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+                        "WeblogEntryTagAggregateData.getTagsByWebsiteNull");
                     if (limit > 0) query.setRange(0, limit);
                     queryResults = (List) query.execute();
                 }
@@ -1159,7 +1239,8 @@
         return comboExists; // TODO not implemented
     }
     
-    public void updateTagCount(String name, WebsiteData website, int amount) throws RollerException {
+    public void updateTagCount(String name, WebsiteData website, int amount) 
+            throws RollerException {
         if(amount == 0) {
             throw new RollerException("Tag increment amount cannot be zero.");
         }
@@ -1282,8 +1363,10 @@
             throw new RollerException("Weblog cannot be NULL.");
         }
 
-        HitCountData hitCount = (HitCountData) strategy.newQuery(HitCountData.class, 
-                "HitCountData.getByWeblog").setUnique().execute(weblog);
+        HitCountData hitCount = (HitCountData) strategy.newQuery(
+                HitCountData.class, 
+                "HitCountData.getByWeblog")
+            .setUnique().execute(weblog);
         
         // create it if it doesn't exist
         if(hitCount == null && amount > 0) {
@@ -1319,7 +1402,8 @@
      * Get site-wide comment count 
      */
     public long getCommentCount() throws RollerException {
-        List results = (List) strategy.newQuery(CommentData.class, "CommentData.getCountAllDistinct").execute();
+        List results = (List) strategy.newQuery(CommentData.class, 
+            "CommentData.getCountAllDistinct").execute();
         
         return ((Integer)results.get(0)).intValue();
     }
@@ -1330,7 +1414,7 @@
      */
     public long getCommentCount(WebsiteData website) throws RollerException {
         List results = (List) strategy.newQuery(CommentData.class, 
-                "CommentData.getCountDistinctByWebsite").execute(website);
+            "CommentData.getCountDistinctByWebsite").execute(website);
         
         return ((Integer)results.get(0)).intValue();
     }
@@ -1341,7 +1425,8 @@
      */
     public long getEntryCount() throws RollerException {
         List results = (List) strategy.newQuery(WeblogEntryData.class, 
-                "WeblogEntryData.getCountDistinctByStatus").execute("PUBLISHED");
+            "WeblogEntryData.getCountDistinctByStatus")
+            .execute("PUBLISHED");
         
         return ((Integer)results.get(0)).intValue();
     }
@@ -1352,7 +1437,8 @@
      */
     public long getEntryCount(WebsiteData website) throws RollerException {
         List results = (List) strategy.newQuery(WeblogEntryData.class, 
-                "WeblogEntryData.getCountDistinctByStatus&Website").execute(new Object[] {"PUBLISHED", website});
+            "WeblogEntryData.getCountDistinctByStatus&Website")
+            .execute(new Object[] {"PUBLISHED", website});
         
         return ((Integer)results.get(0)).intValue();
     }

Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java Wed Dec  6 09:54:36 2006
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+
+package org.apache.roller.business.datamapper;
+
+import org.apache.roller.pojos.TagStat;
+import org.apache.roller.business.jpa.JPAPersistenceStrategy;
+import org.apache.roller.business.jpa.JPAUpdateQuery;
+import org.apache.roller.RollerException;
+
+import java.util.List;
+import java.util.Iterator;
+
+/**
+ * @author Mitesh Meswani
+ */
+public class JPAUserManagerImpl extends DatamapperUserManagerImpl {
+
+    private JPAPersistenceStrategy strategy;
+    
+    public JPAUserManagerImpl(JPAPersistenceStrategy strat) {
+        super(strat);
+        this.strategy = strat;
+    }
+
+    protected void updateTagAggregates(List tags) throws RollerException {
+        for(Iterator iter = tags.iterator(); iter.hasNext();) {
+                TagStat stat = (TagStat) iter.next();
+                JPAUpdateQuery query = strategy.newUpdateQuery(
+                    "WeblogEntryTagAggregateData.updateTotalByName&ampWeblogNull");
+                query.updateAll(
+                    new Object[] {Integer.valueOf(stat.getCount()), 
+                    stat.getName() });
+        }
+    }
+}

Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java Wed Dec  6 09:54:36 2006
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+
+package org.apache.roller.business.datamapper;
+
+import org.apache.roller.business.jpa.JPAPersistenceStrategy;
+
+
+/**
+ * @author Mitesh Meswani
+ */
+public class JPAWeblogManagerImpl extends DatamapperWeblogManagerImpl{
+
+    private JPAPersistenceStrategy strategy;
+
+    public JPAWeblogManagerImpl(JPAPersistenceStrategy strat) {
+        super(strat);
+        this.strategy = strat;
+    }
+}

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java Wed Dec  6 09:54:36 2006
@@ -22,8 +22,10 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
 import org.apache.roller.business.datamapper.DatamapperRollerImpl;
+import org.apache.roller.business.datamapper.DatamapperPersistenceStrategy;
 import org.apache.roller.business.Roller;
-
+import org.apache.roller.business.UserManager;
+import org.apache.roller.business.WeblogManager;
 
 /**
  * Implements Roller, the entry point interface for the Roller business tier
@@ -46,7 +48,16 @@
         strategy = new JDOPersistenceStrategy();
     }
 
-    
+    protected UserManager createDatamapperUserManager(
+            DatamapperPersistenceStrategy strategy) {
+        return null;
+    }
+
+    protected WeblogManager createDatamapperWeblogManager(
+            DatamapperPersistenceStrategy strategy) {
+        return null;
+    }
+
     /**
      * Construct and return the singleton instance of the class.
      * @throws org.apache.roller.RollerException on any error

Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java Wed Dec  6 09:54:36 2006
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+
+package org.apache.roller.business.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ *
+ */
+public class JPADynamicQueryImpl extends JPAQueryImpl {
+
+    String queryString;
+
+    /**
+     * Creates a new instance of JPADynamicQueryImpl
+     */
+    public JPADynamicQueryImpl(EntityManager em, String queryString) {
+        super(em);
+        this.queryString = queryString;
+    }
+
+    /**
+     * Create a Query for this instance
+     */
+    protected Query createQuery() {
+        return em.createQuery(queryString);
+    }
+}

Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java Wed Dec  6 09:54:36 2006
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+
+package org.apache.roller.business.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ *
+ */
+public class JPANamedQueryImpl extends JPAQueryImpl {
+
+    String queryName;
+
+    /**
+     * Creates a new instance of JPANamedQueryImpl
+     */
+    public JPANamedQueryImpl(EntityManager em, String queryName) {
+        super(em);
+        this.queryName = queryName;
+    }
+
+    /**
+     * Create a Query for this instance
+     */
+    protected Query createQuery() {
+        return em.createNamedQuery(queryName);
+    }
+}

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java Wed Dec  6 09:54:36 2006
@@ -231,7 +231,7 @@
     public DatamapperQuery newQuery(Class clazz, String queryName)
             throws RollerException {
         EntityManager em = getEntityManager(false);
-        return new JPAQueryImpl(em, clazz, queryName);
+        return new JPANamedQueryImpl(em, queryName);
     }
 
     /**
@@ -245,6 +245,29 @@
         EntityManager em = getEntityManager(false);
         return new JPARemoveQueryImpl(em, clazz, queryName);
     }
+
+    /**
+     * Create query used for bulk update operations.
+     * @param queryName the name of the query
+     * @throws org.apache.roller.RollerException on any error
+     */
+    public JPAUpdateQuery newUpdateQuery(String queryName)
+            throws RollerException {
+        EntityManager em = getEntityManager(false);
+        return new JPAUpdateQuery(em, queryName);
+    }
+
+    /**
+     * Create query from queryString
+     * @param queryString the quuery
+     * @throws org.apache.roller.RollerException on any error
+     */
+    public DatamapperQuery newDynamicQuery(String queryString)
+            throws RollerException {
+        EntityManager em = getEntityManager(false);
+        return new JPADynamicQueryImpl(em, queryString);
+    }
+
 
     /**
      * Loads properties from given resourceName using given class loader

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java Wed Dec  6 09:54:36 2006
@@ -27,7 +27,7 @@
 /**
  *
  */
-public class JPAQueryImpl implements DatamapperQuery {
+public abstract class JPAQueryImpl implements DatamapperQuery {
 
     /** */
     protected EntityManager em;
@@ -40,10 +40,13 @@
     /**
      * Creates a new instance of JPAQueryImpl
      */
-    public JPAQueryImpl(EntityManager em, Class clazz, String queryName) {
+    public JPAQueryImpl(EntityManager em) {
         this.em = em;
-        q = em.createNamedQuery(queryName);
+        q = createQuery();
     }
+
+    /** Create a Query for this instance*/
+    protected abstract Query createQuery();
 
     public Object execute() {
         return executeQuery();

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java Wed Dec  6 09:54:36 2006
@@ -22,8 +22,11 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
 import org.apache.roller.business.datamapper.DatamapperRollerImpl;
+import org.apache.roller.business.datamapper.DatamapperPersistenceStrategy;
+import org.apache.roller.business.datamapper.JPAUserManagerImpl;
 import org.apache.roller.business.Roller;
-
+import org.apache.roller.business.UserManager;
+import org.apache.roller.business.WeblogManager;
 
 /**
  * Implements Roller, the entry point interface for the Roller business tier
@@ -46,7 +49,15 @@
         strategy = new JPAPersistenceStrategy();
     }
 
-    
+    protected UserManager createDatamapperUserManager(DatamapperPersistenceStrategy strategy) {
+        return new JPAUserManagerImpl((JPAPersistenceStrategy) strategy);
+    }
+
+    protected WeblogManager createDatamapperWeblogManager(
+            DatamapperPersistenceStrategy strategy) {
+        return null;
+    }
+
     /**
      * Construct and return the singleton instance of the class.
      * @throws org.apache.roller.RollerException on any error

Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java Wed Dec  6 09:54:36 2006
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+
+package org.apache.roller.business.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ * @author Mitesh Meswani
+ */
+public class JPAUpdateQuery {
+
+    protected EntityManager em;
+
+    protected Query q;
+
+    /**
+     * Creates a new instance of JPAQueryImpl
+     */
+    public JPAUpdateQuery(EntityManager em, String queryName) {
+        this.em = em;
+        q = em.createNamedQuery(queryName);
+    }
+
+    public int updateAll() {
+        return q.executeUpdate();
+    }
+
+    public int updateAll(Object param) {
+        q.setParameter(1, param);
+        return q.executeUpdate();
+    }
+
+    public int updateAll(Object[] params) {
+        for (int i = 0; i < params.length ; i++) {
+            q.setParameter(i + 1, params[i]);
+        }
+        return q.executeUpdate();
+    }
+
+
+}

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml Wed Dec  6 09:54:36 2006
@@ -18,12 +18,6 @@
         <named-query name="PingTargetData.getByWebsiteOrderByName">
             <query>SELECT p FROM PingTargetData p WHERE p.website = ?1 ORDER BY p.name</query>
         </named-query>
-        <named-query name="PingTargetData.getByWebsite&amp;Name&amp;IdNotEqual">
-            <query>SELECT p FROM PingTargetData p WHERE p.website = ?1
-                AND p.name = ?2
-                AND p.id &lt;&gt; ?3
-            </query>
-        </named-query>
         <named-query name="PingTargetData.removeByWebsiteNotNull">
             <query>DELETE FROM PingTargetData p WHERE p.website IS NOT NULL</query>
         </named-query>

Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml Wed Dec  6 09:54:36 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
+ orm_1_0.xsd">
+	<description>Persistence Metadata for Roller</description>
+	<persistence-unit-metadata>
+		<persistence-unit-defaults>
+			<access>PROPERTY</access>
+		</persistence-unit-defaults>
+	</persistence-unit-metadata>
+	<package>org.apache.roller.pojos</package>
+	<entity metadata-complete="true" name="TaskLockData" class="org.apache.roller.pojos.TaskLockData">
+		<table name="roller_tasklock"/>
+		<attributes>
+			<id name="id">
+				<column name="id"/>
+			</id>
+			<basic name="name">
+				<column name="name" insertable="true" updatable="true" unique="true"/>
+			</basic>
+			<basic name="timeAquired">
+				<column name="timeacquired" insertable="true" updatable="true" unique="false"/>
+			</basic>
+			<basic name="lastRun">
+				<column name="lastrun" insertable="true" updatable="true" unique="false"/>
+			</basic>
+			<basic name="locked">
+				<column name="islocked" insertable="true" updatable="true" unique="false"/>
+			</basic>
+			<basic name="timeLeased">
+				<column name="timeleased" insertable="true" updatable="true" unique="false"/>
+			</basic>
+		</attributes>
+	</entity>
+</entity-mappings>

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml Wed Dec  6 09:54:36 2006
@@ -51,6 +51,9 @@
         <named-query name="WeblogEntryTagAggregateData.removeByTotalLessEqual">
             <query>DELETE FROM WeblogEntryTagAggregateData w WHERE w.total &lt;= ?1</query>
         </named-query>
+        <named-query name="WeblogEntryTagAggregateData.updateTotalByName&ampWeblogNull">
+            <query>UPDATE WeblogEntryTagAggregateData w SET w.total = w.total - ?1 WHERE w.name = ?2 AND weblog IS NULL</query>
+        </named-query>
         <attributes>
             <id name="id">
                 <column name="id"/>

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml Wed Dec  6 09:54:36 2006
@@ -12,6 +12,9 @@
     <entity metadata-complete="true" name="WeblogEntryTagData"
             class="org.apache.roller.pojos.WeblogEntryTagData">
         <table name="roller_weblogentrytag"/>
+        <named-query name="WeblogEntryTagData.getByWeblog">
+            <query>SELECT w FROM WeblogEntryTagData w WHERE w.weblog= ?1</query>
+        </named-query>
         <attributes>
             <id name="id">
                 <column name="id"/>