package org.sakaiproject.tool.assessment.facade; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.sakaiproject.tool.assessment.data.dao.assessment.FavoriteColChoices; import org.sakaiproject.tool.assessment.services.PersistenceService; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class FavoriteColChoicesFacadeQueries extends HibernateDaoSupport implements FavoriteColChoicesFacadeQueriesAPI { private static Log log = LogFactory.getLog(FavoriteColChoicesFacadeQueries.class); public FavoriteColChoicesFacadeQueries () { } public void saveOrUpdate(final FavoriteColChoices choices) { List favoriteList = null; final String query = "from FavoriteColChoices as a " + "where a.favoriteName=? "; HibernateCallback hcb = new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query q = session.createQuery(query); q.setString(0, choices.getFavoriteName()); return q.list(); }; }; favoriteList = getHibernateTemplate().executeFind(hcb); if(favoriteList != null){ Iterator iter = favoriteList.iterator(); if(iter.hasNext()){ FavoriteColChoices fChoice = (FavoriteColChoices)iter.next(); //remove the existing entry getHibernateTemplate().delete(fChoice); } } int retryCount = PersistenceService.getInstance().getPersistenceHelper().getRetryCount().intValue(); while (retryCount > 0){ try { getHibernateTemplate().save(choices); retryCount = 0; } catch (Exception e) { log.warn("problem saving favoriteColChoices: "+e.getMessage()); retryCount = PersistenceService.getInstance().getPersistenceHelper().retryDeadlock(e, retryCount); } } } public List getFavoriteColChoicesByAgent(final String siteAgentId){ final String query = "from FavoriteColChoices as a " + "where a.ownerStringId=? "; //"order by b.sequence"; HibernateCallback hcb = new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query q = session.createQuery(query); q.setString(0, siteAgentId); return q.list(); }; }; return getHibernateTemplate().executeFind(hcb); } }