Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
760 blopes 1
package br.com.sl.repository.jpa;
2
 
3
import javax.persistence.NoResultException;
4
import javax.persistence.TypedQuery;
5
 
6
import org.springframework.stereotype.Repository;
7
 
8
import br.com.ec.core.exception.NegocioException;
9
import br.com.sl.domain.dto.UsuarioDTO;
10
import br.com.sl.domain.model.Usuario;
11
import br.com.sl.repository.SistemaAbstractRepository;
12
import br.com.sl.repository.UsuarioRepository;
13
 
14
@Repository
15
public class UsuarioRepositoryJpaImpl extends SistemaAbstractRepository<Usuario> implements UsuarioRepository {
16
 
17
        private static final String USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA = "Usuário informado não existe para esta pessoa";
18
 
19
        @Override
20
        public UsuarioDTO consultarPorLogin(String login, String senha) {
21
                StringBuilder jpql = new StringBuilder();
22
                jpql.append("SELECT new br.com.sl.domain.dto.UsuarioDTO(");
23
                jpql.append(UsuarioDTO.CONSULTA_DTO_COMPLETA);
24
                jpql.append(") FROM Usuario e ");
25
                jpql.append("WHERE e.login = :login AND e.senha = :senha AND e.ativo is true");
26
                try {
27
                        return getEntityManager().createQuery(jpql.toString(), UsuarioDTO.class)
28
                                        .setParameter("login", login)
29
                                        .setParameter("senha", senha)
30
                                        .getSingleResult();
31
                } catch (NoResultException nre) {
32
                        throw new NegocioException("Usuário não existe");
33
                }
34
        }
35
 
36
        @Override
37
        public UsuarioDTO consultarPorPessoa(Long sequencialPessoa) {
38
                StringBuilder jpql = new StringBuilder();
39
                jpql.append("SELECT new br.com.sl.domain.dto.UsuarioDTO(");
40
                jpql.append(UsuarioDTO.CONSULTA_DTO_COMPLETA);
41
                jpql.append(") FROM Usuario e ");
42
                jpql.append("WHERE e.pessoa.sequencial = :sequencialPessoa");
43
                try {
44
                        return getEntityManager().createQuery(jpql.toString(), UsuarioDTO.class)
45
                                        .setParameter("sequencialPessoa", sequencialPessoa)
46
                                        .getSingleResult();
47
                } catch (NoResultException nre) {
48
                        nre.printStackTrace();
49
                }
50
                return null;
51
        }
52
 
53
        @Override
54
        public Integer obterQuantidadeUsuarioDiferenteComSenhaInformada(String login, String senha) {
55
                StringBuilder jpql = new StringBuilder();
56
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
57
                jpql.append("WHERE u.login != :login AND u.senha = :senha");
58
                try {
59
                        TypedQuery<Long> query = getEntityManager()
60
                                        .createQuery(jpql.toString(), Long.class)
61
                                        .setParameter("login", login)
62
                                        .setParameter("senha", senha);
63
                        return query.getSingleResult().intValue();
64
                } catch(Exception ex) {
65
                        ex.printStackTrace();
66
                }
67
                return 0;
68
        }
69
 
70
        @Override
71
        public Integer obterQuantidadeUsuarioComLoginCpfInformados(String login, String cpfCnpj) {
72
                StringBuilder jpql = new StringBuilder();
73
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
74
                jpql.append("WHERE u.login = :login AND u.pessoa.cpfCnpj like :cpfCnpj");
75
                try {
76
                        TypedQuery<Long> query = getEntityManager()
77
                                        .createQuery(jpql.toString(), Long.class)
78
                                        .setParameter("login", login)
79
                                        .setParameter("cpfCnpj", cpfCnpj);
80
                        return query.getSingleResult().intValue();
81
                } catch(Exception ex) {
82
                        ex.printStackTrace();
83
                }
84
                return 0;
85
        }
86
 
87
        @Override
88
        public void alterarSenha(String login, String senha) {
89
                StringBuilder sql = new StringBuilder();
90
                sql.append("UPDATE Usuario u SET u.senha = :senha ");
91
                sql.append("WHERE u.login = :login");
92
                try {
93
                        getEntityManager().createQuery(sql.toString())
94
                                .setParameter("login", login)
95
                                .setParameter("senha", senha)
96
                                .executeUpdate();
97
                        getEntityManager().flush();
98
                } catch(Exception ex) {
99
                        ex.printStackTrace();
100
                }
101
        }
102
 
103
        @Override
104
        public String consultarEmailPorLogin(String login) {
105
                StringBuilder jpql = new StringBuilder();
106
                jpql.append("SELECT u.pessoa.email FROM Usuario u ");
107
                jpql.append("WHERE u.login = :login AND u.ativo is true");
108
                try {
109
                        return getEntityManager().createQuery(jpql.toString(), String.class)
110
                                        .setParameter("login", login)
111
                                        .getSingleResult();
112
                } catch(NoResultException nre) {
113
                        nre.printStackTrace();
114
                }
115
                return null;
116
        }
117
 
118
}