Update of /cvsroot/roller/roller/src/org/roller/business/hibernate
In directory sc8-pr-cvs1:/tmp/cvs-serv30595/src/org/roller/business/hibernate
Modified Files:
RollerImpl.java
Log Message:
Beginnings of hierarchical categories
Index: RollerImpl.java
===================================================================
RCS file:
/cvsroot/roller/roller/src/org/roller/business/hibernate/RollerImpl.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** RollerImpl.java 30 Nov 2003 17:00:45 -0000 1.20
--- RollerImpl.java 12 Dec 2003 02:57:24 -0000 1.21
***************
*** 14,19 ****
--- 14,24 ----
import org.roller.business.UserManagerImpl;
import org.roller.business.WeblogManagerImpl;
+ import org.roller.persistence.Condition;
import org.roller.persistence.PersistenceStrategy;
+ import org.roller.persistence.Query;
+ import org.roller.persistence.QueryFactory;
import org.roller.persistence.hibernate.*;
+ import org.roller.pojos.WeblogCategoryData;
+ import org.roller.pojos.WebsiteData;
import org.roller.model.BookmarkManager;
import org.roller.model.RefererManager;
***************
*** 23,26 ****
--- 28,33 ----
import java.io.Serializable;
+ import java.util.Iterator;
+ import java.util.List;
import javax.servlet.ServletContext;
***************
*** 192,194 ****
--- 199,279 ----
}
+ /**
+ * Currently, this implementation just checks for root categories.
+ * If a website does not have a root category, this will create one.
+ *
+ * @see org.roller.model.Roller#upgradeIfNeeded()
+ */
+ public void upgradeIfNeeded() throws RollerException
+ {
+ QueryFactory factory = mStrategy.getQueryFactory();
+
+ // check to see if any root categories exist
+ Query rootCatQuery =
+ factory.createQuery(WeblogCategoryData.class.getName());
+ rootCatQuery.setWhere(factory.createCondition(
+ factory.createCondition("name", Query.EQ, "root"),
+ Query.AND,
+ factory.createCondition("parent", Query.IS_NULL)));
+ List roots = rootCatQuery.execute();
+
+ if (roots.size() == 0)
+ {
+ // no root categories, so lets create them
+
+ // iterate through websites
+ Query websiteQuery =
+ factory.createQuery(WebsiteData.class.getName());
+ Iterator websites = websiteQuery.execute().iterator();
+ while (websites.hasNext())
+ {
+ WebsiteData wd = (WebsiteData) websites.next();
+
+ // create root cat for each
+ WeblogCategoryData rootCat =
+ getWeblogManager().createWeblogCategory(
+ wd, null, "root", "root", null);
+ getWeblogManager().storeWeblogCategory(rootCat);
+
+ // iterate through cats in website
+ Query allCats =
+ factory.createQuery(WeblogCategoryData.class.getName());
+ allCats.setWhere(
+ factory.createCondition("name", Query.NE, "root"));
+ Iterator cats = allCats.execute().iterator();
+ while (cats.hasNext())
+ {
+ WeblogCategoryData cat = (WeblogCategoryData) cats.next();
+ cat.setParent(rootCat);
+ }
+ }
+ }
+ }
+
+ /**
+ * Destroy:
+ * websites that have no user
+ * folders that have no website
+ * non-root folders that have no parent folder
+ * bookmarks that have no folder or folder
+ * categories that have no website
+ * non-root categories that have no parent category
+ */
+ public void cleanupOrphans() throws RollerException
+ {
+ // TODO: implement this as a separate cleanup script?
+ // TODO: is there a way to get MySQL to enforce referential integrity?
+
+ // May need to go straight to JDBC as this approach will not work:
+
+ QueryFactory factory = mStrategy.getQueryFactory();
+
+ Query orphanedCatsQuery =
+ factory.createQuery(WeblogCategoryData.class.getName());
+ orphanedCatsQuery.setWhere(
+ factory.createCondition("website", Query.IS_NULL));
+
+ List orphanedCats = orphanedCatsQuery.execute();
+
+ }
}
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills. Sign up for IBM's
Free Linux Tutorials. Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
|