br.com.gerenciapessoal.repository.Usuarios.java Source code

Java tutorial

Introduction

Here is the source code for br.com.gerenciapessoal.repository.Usuarios.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.gerenciapessoal.repository;

import br.com.gerenciapessoal.model.Usuario;
import br.com.gerenciapessoal.repository.filter.UsuarioFilter;
import br.com.gerenciapessoal.security.Seguranca;
import br.com.gerenciapessoal.util.cdi.CDIServiceLocator;
import br.com.gerenciapessoal.util.jpa.Transactional;
import br.com.gerenciapessoal.util.service.NegocioException;
import java.io.Serializable;
import java.util.List;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceException;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author jalima
 */
public class Usuarios implements Serializable {

    @Inject
    private EntityManager manager;

    private final Seguranca s;

    public Usuarios() {
        s = CDIServiceLocator.getBean(Seguranca.class);
    }

    public Usuario gardarUsuario(Usuario usuario) {
        return manager.merge(usuario);
    }

    public Usuario usuario() {
        return manager.find(Usuario.class, s.getIdUsuario());
    }

    @SuppressWarnings("JPQLValidation")
    public Usuario porEmail(String email) {
        Usuario usuario = null;
        try {
            usuario = this.manager.createQuery("from Usuario where lower(email) = :email", Usuario.class)
                    .setParameter("email", email.toLowerCase()).getSingleResult();

        } catch (NoResultException e) {
            //nenhum usurio encontradom com e e-mail informado.
            System.out.print("nenhum usurio encontradom com e e-mail informado.");
        }
        return usuario;
    }

    public Usuario porId(Long id) {
        return this.manager.find(Usuario.class, id);
    }

    @Transactional
    public void remover(Usuario usuario) {
        try {
            usuario = porId(usuario.getId());
            //manager.remove(usuario().getGrupos());

            manager.remove(usuario);
            manager.flush();
        } catch (PersistenceException e) {
            throw new NegocioException("Usurio no pode ser excludo.");
        }
    }

    @SuppressWarnings("unchecked")
    public List<Usuario> filtrados(UsuarioFilter filtro) {
        Session session = manager.unwrap(Session.class);
        Criteria criteria = session.createCriteria(Usuario.class);

        if (StringUtils.isNotBlank(filtro.getNome())) {
            criteria.add(Restrictions.ilike("nome", filtro.getNome(), MatchMode.ANYWHERE));
        }

        if (StringUtils.isNotBlank(filtro.getEmail())) {
            criteria.add(Restrictions.ilike("email", filtro.getEmail(), MatchMode.ANYWHERE));
        }

        return criteria.addOrder(Order.asc("nome")).list();
    }
}