package com.fdar.apress.s2.services;
import com.fdar.apress.s2.domain.User;
import javax.persistence.*;
import org.acegisecurity.userdetails.UserDetailsService;
import org.acegisecurity.userdetails.UserDetails;
import org.acegisecurity.userdetails.UsernameNotFoundException;
import org.springframework.dao.DataAccessException;
public class UserServiceImpl implements UserService, UserDetailsService {
private EntityManagerFactory emf;
public UserServiceImpl() {
emf = Persistence.createEntityManagerFactory("s2app");
}
public User findByEmail(String email) {
EntityManager entityMgr = emf.createEntityManager();
return entityMgr.find(User.class,email);
}
public void persist(User user,String emailId) {
EntityManager entityMgr = emf.createEntityManager();
EntityTransaction tx = null;
try {
tx = entityMgr.getTransaction();
tx.begin();
if( "".equals(emailId) ) {
entityMgr.persist(user);
} else {
entityMgr.merge(user);
}
tx.commit();
}
catch (Exception e) {
if ( tx != null && tx.isActive() )
tx.rollback();
throw (RuntimeException)e.getCause();
}
}
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException, DataAccessException {
User u = findByEmail(s);
if( s==null || "".equals(s.trim()) || u==null ) {
throw new UsernameNotFoundException(s);
}
return new PermissionedUser(u);
}
}