You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2006/04/12 02:19:29 UTC

svn commit: r393338 - /incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateWeblogManagerImpl.java

Author: agilliland
Date: Tue Apr 11 17:19:27 2006
New Revision: 393338

URL: http://svn.apache.org/viewcvs?rev=393338&view=rev
Log:
catching Throwables instead of HibernateExceptions on commits.
implementing moveCategory method.


Modified:
    incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateWeblogManagerImpl.java

Modified: incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateWeblogManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateWeblogManagerImpl.java?rev=393338&r1=393337&r2=393338&view=diff
==============================================================================
--- incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateWeblogManagerImpl.java (original)
+++ incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateWeblogManagerImpl.java Tue Apr 11 17:19:27 2006
@@ -97,47 +97,68 @@
     }
     
     
-    // TODO BACKEND: backend refactorings, transaction support
     public void moveWeblogCategoryContents(String srcId, String destId)
             throws RollerException {
         
-        WeblogCategoryData srcCd =
-                (WeblogCategoryData) this.strategy.load(
-                srcId, WeblogCategoryData.class);
-        
-        WeblogCategoryData destCd =
-                (WeblogCategoryData) this.strategy.load(
-                destId, WeblogCategoryData.class);
-        
-        if (destCd.descendentOf(srcCd)) {
-            throw new RollerException(
-                    "ERROR cannot move parent category into it's own child");
-        }
-        
-        // get all entries in category and subcats
-        List results = retrieveWeblogEntries(srcCd, true);
-        
-        // Loop through entries in src cat, assign them to dest cat
-        Iterator iter = results.iterator();
-        WebsiteData website = destCd.getWebsite();
-        while (iter.hasNext()) {
-            WeblogEntryData entry = (WeblogEntryData) iter.next();
-            entry.setCategory(destCd);
-            entry.setWebsite(website);
-            entry.save();
-        }
-        
-        // Make sure website's default and bloggerapi categories
-        // are valid after the move
-        
-        if (srcCd.getWebsite().getDefaultCategory().getId().equals(srcId)
-        || srcCd.getWebsite().getDefaultCategory().descendentOf(srcCd)) {
-            srcCd.getWebsite().setDefaultCategory(destCd);
-        }
-        
-        if (srcCd.getWebsite().getBloggerCategory().getId().equals(srcId)
-        || srcCd.getWebsite().getBloggerCategory().descendentOf(srcCd)) {
-            srcCd.getWebsite().setBloggerCategory(destCd);
+        try {
+            // begin transaction
+            this.strategy.getSession().beginTransaction();
+            
+            WeblogCategoryData srcCd =
+                    (WeblogCategoryData) this.strategy.load(
+                    srcId, WeblogCategoryData.class);
+            
+            WeblogCategoryData destCd =
+                    (WeblogCategoryData) this.strategy.load(
+                    destId, WeblogCategoryData.class);
+            
+            // TODO: this check should be made before calling this method?
+            if (destCd.descendentOf(srcCd)) {
+                throw new RollerException(
+                        "ERROR cannot move parent category into it's own child");
+            }
+            
+            // get all entries in category and subcats
+            List results = retrieveWeblogEntries(srcCd, true);
+            
+            // Loop through entries in src cat, assign them to dest cat
+            Iterator iter = results.iterator();
+            WebsiteData website = destCd.getWebsite();
+            while (iter.hasNext()) {
+                WeblogEntryData entry = (WeblogEntryData) iter.next();
+                entry.setCategory(destCd);
+                entry.setWebsite(website);
+                this.strategy.store(entry);
+            }
+            
+            // Make sure website's default and bloggerapi categories
+            // are valid after the move
+            
+            if (srcCd.getWebsite().getDefaultCategory().getId().equals(srcId)
+            || srcCd.getWebsite().getDefaultCategory().descendentOf(srcCd)) {
+                srcCd.getWebsite().setDefaultCategory(destCd);
+                this.strategy.store(srcCd.getWebsite());
+            }
+            
+            if (srcCd.getWebsite().getBloggerCategory().getId().equals(srcId)
+            || srcCd.getWebsite().getBloggerCategory().descendentOf(srcCd)) {
+                srcCd.getWebsite().setBloggerCategory(destCd);
+                this.strategy.store(srcCd.getWebsite());
+            }
+            
+            // commit changes
+            this.strategy.getSession().getTransaction().commit();
+        } catch (Throwable ex) {
+            
+            try {
+                this.strategy.getSession().getTransaction().rollback();
+            } catch(Throwable he) {
+                log.error("Error doing rollback", he);
+            }
+            
+            strategy.release();
+            
+            throw new RollerException(ex);
         }
     }
     
@@ -172,11 +193,11 @@
             
             // commit changes
             this.strategy.getSession().getTransaction().commit();
-        } catch (HibernateException ex) {
+        } catch (Throwable ex) {
             
             try {
                 this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
+            } catch(Throwable he) {
                 log.error("Error doing rollback", he);
             }
             
@@ -231,11 +252,11 @@
             
             // commit changes
             this.strategy.getSession().getTransaction().commit();
-        } catch (HibernateException ex) {
+        } catch (Throwable ex) {
             
             try {
                 this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
+            } catch(Throwable he) {
                 log.error("Error doing rollback", he);
             }
             
@@ -301,11 +322,11 @@
             
             // commit changes
             this.strategy.getSession().getTransaction().commit();
-        } catch (HibernateException ex) {
+        } catch (Throwable ex) {
             
             try {
                 this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
+            } catch(Throwable he) {
                 log.error("Error doing rollback", he);
             }
             
@@ -358,11 +379,11 @@
             
             // commit changes
             this.strategy.getSession().getTransaction().commit();
-        } catch (HibernateException ex) {
+        } catch (Throwable ex) {
             
             try {
                 this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
+            } catch(Throwable he) {
                 log.error("Error doing rollback", he);
             }