Subversion Repositories bacoAlunos

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.es.exemplos.hibernate.web.pluginSession;

import pt.estgp.es.exemplos.hibernate.HibernateUtils;
import pt.estgp.es.exemplos.hibernate.User;
import pt.estgp.es.exemplos.hibernate.UserSession;
import pt.estgp.es.exemplos.hibernate.UserSessionImpl;
import pt.estgp.es.exemplos.hibernate.security.SecurityContextProvider;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class DevelopRegisterSession implements RegisterSession {

  /**
   * Abre uma sessao se esta não existir e associa-a sempre ao User com id 1
   * @param servletRequest
   * @return
   * @throws IOException
   * @throws ServletException
   */

  @1.5.0/docs/api/java/lang/Override.html">Override
  public UserSession openSession(ServletRequest servletRequest) {
    HttpServletRequest request = (HttpServletRequest) servletRequest;

    SecurityContextProvider.getInstance().registerSessionContext(request.getSession().getId());
    UserSession session;
    HibernateUtils.getCurrentSession().beginTransaction();
    try {
      session = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class, request.getSession().getId());
      if(session == null)
      {
        session = new UserSessionImpl();
        session.setCookie(request.getSession().getId());
        HibernateUtils.getCurrentSession().save(session);
      }
    }catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
    {
      session = new UserSessionImpl();
      session.setCookie(request.getSession().getId());
      HibernateUtils.getCurrentSession().save(session);
    }
    User u = (User) HibernateUtils.getCurrentSession().load(User.class, new 1.5.0/docs/api/java/lang/Long.html">Long(1));
    session.setUser(u);
    HibernateUtils.getCurrentSession().getTransaction().commit();
    return session;
  }
}