package org.appfuse.persistence.hibernate;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.appfuse.persistence.DAOException;
import org.appfuse.persistence.LookupDAO;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;


/**
 * Hibernate implementation of LookupDAO.
 * <p/>
 * <p/>
 * <a href="LookupDAOHibernate.java.html"><i>View Source</i></a>
 * </p>
 *
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 * @version $Revision: 1.2 $ $Date: 2004/04/02 08:49:28 $
 */
public class LookupDAOHibernate extends HibernateDaoSupport implements LookupDAO {
    private Log log = LogFactory.getLog(LookupDAOHibernate.class);

    /**
     * @see org.appfuse.persistence.LookupDAO#getRoles()
     */
    public List getRoles() throws DAOException {
        if (log.isDebugEnabled()) {
            log.debug("retrieving all role names...");
        }

        return getHibernateTemplate().find("from Role r order by upper(name)");
    }

    /**
     * @see org.appfuse.persistence.LookupDAO#getAvailableTemplates()
     */
    public List getAvailableTemplates() throws DAOException {
        if (log.isDebugEnabled()) {
            log.debug("retrieving all templates...");
        }
        return getHibernateTemplate().find("from Template t order by upper(t.name)");
    }

    /**
     * @see org.appfuse.persistence.LookupDAO#getWorkStatuses()
     */
    public List getWorkStatuses() throws DAOException {
        if (log.isDebugEnabled()) {
            log.debug("getting all work status options...");
        }
        return getHibernateTemplate().find("from WorkStatus ws order by ws.id");
    }

    /**
     * @see org.appfuse.persistence.LookupDAO#getDegrees()
     */
    public List getDegrees() throws DAOException {
        if (log.isDebugEnabled()) {
            log.debug("getting all degree options...");
        }
        return getHibernateTemplate().find("from Degree d order by d.id");
    }
}