Subversion Repositories Integrator Subversion

Rev

Rev 224 | Rev 227 | 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();
226 espaco 22
                jpql.append("SELECT new br.com.ec.domain.dto.UsuarioDTO(u.sequencial, u.login, u.nome) FROM Usuario u ");
218 espaco 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
226 espaco 52
        public Integer obterQuantidadeUsuarioComLoginCpfInformados(String login, String cpfCnpj) {
53
                StringBuilder jpql = new StringBuilder();
54
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
55
                jpql.append("WHERE u.login = :login AND u.pessoa.cpfCnpj like :cpfCnpj");
56
                try {
57
                        TypedQuery<Long> query = getEntityManager()
58
                                        .createQuery(jpql.toString(), Long.class)
59
                                        .setParameter("login", login)
60
                                        .setParameter("cpfCnpj", cpfCnpj);
61
                        return query.getSingleResult().intValue();
62
                } catch(Exception ex) {
63
                        ex.printStackTrace();
64
                }
65
                return 0;
66
        }
67
 
68
        @Override
218 espaco 69
        public void alterarSenha(String login, String senha) {
70
                StringBuilder sql = new StringBuilder();
71
                sql.append("UPDATE Usuario u SET u.senha = :senha ");
72
                sql.append("WHERE u.login = :login");
73
                try {
74
                        getEntityManager().createQuery(sql.toString())
75
                                .setParameter("login", login)
76
                                .setParameter("senha", senha)
77
                                .executeUpdate();
78
                        getEntityManager().flush();
79
                } catch(Exception ex) {
80
                        ex.printStackTrace();
81
                }
82
        }
83
 
224 espaco 84
        @Override
85
        public String consultarEmailPorLogin(String login) {
86
                StringBuilder jpql = new StringBuilder();
87
                jpql.append("SELECT u.pessoa.email FROM Usuario u ");
88
                jpql.append("WHERE u.login = :login AND u.ativo is true");
89
                try {
90
                        return getEntityManager().createQuery(jpql.toString(), String.class)
91
                                        .setParameter("login", login)
92
                                        .getSingleResult();
93
                } catch(NoResultException nre) {
94
                        nre.printStackTrace();
95
                }
96
                return null;
97
        }
98
 
218 espaco 99
        /*
100
        @Override
101
        protected String getColunaOrdenadora() {
102
                return "nome";
103
        }
104
 
105
        @Override
106
        public Usuario consultarPorLogin(Usuario usuario) {
107
                StringBuilder jpql = new StringBuilder();
108
                jpql.append("SELECT u FROM Usuario u ");
109
                jpql.append("LEFT JOIN FETCH u.perfis p ");
110
                jpql.append("LEFT JOIN FETCH u.lojas l ");
111
                jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
112
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
113
                                        .setParameter("login", usuario.getLogin())
114
                                        .setParameter("senha", usuario.getSenha())
115
                                        .getSingleResult();
116
        }
117
 
118
        @Override
119
        public Usuario consultarUsuarioPorSenha(String senha) {
120
                StringBuilder jpql = new StringBuilder();
121
                jpql.append("SELECT u FROM Usuario u ");
122
                jpql.append("LEFT JOIN FETCH u.perfis p ");
123
                jpql.append("LEFT JOIN FETCH u.lojas l ");
124
                jpql.append("WHERE u.senha = :senha");
125
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
126
                                        .setParameter("senha", senha)
127
                                        .getSingleResult();
128
        }
129
 
130
        @Override
131
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
132
                StringBuilder jpql = new StringBuilder();
133
                jpql.append("SELECT u FROM Usuario u ");
134
                jpql.append("LEFT JOIN FETCH u.perfis p ");
135
                jpql.append("LEFT JOIN FETCH u.lojas l ");
136
                jpql.append("WHERE u.pessoa = :pessoa");
137
                try {
138
                        return getEntityManager().createQuery(jpql.toString(), Usuario.class)
139
                                                .setParameter("pessoa", pessoa)
140
                                                .getSingleResult();
141
                } catch (NoResultException nre) {
142
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
143
                }
144
        }
145
 
146
        @Override
147
        public Usuario detalhar(Usuario usuario) {
148
                StringBuilder jpql = new StringBuilder();
149
                jpql.append("SELECT u FROM Usuario u ");
150
                jpql.append("LEFT JOIN FETCH u.perfis p ");
151
                jpql.append("LEFT JOIN FETCH u.lojas l ");
152
                jpql.append("WHERE u.sequencial = :sequencial");
153
                return getEntityManager().createQuery(jpql.toString(), Usuario.class).setParameter("sequencial", usuario.getSequencial()).getSingleResult();
154
        }
155
 
156
 
157
 
158
        @Override
159
        public void atualizarDataUltimoAcesso(Usuario usuario) {
160
                StringBuilder sql = new StringBuilder();
161
                sql.append("UPDATE Usuario u SET u.ultimoAcesso = now() ");
162
                sql.append("WHERE u.sequencial = :sequencial");
163
                try {
164
                        getEntityManager().createQuery(sql.toString())
165
                                .setParameter("sequencial", usuario.getSequencial())
166
                                .executeUpdate();
167
                        getEntityManager().flush();
168
                } catch(Exception ex) {
169
                        ex.printStackTrace();
170
                }
171
        }
172
 
173
 
174
        */
175
}