/data/jpa/src/main/java/org/appfuse/dao/jpa/UserDaoJpa.java
Java | 86 lines | 51 code | 8 blank | 27 comment | 4 complexity | f1f96d906bf6f78d1fe4c533ff5bb08b MD5 | raw file
- package org.appfuse.dao.jpa;
- import org.appfuse.dao.UserDao;
- import org.appfuse.model.User;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.core.annotation.AnnotationUtils;
- import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
- import org.springframework.security.core.userdetails.UserDetails;
- import org.springframework.security.core.userdetails.UserDetailsService;
- import org.springframework.security.core.userdetails.UsernameNotFoundException;
- import org.springframework.stereotype.Repository;
- import org.springframework.transaction.annotation.Transactional;
- import javax.persistence.Query;
- import javax.persistence.Table;
- import javax.sql.DataSource;
- import java.util.List;
- /**
- * This class interacts with Spring's HibernateTemplate to save/delete and
- * retrieve User objects.
- *
- * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
- * Modified by <a href="mailto:dan@getrolling.com">Dan Kibler</a>
- * Extended to implement Acegi UserDetailsService interface by David Carter david@carter.net
- * Modified by <a href="mailto:bwnoll@gmail.com">Bryan Noll</a> to work with
- * the new BaseDaoHibernate implementation that uses generics.
- */
- @Repository("userDao")
- public class UserDaoJpa extends GenericDaoJpa<User, Long> implements UserDao, UserDetailsService {
- @Autowired
- private DataSource dataSource;
- /**
- * Constructor that sets the entity to User.class.
- */
- public UserDaoJpa() {
- super(User.class);
- }
- /**
- * {@inheritDoc}
- */
- @SuppressWarnings("unchecked")
- public List<User> getUsers() {
- Query q = getEntityManager().createQuery("select u from User u order by upper(u.username)");
- return q.getResultList();
- }
- /**
- * {@inheritDoc}
- */
- @SuppressWarnings("unchecked")
- @Transactional
- public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
- Query q = getEntityManager().createQuery("select u from User u where username=?");
- q.setParameter(1, username);
- List<User> users = q.getResultList();
- if (users == null || users.isEmpty()) {
- throw new UsernameNotFoundException("user '" + username + "' not found...");
- } else {
- return users.get(0);
- }
- }
- /**
- * Save user and flush entityManager
- * @param user the user to save
- * @return the updated user
- */
- public User saveUser(User user) {
- User u = super.save(user);
- getEntityManager().flush();
- return u;
- }
- /**
- * {@inheritDoc}
- */
- public String getUserPassword(String username) {
- SimpleJdbcTemplate jdbcTemplate = new SimpleJdbcTemplate(dataSource);
- Table table = AnnotationUtils.findAnnotation(User.class, Table.class);
- return jdbcTemplate.queryForObject(
- "select password from " + table.name() + " where username=?", String.class, username);
- }
- }