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);
}