package org.atricore.idbus.connectors.jdoidentityvault.domain.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.atricore.idbus.connectors.jdoidentityvault.domain.JDOUser;
import org.atricore.idbus.connectors.jdoidentityvault.domain.dao.JDOUserDAO;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import java.util.Collection;
/**
* TODO : Add case insensitive lookup parameter
*
* @author <a href=mailto:sgonzalez@atricore.org>Sebastian Gonzalez Oyuela</a>
*/
public class JDOUserDAOImpl extends GenericDAOImpl<JDOUser, Long> implements JDOUserDAO {
private static final Log logger = LogFactory.getLog(JDOGroupDAOImpl.class);
public JDOUser findByUserName(String name) {
PersistenceManager pm = getPersistenceManager();
// Query query = pm.newQuery("SELECT FROM org.atricore.idbus.connectors.jdoidentityvault.domain.JDOUser" +
// " WHERE this.userName.toLowerCase() == '" + name.toLowerCase() + "'");
Query query = pm.newQuery("SELECT FROM org.atricore.idbus.connectors.jdoidentityvault.domain.JDOUser" +
" WHERE this.userName == '" + name + "'");
Collection<JDOUser> users = (Collection<JDOUser>) query.execute();
if (users == null || users.size() != 1)
throw new IncorrectResultSizeDataAccessException(1, users.size());
return users.iterator().next();
}
}