package org.jboss.seam.example.spring;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceException;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Mike Youngstrom
*
*/
public class UserService {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public boolean changePassword(String username, String oldPassword, String newPassword) {
System.out.println("change password " + oldPassword + " to " + newPassword);
if (newPassword == null || newPassword.length()==0) {
throw new IllegalArgumentException("newPassword cannot be null.");
}
User user = findUser(username);
System.out.println("USER" + user);
if (user.getPassword().equals(oldPassword)) {
user.setPassword(newPassword);
return true;
} else {
return false;
}
}
@Transactional
public User findUser(String username) {
if (username == null || "".equals(username)) {
throw new IllegalArgumentException("Username cannot be null");
}
return entityManager.find(User.class, username);
}
@Transactional
public User findUser(String username, String password) {
try {
return (User)
entityManager.createQuery("select u from User u where u.username=:username and u.password=:password")
.setParameter("username", username)
.setParameter("password", password)
.getSingleResult();
} catch (PersistenceException e) {
return null;
}
}
@Transactional
public void createUser(User user) throws ValidationException {
if (user == null) {
throw new IllegalArgumentException("User cannot be null");
}
User existingUser = findUser(user.getUsername());
if (existingUser != null) {
throw new ValidationException("Username "+user.getUsername()+" already exists");
}
entityManager.persist(user);
}
}