package net.sourceforge.seqware.common.dao.hibernate; import java.lang.reflect.InvocationTargetException; import java.util.List; import net.sourceforge.seqware.common.dao.RegistrationDAO; import net.sourceforge.seqware.common.model.Registration; import net.sourceforge.seqware.common.util.NullBeanUtils; import org.apache.commons.beanutils.BeanUtilsBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * <p> * RegistrationDAOHibernate class. * </p> * * @author boconnor * @version $Id: $Id */ public class RegistrationDAOHibernate extends HibernateDaoSupport implements RegistrationDAO { final Logger localLogger = LoggerFactory.getLogger(RegistrationDAOHibernate.class); /** * <p> * Constructor for RegistrationDAOHibernate. * </p> */ public RegistrationDAOHibernate() { super(); } /** * {@inheritDoc} * * Inserts an instance of Registration into the database. */ @Override public void insert(Registration registration) { this.getHibernateTemplate().save(registration); } /** * {@inheritDoc} * * Updates an instance of Registration in the database. */ @Override public void update(Registration registration) { this.getHibernateTemplate().update(registration); } /** * {@inheritDoc} * * Finds an instance of Registration in the database by the Registration emailAddress only. */ @Override public Registration findByEmailAddress(String emailAddress) { String query = "from Registration as registration where lower(registration.emailAddress) = ?"; Registration registration = null; Object[] parameters = { emailAddress }; List list = this.getHibernateTemplate().find(query, parameters); if (list.size() > 0) { registration = (Registration) list.get(0); } return registration; } /** * {@inheritDoc} * * Finds an instance of Registration in the database by the Registration emailAddress and password. */ @Override public Registration findByEmailAddressAndPassword(String emailAddress, String password) { String query = "from Registration as registration where registration.emailAddress = ? and registration.password = ?"; Registration registration = null; Object[] parameters = { emailAddress, password }; List list = this.getHibernateTemplate().find(query, parameters); if (list.size() > 0) { registration = (Registration) list.get(0); } return registration; } /** {@inheritDoc} */ @Override public Registration updateDetached(Registration registration) { Registration dbObject = findByEmailAddress(registration.getEmailAddress()); try { BeanUtilsBean beanUtils = new NullBeanUtils(); beanUtils.copyProperties(dbObject, registration); return (Registration) this.getHibernateTemplate().merge(dbObject); } catch (IllegalAccessException | InvocationTargetException e) { localLogger.error("Error updating detached registration", e); } return null; } }