Subversion Repositories Integrator Subversion

Rev

Rev 218 | Rev 226 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
218 espaco 1
package br.com.ec.repository.jpa;
2
 
224 espaco 3
import javax.persistence.NoResultException;
218 espaco 4
import javax.persistence.TypedQuery;
5
 
6
import org.springframework.stereotype.Repository;
7
 
224 espaco 8
import br.com.ec.core.exception.NegocioException;
218 espaco 9
import br.com.ec.domain.dto.UsuarioDTO;
10
import br.com.ec.domain.modal.Usuario;
11
import br.com.ec.repository.SistemaAbstractRepository;
12
import br.com.ec.repository.UsuarioRepository;
13
 
14
@Repository
15
public class UsuarioRepositoryJpaImpl extends SistemaAbstractRepository<Usuario> implements UsuarioRepository {
16
 
224 espaco 17
        private static final String USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA = "Usuário informado não existe para esta pessoa";
218 espaco 18
 
19
        @Override
20
        public UsuarioDTO consultarPorLogin(String login, String senha) {
21
                StringBuilder jpql = new StringBuilder();
22
                jpql.append("SELECT new br.com.ec.domain.dto.UsuarioDTO(u.login, u.nome) FROM Usuario u ");
23
                jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
224 espaco 24
                try {
25
                        return getEntityManager().createQuery(jpql.toString(), UsuarioDTO.class)
218 espaco 26
                                        .setParameter("login", login)
27
                                        .setParameter("senha", senha)
28
                                        .getSingleResult();
224 espaco 29
                } catch (NoResultException nre) {
30
                        throw new NegocioException("Usuário não existe");
31
                }
218 espaco 32
        }
33
 
34
        @Override
35
        public Integer obterQuantidadeUsuarioDiferenteComSenhaInformada(String login, String senha) {
36
                StringBuilder jpql = new StringBuilder();
37
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
38
                jpql.append("WHERE u.login != :login AND u.senha = :senha");
39
                try {
40
                        TypedQuery<Long> query = getEntityManager()
41
                                        .createQuery(jpql.toString(), Long.class)
42
                                        .setParameter("login", login)
43
                                        .setParameter("senha", senha);
44
                        return query.getSingleResult().intValue();
45
                } catch(Exception ex) {
46
                        ex.printStackTrace();
47
                }
48
                return 0;
49
        }
50
 
51
        @Override
52
        public void alterarSenha(String login, String senha) {
53
                StringBuilder sql = new StringBuilder();
54
                sql.append("UPDATE Usuario u SET u.senha = :senha ");
55
                sql.append("WHERE u.login = :login");
56
                try {
57
                        getEntityManager().createQuery(sql.toString())
58
                                .setParameter("login", login)
59
                                .setParameter("senha", senha)
60
                                .executeUpdate();
61
                        getEntityManager().flush();
62
                } catch(Exception ex) {
63
                        ex.printStackTrace();
64
                }
65
        }
66
 
224 espaco 67
        @Override
68
        public String consultarEmailPorLogin(String login) {
69
                StringBuilder jpql = new StringBuilder();
70
                jpql.append("SELECT u.pessoa.email FROM Usuario u ");
71
                jpql.append("WHERE u.login = :login AND u.ativo is true");
72
                try {
73
                        return getEntityManager().createQuery(jpql.toString(), String.class)
74
                                        .setParameter("login", login)
75
                                        .getSingleResult();
76
                } catch(NoResultException nre) {
77
                        nre.printStackTrace();
78
                }
79
                return null;
80
        }
81
 
218 espaco 82
        /*
83
        @Override
84
        protected String getColunaOrdenadora() {
85
                return "nome";
86
        }
87
 
88
        @Override
89
        public Usuario consultarPorLogin(Usuario usuario) {
90
                StringBuilder jpql = new StringBuilder();
91
                jpql.append("SELECT u FROM Usuario u ");
92
                jpql.append("LEFT JOIN FETCH u.perfis p ");
93
                jpql.append("LEFT JOIN FETCH u.lojas l ");
94
                jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
95
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
96
                                        .setParameter("login", usuario.getLogin())
97
                                        .setParameter("senha", usuario.getSenha())
98
                                        .getSingleResult();
99
        }
100
 
101
        @Override
102
        public Usuario consultarUsuarioPorSenha(String senha) {
103
                StringBuilder jpql = new StringBuilder();
104
                jpql.append("SELECT u FROM Usuario u ");
105
                jpql.append("LEFT JOIN FETCH u.perfis p ");
106
                jpql.append("LEFT JOIN FETCH u.lojas l ");
107
                jpql.append("WHERE u.senha = :senha");
108
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
109
                                        .setParameter("senha", senha)
110
                                        .getSingleResult();
111
        }
112
 
113
        @Override
114
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
115
                StringBuilder jpql = new StringBuilder();
116
                jpql.append("SELECT u FROM Usuario u ");
117
                jpql.append("LEFT JOIN FETCH u.perfis p ");
118
                jpql.append("LEFT JOIN FETCH u.lojas l ");
119
                jpql.append("WHERE u.pessoa = :pessoa");
120
                try {
121
                        return getEntityManager().createQuery(jpql.toString(), Usuario.class)
122
                                                .setParameter("pessoa", pessoa)
123
                                                .getSingleResult();
124
                } catch (NoResultException nre) {
125
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
126
                }
127
        }
128
 
129
        @Override
130
        public Usuario detalhar(Usuario usuario) {
131
                StringBuilder jpql = new StringBuilder();
132
                jpql.append("SELECT u FROM Usuario u ");
133
                jpql.append("LEFT JOIN FETCH u.perfis p ");
134
                jpql.append("LEFT JOIN FETCH u.lojas l ");
135
                jpql.append("WHERE u.sequencial = :sequencial");
136
                return getEntityManager().createQuery(jpql.toString(), Usuario.class).setParameter("sequencial", usuario.getSequencial()).getSingleResult();
137
        }
138
 
139
 
140
 
141
        @Override
142
        public void atualizarDataUltimoAcesso(Usuario usuario) {
143
                StringBuilder sql = new StringBuilder();
144
                sql.append("UPDATE Usuario u SET u.ultimoAcesso = now() ");
145
                sql.append("WHERE u.sequencial = :sequencial");
146
                try {
147
                        getEntityManager().createQuery(sql.toString())
148
                                .setParameter("sequencial", usuario.getSequencial())
149
                                .executeUpdate();
150
                        getEntityManager().flush();
151
                } catch(Exception ex) {
152
                        ex.printStackTrace();
153
                }
154
        }
155
 
156
 
157
        */
158
}