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;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
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 javax.servlet.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static org.hibernate.criterion.Restrictions.*;

public class UserFilter implements 1.5.0/docs/api/java/util/logging/Filter.html">Filter {


    @1.5.0/docs/api/java/lang/Override.html">Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws 1.5.0/docs/api/java/io/IOException.html">IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.sendError(500);

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HibernateUtils.getCurrentSession().beginTransaction();

        User user  = (User) HibernateUtils.getCurrentSession().createCriteria(User.class)
                            .createAlias("user","u")
                            .add(like("u.nome","%17210%"))
                            .add(eq("username", "17210"))      //alt+enter eq() ->Restriction.eq
                            .add(eq("password","123"))
                            .add(or(eq("u.nome","%17210%"), not(eq("password","123"))))
                            .add(like("username", "%17210%"))
                            .addOrder(Order.asc("username"))
                            .uniqueResult();

        /*User user = (User) c.add(eq("username", "17210"))      //alt+enter eq() ->Restriction.eq
            .add(eq("password","123")).uniqueResult();   */

        User u = null;

        try{
            UserSession 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);
            }
            u=session.getUser();
        }

        catch (1.5.0/docs/api/java/lang/Exception.html">Exception e)
        {
            UserSession session = new UserSessionImpl();
            session.setCookie(request.getSession().getId());
            HibernateUtils.getCurrentSession().save(session);
        }
        1.5.0/docs/api/java/lang/System.html">System.out.println(request.getSession().getId());

        HibernateUtils.getCurrentSession().getTransaction().commit();
        if(u!=null /*&& u.isAdmin()*/)
            filterChain.doFilter(servletRequest, response);
        else
            filterChain.doFilter(servletRequest, response);

        filterChain.doFilter(servletRequest, servletResponse);
    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    public void destroy() {

    }
}