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/09 00:36:28 UTC
svn commit: r392618 [4/5] - in
/incubator/roller/branches/roller-newbackend/src/org/roller/business: ./
hibernate/ search/operations/
Modified: incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java?rev=392618&r1=392617&r2=392618&view=diff
==============================================================================
--- incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java (original)
+++ incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateUserManagerImpl.java Sat Apr 8 15:36:25 2006
@@ -4,28 +4,30 @@
package org.roller.business.hibernate;
import java.util.ArrayList;
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
-
+import java.util.Map;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.criterion.SimpleExpression;
import org.roller.RollerException;
-import org.roller.business.PersistenceStrategy;
-import org.roller.business.UserManagerImpl;
+import org.roller.config.RollerConfig;
import org.roller.model.AutoPingManager;
import org.roller.model.BookmarkManager;
import org.roller.model.PingQueueManager;
import org.roller.model.PingTargetManager;
+import org.roller.model.Roller;
import org.roller.model.RollerFactory;
+import org.roller.model.UserManager;
import org.roller.model.WeblogManager;
+import org.roller.pojos.BookmarkData;
import org.roller.pojos.FolderData;
import org.roller.pojos.WeblogTemplate;
import org.roller.pojos.PermissionsData;
@@ -35,502 +37,902 @@
import org.roller.pojos.WeblogCategoryData;
import org.roller.pojos.WeblogEntryData;
import org.roller.pojos.WebsiteData;
+import org.roller.util.Utilities;
+
/**
- * Hibernate queries.
- * @author David M Johnson
+ * Hibernate implementation of the UserManager.
*/
-public class HibernateUserManagerImpl extends UserManagerImpl
-{
+public class HibernateUserManagerImpl implements UserManager {
+
static final long serialVersionUID = -5128460637997081121L;
- private static Log mLogger =
- LogFactory.getFactory().getInstance(HibernateUserManagerImpl.class);
-
- /** Doesn't seem to be any other way to get ignore case w/o QBE */
- class IgnoreCaseEqExpression extends SimpleExpression {
- public IgnoreCaseEqExpression(String property, Object value) {
- super(property, value, "=", true);
- }
- }
+ private static Log log = LogFactory.getLog(HibernateUserManagerImpl.class);
+
+ private HibernatePersistenceStrategy strategy = null;
+
/**
* @param strategy
*/
- public HibernateUserManagerImpl(PersistenceStrategy strategy)
- {
- super(strategy);
- mLogger.debug("Instantiating User Manager");
+ public HibernateUserManagerImpl(HibernatePersistenceStrategy strat) {
+ log.debug("Instantiating Hibernate User Manager");
+
+ this.strategy = strat;
}
- /**
- * Get websites of a user
+
+ /**
+ * @see org.roller.model.UserManager#storeWebsite(org.roller.pojos.WebsiteData)
*/
- public List getWebsites(UserData user, Boolean enabled, Boolean active) throws RollerException
- {
- try
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(WebsiteData.class);
- if (user != null)
- {
- criteria.createAlias("permissions","permissions");
- criteria.add(Expression.eq("permissions.user", user));
- criteria.add(Expression.eq("permissions.pending", Boolean.FALSE));
+ public void storeWebsite(WebsiteData data) throws RollerException {
+ this.strategy.storeAndCommit(data);
+ }
+
+
+ public void removeWebsite(String id) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ // load the weblog first
+ WebsiteData weblog = (WebsiteData) this.strategy.load(id, WebsiteData.class);
+
+ // remove contents first, then remove website
+ this.removeWebsiteContents(weblog);
+ this.strategy.remove(weblog);
+
+ // commit changes
+ this.strategy.getSession().getTransaction().commit();
+ } catch (Exception ex) {
+
+ try {
+ this.strategy.getSession().getTransaction().rollback();
+ } catch(HibernateException he) {
+ log.error("Error doing rollback", he);
}
- if (enabled != null)
- {
- criteria.add(Expression.eq("enabled", enabled));
+
+ strategy.release();
+
+ throw new RollerException(ex);
+ }
+ }
+
+
+ public void removeWebsite(WebsiteData weblog) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ // remove contents first, then remove website
+ this.removeWebsiteContents(weblog);
+ this.strategy.remove(weblog);
+
+ // commit changes
+ this.strategy.getSession().getTransaction().commit();
+ } catch (Exception ex) {
+
+ try {
+ this.strategy.getSession().getTransaction().rollback();
+ } catch(HibernateException he) {
+ log.error("Error doing rollback", he);
}
- if (active != null)
- {
- criteria.add(Expression.eq("active", active));
+
+ strategy.release();
+
+ throw new RollerException(ex);
+ }
+ }
+
+
+ /**
+ * convenience method for removing contents of a weblog.
+ *
+ * TODO: we may be able to do this faster using Hibernate delete statements.
+ */
+ private void removeWebsiteContents(WebsiteData website)
+ throws HibernateException, RollerException {
+
+ Session session = this.strategy.getSession();
+
+ BookmarkManager bmgr = RollerFactory.getRoller().getBookmarkManager();
+ WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+
+// // TODO: backend refactoring, tidy up ping removals
+// // Remove the website's ping queue entries
+// PingQueueManager pingQueueMgr = RollerFactory.getRoller().getPingQueueManager();
+// pingQueueMgr.removeQueueEntriesByWebsite(website);
+//
+// // Remove the website's custom ping targets
+// PingTargetManager pingTargetMgr = RollerFactory.getRoller().getPingTargetManager();
+// pingTargetMgr.removeCustomPingTargets(website);
+//
+// // Remove the website's auto ping configurations
+// AutoPingManager autoPingMgr = RollerFactory.getRoller().getAutopingManager();
+// List autopings = autoPingMgr.getAutoPingsByWebsite(website);
+// autoPingMgr.removeAutoPings(autopings);
+
+// // remove entries
+// Criteria entryQuery = session.createCriteria(WeblogEntryData.class);
+// entryQuery.add(Expression.eq("website", website));
+// List entries = entryQuery.list();
+// for (Iterator iter = entries.iterator(); iter.hasNext();) {
+// WeblogEntryData entry = (WeblogEntryData) iter.next();
+//
+// this.strategy.remove(entry);
+// }
+//
+// // remove associated pages
+// Criteria pageQuery = session.createCriteria(WeblogTemplate.class);
+// pageQuery.add(Expression.eq("website", website));
+// List pages = pageQuery.list();
+// for (Iterator iter = pages.iterator(); iter.hasNext();) {
+// WeblogTemplate page = (WeblogTemplate) iter.next();
+// this.strategy.remove(page);
+// }
+//
+// // remove associated referers
+// Criteria refererQuery = session.createCriteria(RefererData.class);
+// refererQuery.add(Expression.eq("website", website));
+// List referers = refererQuery.list();
+// for (Iterator iter = referers.iterator(); iter.hasNext();) {
+// RefererData referer = (RefererData) iter.next();
+// this.strategy.remove(referer);
+// }
+
+ // remove folders (including bookmarks)
+ FolderData rootFolder = bmgr.getRootFolder(website);
+ if (null != rootFolder) {
+ this.strategy.remove(rootFolder);
+
+ // Still cannot get all Bookmarks cleared!
+ Iterator allFolders = bmgr.getAllFolders(website).iterator();
+ while (allFolders.hasNext()) {
+ FolderData aFolder = (FolderData)allFolders.next();
+ // TODO: backend refactoring, how do we do this?
+ bmgr.deleteFolderContents(aFolder);
+ this.strategy.remove(aFolder);
}
- return criteria.list();
}
- catch (HibernateException e)
- {
- throw new RollerException(e);
+
+ // remove categories
+ WeblogCategoryData rootCat = wmgr.getRootWeblogCategory(website);
+ if (null != rootCat) {
+ this.strategy.remove(rootCat);
}
+
+ }
+
+
+ public void storeUser(UserData data) throws RollerException {
+ this.strategy.storeAndCommit(data);
}
+
+ public void removeUser(UserData user) throws RollerException {
+ this.strategy.removeAndCommit(user);
+ }
+
+
+ public void removeUser(String id) throws RollerException {
+ this.strategy.removeAndCommit(id,UserData.class);
+ }
+
+
+ public void storePermissions(PermissionsData perms) throws RollerException {
+ this.strategy.storeAndCommit(perms);
+ }
+
+
+ public void removePermissions(PermissionsData perms) throws RollerException {
+ this.strategy.removeAndCommit(perms);
+ }
+
+
/**
- * Get users of a website
+ * @see org.roller.model.UserManager#storePage(org.roller.pojos.WeblogTemplate)
*/
- public List getUsers(WebsiteData website, Boolean enabled)
- throws RollerException
- {
- try
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(UserData.class);
- if (website != null)
- {
- criteria.createAlias("permissions","permissions");
- criteria.add(Expression.eq("permissions.website", website));
+ public void storePage(WeblogTemplate data) throws RollerException {
+ this.strategy.storeAndCommit(data);
+ }
+
+
+ public void removePage(String id) throws RollerException {
+ this.strategy.removeAndCommit(id,WeblogTemplate.class);
+ }
+
+
+ // TODO: EOL this method, logic about safe pages goes outside the persistence layer
+ public void removePageSafely(String id) throws RollerException {
+
+ // TODO: rewrite using page.isRequired()
+ WeblogTemplate pd = retrievePageReadOnly(id);
+ if (pd == null) return;
+
+ WebsiteData wd = pd.getWebsite();
+ if (pd.getId() == wd.getDefaultPageId()) {
+ log.error(
+ "Refusing to remove default page from website with handle: "
+ + wd.getHandle());
+ throw new RollerException(
+ new IllegalArgumentException("Page is default page of website."));
+ }
+ removePage(id);
+ }
+
+
+ /**
+ * TODO: EOL this method? doesn't seem to be used
+ */
+ public String fixPageLink(WeblogTemplate data) throws RollerException {
+ String link = Utilities.removeHTML(data.getName());
+ link = Utilities.removeNonAlphanumeric(link);
+
+ data.setLink(link);
+ this.strategy.storeAndCommit(data);
+
+ return link;
+ }
+
+
+ /**
+ * Add a new Roller user.
+ *
+ * TODO: do we really need this method? probably better if roles are added
+ * elsewhere and then we just use storeUser().
+ */
+ public void addUser(UserData ud) throws RollerException {
+
+ if(getUser(ud.getUserName()) != null ||
+ getUser(ud.getUserName().toLowerCase()) != null) {
+ throw new RollerException("error.add.user.userNameInUse");
+ }
+
+ // TODO: we must do this in a better fashion, like getUserCnt()?
+ boolean adminUser = false;
+ List users = this.getUsers();
+ if (users.size() == 0) {
+ // Make first user an admin
+ adminUser = true;
+ }
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ // add user
+ this.strategy.store(ud);
+
+ // and roles
+ RoleData editorRole = new RoleData(null, ud, "editor");
+ this.strategy.store(editorRole);
+
+ if (adminUser) {
+ RoleData adminRole = new RoleData(null, ud, "admin");
+ this.strategy.store(adminRole);
}
- if (enabled != null)
- {
- criteria.add(Expression.eq("enabled", enabled));
+
+ // commit changes
+ this.strategy.getSession().getTransaction().commit();
+ } catch (HibernateException ex) {
+
+ try {
+ this.strategy.getSession().getTransaction().rollback();
+ } catch(HibernateException he) {
+ log.error("Error doing rollback", he);
}
- return criteria.list();
+
+ strategy.release();
+
+ throw new RollerException(ex);
}
- catch (HibernateException e)
- {
- throw new RollerException(e);
+
+ }
+
+
+ public void createWebsite(WebsiteData newWebsite) throws RollerException {
+
+ UserManager umgr = RollerFactory.getRoller().getUserManager();
+ WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ // store the new weblog
+ this.strategy.store(newWebsite);
+
+ // grant weblog creator ADMIN permissions
+ PermissionsData perms = new PermissionsData();
+ perms.setUser(newWebsite.getCreator());
+ perms.setWebsite(newWebsite);
+ perms.setPending(false);
+ perms.setPermissionMask(PermissionsData.ADMIN);
+ this.strategy.store(perms);
+
+ // add default categories
+ WeblogCategoryData rootCat = wmgr.createWeblogCategory(
+ newWebsite, // newWebsite
+ null, // parent
+ "root", // name
+ "root", // description
+ null ); // image
+ this.strategy.store(rootCat);
+
+ String cats = RollerConfig.getProperty("newuser.categories");
+ if (cats != null) {
+ String[] splitcats = cats.split(",");
+ for (int i=0; i<splitcats.length; i++) {
+ WeblogCategoryData c = wmgr.createWeblogCategory(
+ newWebsite, // newWebsite
+ rootCat, // parent
+ splitcats[i], // name
+ splitcats[i], // description
+ null ); // image
+ this.strategy.store(c);
+ }
+ }
+ newWebsite.setBloggerCategory(rootCat);
+ newWebsite.setDefaultCategory(rootCat);
+ this.strategy.store(newWebsite);
+
+ // add default bookmarks
+ BookmarkManager bmgr = RollerFactory.getRoller().getBookmarkManager();
+ FolderData root = bmgr.createFolder(
+ null, "root", "root", newWebsite);
+ this.strategy.store(root);
+
+ Integer zero = new Integer(0);
+ String blogroll = RollerConfig.getProperty("newuser.blogroll");
+ if (blogroll != null) {
+ String[] splitroll = blogroll.split(",");
+ for (int i=0; i<splitroll.length; i++) {
+ String[] rollitems = splitroll[i].split("\\|");
+ if (rollitems != null && rollitems.length > 1) {
+ BookmarkData b = bmgr.createBookmark(
+ root, // parent
+ rollitems[0], // name
+ "", // description
+ rollitems[1].trim(), // url
+ null, // feedurl
+ zero, // weight
+ zero, // priority
+ null); // image
+ this.strategy.store(b);
+ }
+ }
+ }
+
+ // commit changes
+ this.strategy.getSession().getTransaction().commit();
+
+ } catch (HibernateException ex) {
+
+ try {
+ this.strategy.getSession().getTransaction().rollback();
+ } catch(HibernateException he) {
+ log.error("Error doing rollback", he);
+ }
+
+ strategy.release();
+
+ throw new RollerException(ex);
}
}
- /**
- * Use Hibernate directly because Roller's Query API does too much allocation.
+
+ /**
+ * The old createWebsite() method.
*/
- public WeblogTemplate getPageByLink(WebsiteData website, String pagelink)
- throws RollerException
- {
- if (website == null)
- throw new RollerException("userName is null");
-
- if (pagelink == null)
- throw new RollerException("Pagelink is null");
-
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(WeblogTemplate.class);
- criteria.add(Expression.eq("website",website));
- criteria.add(Expression.eq("link",pagelink));
- criteria.setMaxResults(1);
- try
- {
- List list = criteria.list();
- return list.size()!=0 ? (WeblogTemplate)list.get(0) : null;
- }
- catch (HibernateException e)
- {
- throw new RollerException(e);
+ public WebsiteData createWebsite(UserData user, Map pages, String handle,
+ String name, String description,
+ String email, String theme, String locale,
+ String timeZone) throws RollerException {
+
+ WebsiteData website = new WebsiteData(
+ null, // id
+ name, // name
+ handle, // handle
+ description, // description
+ user, // userId
+ "dummy", // defaultPageId
+ "dummy", // weblogDayPageId
+ Boolean.TRUE, // enableBloggerApi
+ null, // bloggerCategory
+ null, // defaultCategory
+ "editor-text.jsp", // editorPage
+ "", // blacklist
+ Boolean.TRUE, // allowComments
+ Boolean.FALSE, // emailComments
+ "", // emailFromAddress
+ Boolean.TRUE, // isEnabled
+ email, // emailAddress
+ new Date(), // dateCreated
+ Boolean.TRUE, // defaultAllowComments
+ 0, // defaultCommentDays
+ Boolean.FALSE); // moderateComments
+ website.setEditorTheme(theme);
+ website.setLocale(locale);
+ website.setTimeZone(timeZone);
+
+ this.createWebsite(website);
+
+ return website;
+ }
+
+ /**
+ * Creates and stores a pending PermissionsData for user and website specified.
+ *
+ * TODO: do we really need this? can't we just use storePermissions()?
+ */
+ public PermissionsData inviteUser(WebsiteData website,
+ UserData user, short mask) throws RollerException {
+
+ if (website == null) throw new RollerException("Website cannot be null");
+ if (user == null) throw new RollerException("User cannot be null");
+
+ PermissionsData perms = new PermissionsData();
+ perms.setWebsite(website);
+ perms.setUser(user);
+ perms.setPermissionMask(mask);
+ this.strategy.storeAndCommit(perms);
+
+ return perms;
+ }
+
+
+ /**
+ * Remove user permissions from a website.
+ */
+ public void retireUser(WebsiteData website, UserData user) throws RollerException {
+
+ if (website == null) throw new RollerException("Website cannot be null");
+ if (user == null) throw new RollerException("User cannot be null");
+
+ Iterator perms = website.getPermissions().iterator();
+ PermissionsData target = null;
+ while (perms.hasNext()) {
+ PermissionsData pd = (PermissionsData)perms.next();
+ if (pd.getUser().getId().equals(user.getId())) {
+ target = pd;
+ break;
+ }
}
+ if (target == null) throw new RollerException("User not member of website");
+
+ website.removePermission(target);
+ this.strategy.removeAndCommit(target);
}
-
- /**
+
+
+ public WebsiteData retrieveWebsite(String id) throws RollerException {
+ return (WebsiteData)this.strategy.load(id,WebsiteData.class);
+ }
+
+
+ public WebsiteData getWebsiteByHandle(String handle) throws RollerException {
+ return getWebsiteByHandle(handle, Boolean.TRUE);
+ }
+
+
+ /**
* Return website specified by handle.
*/
public WebsiteData getWebsiteByHandle(String handle, Boolean enabled)
- throws RollerException
- {
+ throws RollerException {
+
if (handle==null )
throw new RollerException("Handle cannot be null");
-
- try
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
Criteria criteria = session.createCriteria(WebsiteData.class);
- if (enabled != null)
- {
+ if (enabled != null) {
criteria.add(
- Expression.conjunction()
- .add(new IgnoreCaseEqExpression("handle", handle))
- .add(Expression.eq("enabled", enabled)));
- }
- else
- {
+ Expression.conjunction()
+ .add(new IgnoreCaseEqExpression("handle", handle))
+ .add(Expression.eq("enabled", enabled)));
+ } else {
criteria.add(
- Expression.conjunction()
+ Expression.conjunction()
.add(Expression.eq("handle", handle)));
- }
+ }
WebsiteData website = (WebsiteData)criteria.uniqueResult();
return website;
+ } catch (HibernateException e) {
+ throw new RollerException(e);
}
- catch (HibernateException e)
- {
+ }
+
+
+ /**
+ * Get websites of a user
+ */
+ public List getWebsites(UserData user, Boolean enabled, Boolean active) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(WebsiteData.class);
+ if (user != null) {
+ criteria.createAlias("permissions","permissions");
+ criteria.add(Expression.eq("permissions.user", user));
+ criteria.add(Expression.eq("permissions.pending", Boolean.FALSE));
+ }
+ if (enabled != null) {
+ criteria.add(Expression.eq("enabled", enabled));
+ }
+ if (active != null) {
+ criteria.add(Expression.eq("active", active));
+ }
+ return criteria.list();
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- public UserData getUser(String userName, Boolean enabled)
- throws RollerException
- {
+
+ public UserData retrieveUser(String id) throws RollerException {
+ return (UserData)this.strategy.load(id,UserData.class);
+ }
+
+
+ public UserData getUser(String userName) throws RollerException {
+ return getUser(userName, Boolean.TRUE);
+ }
+
+
+ public UserData getUser(String userName, Boolean enabled)
+ throws RollerException {
+
if (userName==null )
throw new RollerException("userName cannot be null");
-
- try
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
Criteria criteria = session.createCriteria(UserData.class);
- if (enabled != null)
- {
+ if (enabled != null) {
criteria.add(
- Expression.conjunction()
- .add(Expression.eq("userName", userName))
- .add(Expression.eq("enabled", enabled)));
- }
- else
- {
+ Expression.conjunction()
+ .add(Expression.eq("userName", userName))
+ .add(Expression.eq("enabled", enabled)));
+ } else {
criteria.add(
- Expression.conjunction()
+ Expression.conjunction()
.add(Expression.eq("userName", userName)));
- }
+ }
return (UserData)criteria.uniqueResult();
+ } catch (HibernateException e) {
+ throw new RollerException(e);
}
- catch (HibernateException e)
- {
+ }
+
+
+ public List getUsers() throws RollerException {
+ return getUsers(Boolean.TRUE);
+ }
+
+
+ public List getUsers(Boolean enabled) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(UserData.class);
+ if (enabled != null) {
+ criteria.add(Expression.eq("enabled", enabled));
+ }
+
+ return criteria.list();
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
- //------------------------------------------------------------------------
- /**
- * @see org.roller.model.UserManager#getPages(WebsiteData)
+
+ /**
+ * Get users of a website
*/
- public List getPages(WebsiteData website) throws RollerException
- {
- if (website == null)
- throw new RollerException("website is null");
-
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(WeblogTemplate.class);
- criteria.add(Expression.eq("website",website));
- criteria.addOrder(Order.asc("name"));
- try
- {
+ public List getUsers(WebsiteData website, Boolean enabled) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(UserData.class);
+ if (website != null) {
+ criteria.createAlias("permissions","permissions");
+ criteria.add(Expression.eq("permissions.website", website));
+ }
+ if (enabled != null) {
+ criteria.add(Expression.eq("enabled", enabled));
+ }
return criteria.list();
+ } catch (HibernateException e) {
+ throw new RollerException(e);
}
- catch (HibernateException e)
- {
+ }
+
+
+ public List getUsersStartingWith(String startsWith,
+ int offset, int length, Boolean enabled) throws RollerException {
+
+ List rawresults = new ArrayList();
+ List results = new ArrayList();
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(UserData.class);
+
+ if (enabled != null) {
+ criteria.add(Expression.eq("enabled", enabled));
+ }
+ if (startsWith != null) {
+ criteria.add(Expression.disjunction()
+ .add(Expression.like("userName", startsWith, MatchMode.START))
+ .add(Expression.like("emailAddress", startsWith, MatchMode.START)));
+ }
+
+ rawresults = criteria.list();
+ } catch (HibernateException e) {
throw new RollerException(e);
}
+ int pos = 0;
+ int count = 0;
+ Iterator iter = rawresults.iterator();
+ while (iter.hasNext() && count < length) {
+ UserData user = (UserData)iter.next();
+ if (pos++ >= offset) {
+ results.add(user);
+ count++;
+ }
+ }
+ return results;
}
- /**
- * @see org.roller.model.UserManager#getPageByName(WebsiteData, java.lang.String)
+
+ public WeblogTemplate retrievePage(String id) throws RollerException {
+ // Don't hit database for templates stored on disk
+ if (id != null && id.endsWith(".vm")) return null;
+
+ return (WeblogTemplate)this.strategy.load(id,WeblogTemplate.class);
+ }
+
+
+ /**
+ * @see org.roller.model.UserManager#retrievePage(java.lang.String)
+ *
+ * TODO: EOL this method, it is useless
+ */
+ public WeblogTemplate retrievePageReadOnly(String id) throws RollerException {
+ // Don't hit database for templates stored on disk
+ if (id != null && id.endsWith(".vm")) return null;
+
+ // Hibernate has a read-only flag: LockMode.READ
+ return (WeblogTemplate)this.strategy.load(id,WeblogTemplate.class);
+ }
+
+
+ /**
+ * Use Hibernate directly because Roller's Query API does too much allocation.
*/
- public WeblogTemplate getPageByName(WebsiteData website, String pagename)
- throws RollerException
- {
+ public WeblogTemplate getPageByLink(WebsiteData website, String pagelink)
+ throws RollerException {
+
if (website == null)
- throw new RollerException("website is null");
-
- if (pagename == null)
- throw new RollerException("Page name is null");
-
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(WeblogTemplate.class);
- criteria.add(Expression.eq("website", website));
- criteria.add(Expression.eq("name", pagename));
- criteria.setMaxResults(1);
- try
- {
+ throw new RollerException("userName is null");
+
+ if (pagelink == null)
+ throw new RollerException("Pagelink is null");
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(WeblogTemplate.class);
+ criteria.add(Expression.eq("website",website));
+ criteria.add(Expression.eq("link",pagelink));
+ criteria.setMaxResults(1);
+
List list = criteria.list();
return list.size()!=0 ? (WeblogTemplate)list.get(0) : null;
- }
- catch (HibernateException e)
- {
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
- /*
- * @see org.roller.business.UserManagerBase#getRoles(org.roller.pojos.UserData)
+
+ /**
+ * @see org.roller.model.UserManager#getPageByName(WebsiteData, java.lang.String)
*/
- public List getUserRoles(UserData user) throws RollerException
- {
+ public WeblogTemplate getPageByName(WebsiteData website, String pagename)
+ throws RollerException {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(RoleData.class);
- criteria.add(Expression.eq("user", user));
- try
- {
- return criteria.list();
- }
- catch (HibernateException e)
- {
- throw new RollerException(e);
- }
- }
-
- public List getUsers(Boolean enabled) throws RollerException
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(UserData.class);
- if (enabled != null)
- {
- criteria.add(Expression.eq("enabled", enabled));
- }
- try
- {
- return criteria.list();
- }
- catch (HibernateException e)
- {
+ if (website == null)
+ throw new RollerException("website is null");
+
+ if (pagename == null)
+ throw new RollerException("Page name is null");
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(WeblogTemplate.class);
+ criteria.add(Expression.eq("website", website));
+ criteria.add(Expression.eq("name", pagename));
+ criteria.setMaxResults(1);
+
+ List list = criteria.list();
+ return list.size()!=0? (WeblogTemplate)list.get(0) : null;
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
-
- /**
- * @see org.roller.model.UserManager#removeWebsiteContents(org.roller.pojos.WebsiteData)
+
+
+ /**
+ * @see org.roller.model.UserManager#getPages(WebsiteData)
*/
- public void removeWebsiteContents(WebsiteData website)
- throws RollerException
- {
- try
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
-
- //UserManager umgr = RollerFactory.getRoller().getUserManager();
- BookmarkManager bmgr = RollerFactory.getRoller().getBookmarkManager();
- WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+ public List getPages(WebsiteData website) throws RollerException {
+
+ if (website == null)
+ throw new RollerException("website is null");
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
- // remove entries
- Criteria entryQuery = session.createCriteria(WeblogEntryData.class);
- entryQuery.add(Expression.eq("website", website));
- List entries = entryQuery.list();
- for (Iterator iter = entries.iterator(); iter.hasNext();)
- {
- WeblogEntryData entry = (WeblogEntryData) iter.next();
- System.out.println("Removing entry: " + entry.getId());
- entry.remove();
- }
-
- // remove folders (takes bookmarks with it)
- FolderData rootFolder = bmgr.getRootFolder(website);
- if (null != rootFolder)
- {
- rootFolder.remove();
- // Still cannot get all Bookmarks cleared!
- Iterator allFolders = bmgr.getAllFolders(website).iterator();
- while (allFolders.hasNext())
- {
- FolderData aFolder = (FolderData)allFolders.next();
- bmgr.deleteFolderContents(aFolder);
- aFolder.remove();
- }
- }
-
- // remove associated pages
- Criteria pageQuery = session.createCriteria(WeblogTemplate.class);
- pageQuery.add(Expression.eq("website", website));
- List pages = pageQuery.list();
- for (Iterator iter = pages.iterator(); iter.hasNext();)
- {
- WeblogTemplate page = (WeblogTemplate) iter.next();
- page.remove();
- }
-
- // remove associated referers
- Criteria refererQuery = session.createCriteria(RefererData.class);
- refererQuery.add(Expression.eq("website", website));
- List referers = refererQuery.list();
- for (Iterator iter = referers.iterator(); iter.hasNext();)
- {
- RefererData referer = (RefererData) iter.next();
- referer.remove();
- }
-
- // remove categories
- WeblogCategoryData rootCat = wmgr.getRootWeblogCategory(website);
- if (null != rootCat)
- {
- rootCat.remove();
-// Iterator it = wmgr.getWeblogCategories(website).iterator();
-// while (it.hasNext())
-// {
-// ((WeblogCategoryData)it.next()).remove();
-// }
- }
-
- // Remove the website's ping queue entries
- PingQueueManager pingQueueMgr = RollerFactory.getRoller().getPingQueueManager();
- pingQueueMgr.removeQueueEntriesByWebsite(website);
-
- // Remove the website's custom ping targets
- PingTargetManager pingTargetMgr = RollerFactory.getRoller().getPingTargetManager();
- pingTargetMgr.removeCustomPingTargets(website);
-
- // Remove the website's auto ping configurations
- AutoPingManager autoPingMgr = RollerFactory.getRoller().getAutopingManager();
- List autopings = autoPingMgr.getAutoPingsByWebsite(website);
- autoPingMgr.removeAutoPings(autopings);
-
- }
- catch (HibernateException e)
- {
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(WeblogTemplate.class);
+ criteria.add(Expression.eq("website",website));
+ criteria.addOrder(Order.asc("name"));
+
+ return criteria.list();
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
-
+
+
+ public PermissionsData retrievePermissions(String inviteId) throws RollerException {
+ return (PermissionsData)this.strategy.load(inviteId, PermissionsData.class);
+ }
+
+
/**
* Return permissions for specified user in website
*/
public PermissionsData getPermissions(
- WebsiteData website, UserData user) throws RollerException
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(PermissionsData.class);
- criteria.add(Expression.eq("website", website));
- criteria.add(Expression.eq("user", user));
- try
- {
+ WebsiteData website, UserData user) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(PermissionsData.class);
+ criteria.add(Expression.eq("website", website));
+ criteria.add(Expression.eq("user", user));
+
List list = criteria.list();
return list.size()!=0 ? (PermissionsData)list.get(0) : null;
- }
- catch (HibernateException e)
- {
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
- /**
+
+ /**
* Get pending permissions for user
*/
- public List getPendingPermissions(UserData user) throws RollerException
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(PermissionsData.class);
- criteria.add(Expression.eq("user", user));
- criteria.add(Expression.eq("pending", Boolean.TRUE));
- try
- {
+ public List getPendingPermissions(UserData user) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(PermissionsData.class);
+ criteria.add(Expression.eq("user", user));
+ criteria.add(Expression.eq("pending", Boolean.TRUE));
+
return criteria.list();
- }
- catch (HibernateException e)
- {
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
- /**
+
+ /**
* Get pending permissions for website
*/
- public List getPendingPermissions(WebsiteData website) throws RollerException
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(PermissionsData.class);
- criteria.add(Expression.eq("website", website));
- criteria.add(Expression.eq("pending", Boolean.TRUE));
- try
- {
+ public List getPendingPermissions(WebsiteData website) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(PermissionsData.class);
+ criteria.add(Expression.eq("website", website));
+ criteria.add(Expression.eq("pending", Boolean.TRUE));
+
return criteria.list();
- }
- catch (HibernateException e)
- {
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
-
+
+
/**
* Get all permissions of a website (pendings not including)
*/
- public List getAllPermissions(WebsiteData website) throws RollerException
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(PermissionsData.class);
- criteria.add(Expression.eq("website", website));
- criteria.add(Expression.eq("pending", Boolean.FALSE));
- try
- {
+ public List getAllPermissions(WebsiteData website) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(PermissionsData.class);
+ criteria.add(Expression.eq("website", website));
+ criteria.add(Expression.eq("pending", Boolean.FALSE));
+
return criteria.list();
- }
- catch (HibernateException e)
- {
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
-
+
+
/**
* Get all permissions of a user.
*/
- public List getAllPermissions(UserData user) throws RollerException
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(PermissionsData.class);
- criteria.add(Expression.eq("user", user));
- criteria.add(Expression.eq("pending", Boolean.FALSE));
- try
- {
+ public List getAllPermissions(UserData user) throws RollerException {
+
+ try {
+ // begin transaction
+ this.strategy.getSession().beginTransaction();
+
+ Session session = ((HibernatePersistenceStrategy)this.strategy).getSession();
+ Criteria criteria = session.createCriteria(PermissionsData.class);
+ criteria.add(Expression.eq("user", user));
+ criteria.add(Expression.eq("pending", Boolean.FALSE));
+
return criteria.list();
- }
- catch (HibernateException e)
- {
+ } catch (HibernateException e) {
throw new RollerException(e);
}
}
-
- public List getUsersStartingWith(String startsWith,
- int offset, int length, Boolean enabled) throws RollerException
- {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(UserData.class);
- List rawresults = new ArrayList();
- List results = new ArrayList();
- if (enabled != null)
- {
- criteria.add(Expression.eq("enabled", enabled));
- }
- if (startsWith != null)
- {
- criteria.add(Expression.disjunction()
- .add(Expression.like("userName", startsWith, MatchMode.START))
- .add(Expression.like("emailAddress", startsWith, MatchMode.START)));
- }
- try
- {
- rawresults = criteria.list();
- }
- catch (HibernateException e)
- {
- throw new RollerException(e);
- }
- int pos = 0;
- int count = 0;
- Iterator iter = rawresults.iterator();
- while (iter.hasNext() && count < length)
- {
- UserData user = (UserData)iter.next();
- if (pos++ >= offset)
- {
- results.add(user);
- count++;
- }
+
+
+ public void release() {}
+
+
+ /** Doesn't seem to be any other way to get ignore case w/o QBE */
+ class IgnoreCaseEqExpression extends SimpleExpression {
+ public IgnoreCaseEqExpression(String property, Object value) {
+ super(property, value, "=", true);
}
- return results;
}
+
}