/* * $RCSFile$ * * Created on 06.12.2006 * for Project: * by steins * * (C) 2005-2006 by */ package beans; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import javax.persistence.Query; import jpa.User; import static util.DigestUtils.md5; public class UserManager { private User current; private boolean loggedIn; public UserManager() { current = new User(); } public String login() { String outcome = "failure"; if (current.getUsername() != null && current.getUsername().length() > 0 && current.getPassword() != null && current.getPassword().length() > 0) { EntityManagerFactory factory = Persistence .createEntityManagerFactory("catalog"); EntityManager manager = factory.createEntityManager(); Query query = manager .createQuery("SELECT u FROM User u where u.username = :username and u.password = :password"); query.setParameter("username", current.getUsername()); query.setParameter("password", md5(current.getPassword())); List results = query.getResultList(); if (!results.isEmpty()) { loggedIn = true; current = (User) results.get(0); outcome = "success"; } } // System.out.println(outcome); return outcome; } public String logout() { loggedIn = false; current = new User(); return "home"; } public void setUsername(String username) { current.setUsername(username); } public String getUsername() { return current.getUsername(); } public void setPassword(String password) { current.setPassword(password); } public String getPassword() { return current.getPassword(); } public boolean isLoggedIn() { return loggedIn; } public User getCurrent() { EntityManagerFactory factory = Persistence .createEntityManagerFactory("catalog"); EntityManager manager = factory.createEntityManager(); EntityTransaction tx = manager.getTransaction(); tx.begin(); try { current = manager.find(User.class, getUsername()); tx.commit(); } catch (Exception ex) { ex.printStackTrace(System.err); tx.rollback(); } return current; } }