Subversion Repositories Integrator Subversion

Rev

Rev 242 | 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
 
227 espaco 3
import java.util.List;
4
 
224 espaco 5
import javax.persistence.NoResultException;
218 espaco 6
import javax.persistence.TypedQuery;
7
 
8
import org.springframework.stereotype.Repository;
9
 
224 espaco 10
import br.com.ec.core.exception.NegocioException;
229 espaco 11
import br.com.ec.domain.dto.LojaDTO;
218 espaco 12
import br.com.ec.domain.dto.UsuarioDTO;
227 espaco 13
import br.com.ec.domain.dto.UsuarioPerfilDTO;
259 espaco 14
import br.com.ec.domain.model.Usuario;
218 espaco 15
import br.com.ec.repository.SistemaAbstractRepository;
16
import br.com.ec.repository.UsuarioRepository;
17
 
18
@Repository
19
public class UsuarioRepositoryJpaImpl extends SistemaAbstractRepository<Usuario> implements UsuarioRepository {
20
 
224 espaco 21
        private static final String USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA = "Usuário informado não existe para esta pessoa";
218 espaco 22
 
23
        @Override
24
        public UsuarioDTO consultarPorLogin(String login, String senha) {
25
                StringBuilder jpql = new StringBuilder();
226 espaco 26
                jpql.append("SELECT new br.com.ec.domain.dto.UsuarioDTO(u.sequencial, u.login, u.nome) FROM Usuario u ");
218 espaco 27
                jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
224 espaco 28
                try {
29
                        return getEntityManager().createQuery(jpql.toString(), UsuarioDTO.class)
218 espaco 30
                                        .setParameter("login", login)
31
                                        .setParameter("senha", senha)
32
                                        .getSingleResult();
224 espaco 33
                } catch (NoResultException nre) {
34
                        throw new NegocioException("Usuário não existe");
35
                }
218 espaco 36
        }
37
 
38
        @Override
227 espaco 39
        public List<UsuarioPerfilDTO> consultarPerfisDoUsuario(Long sequencialUsuario) {
40
                StringBuilder jpql = new StringBuilder();
41
                jpql.append("SELECT new br.com.ec.domain.dto.UsuarioPerfilDTO(uf.usuario.sequencial, uf.perfil.codigo) FROM UsuarioPerfil uf ");
42
                jpql.append("WHERE uf.usuario.sequencial = :sequencialUsuario");
43
                try {
44
                        return getEntityManager().createQuery(jpql.toString(), UsuarioPerfilDTO.class)
45
                                                .setParameter("sequencialUsuario", sequencialUsuario)
46
                                                .getResultList();
47
                } catch (Exception ex) {
48
                        ex.printStackTrace();
49
                }
50
                return null;
51
        }
52
 
53
        @Override
229 espaco 54
        public List<LojaDTO> consultarLojasDoUsuario(Long sequencialUsuario) {
227 espaco 55
                StringBuilder jpql = new StringBuilder();
229 espaco 56
                jpql.append("SELECT new br.com.ec.domain.dto.LojaDTO(ul.loja.sequencial, ul.loja.descricao) FROM UsuarioLoja ul ");
228 espaco 57
                jpql.append("WHERE ul.usuario.sequencial = :sequencialUsuario ");
58
                jpql.append("ORDER BY ul.loja.ordenador ");
227 espaco 59
                try {
229 espaco 60
                        return getEntityManager().createQuery(jpql.toString(), LojaDTO.class)
228 espaco 61
                                        .setParameter("sequencialUsuario", sequencialUsuario)
62
                                        .getResultList();
227 espaco 63
                } catch (Exception ex) {
64
                        ex.printStackTrace();
65
                }
66
                return null;
67
        }
68
 
69
        @Override
218 espaco 70
        public Integer obterQuantidadeUsuarioDiferenteComSenhaInformada(String login, String senha) {
71
                StringBuilder jpql = new StringBuilder();
72
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
73
                jpql.append("WHERE u.login != :login AND u.senha = :senha");
74
                try {
75
                        TypedQuery<Long> query = getEntityManager()
76
                                        .createQuery(jpql.toString(), Long.class)
77
                                        .setParameter("login", login)
78
                                        .setParameter("senha", senha);
79
                        return query.getSingleResult().intValue();
80
                } catch(Exception ex) {
81
                        ex.printStackTrace();
82
                }
83
                return 0;
84
        }
85
 
86
        @Override
226 espaco 87
        public Integer obterQuantidadeUsuarioComLoginCpfInformados(String login, String cpfCnpj) {
88
                StringBuilder jpql = new StringBuilder();
89
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
90
                jpql.append("WHERE u.login = :login AND u.pessoa.cpfCnpj like :cpfCnpj");
91
                try {
92
                        TypedQuery<Long> query = getEntityManager()
93
                                        .createQuery(jpql.toString(), Long.class)
94
                                        .setParameter("login", login)
95
                                        .setParameter("cpfCnpj", cpfCnpj);
96
                        return query.getSingleResult().intValue();
97
                } catch(Exception ex) {
98
                        ex.printStackTrace();
99
                }
100
                return 0;
101
        }
102
 
103
        @Override
218 espaco 104
        public void alterarSenha(String login, String senha) {
105
                StringBuilder sql = new StringBuilder();
106
                sql.append("UPDATE Usuario u SET u.senha = :senha ");
107
                sql.append("WHERE u.login = :login");
108
                try {
109
                        getEntityManager().createQuery(sql.toString())
110
                                .setParameter("login", login)
111
                                .setParameter("senha", senha)
112
                                .executeUpdate();
113
                        getEntityManager().flush();
114
                } catch(Exception ex) {
115
                        ex.printStackTrace();
116
                }
117
        }
118
 
224 espaco 119
        @Override
120
        public String consultarEmailPorLogin(String login) {
121
                StringBuilder jpql = new StringBuilder();
122
                jpql.append("SELECT u.pessoa.email FROM Usuario u ");
123
                jpql.append("WHERE u.login = :login AND u.ativo is true");
124
                try {
125
                        return getEntityManager().createQuery(jpql.toString(), String.class)
126
                                        .setParameter("login", login)
127
                                        .getSingleResult();
128
                } catch(NoResultException nre) {
129
                        nre.printStackTrace();
130
                }
131
                return null;
132
        }
133
 
218 espaco 134
        /*
135
        @Override
242 espaco 136
        public Usuario consultarPorLoginAnterior(Usuario usuario) {
218 espaco 137
                StringBuilder jpql = new StringBuilder();
138
                jpql.append("SELECT u FROM Usuario u ");
139
                jpql.append("LEFT JOIN FETCH u.perfis p ");
242 espaco 140
//              jpql.append("LEFT JOIN FETCH u.lojas l ");
218 espaco 141
                jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
142
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
143
                                        .setParameter("login", usuario.getLogin())
144
                                        .setParameter("senha", usuario.getSenha())
145
                                        .getSingleResult();
146
        }
242 espaco 147
 
148
        @Override
149
        protected String getColunaOrdenadora() {
150
                return "nome";
151
        }
218 espaco 152
 
242 espaco 153
 
154
 
218 espaco 155
        @Override
156
        public Usuario consultarUsuarioPorSenha(String senha) {
157
                StringBuilder jpql = new StringBuilder();
158
                jpql.append("SELECT u FROM Usuario u ");
159
                jpql.append("LEFT JOIN FETCH u.perfis p ");
160
                jpql.append("LEFT JOIN FETCH u.lojas l ");
161
                jpql.append("WHERE u.senha = :senha");
162
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
163
                                        .setParameter("senha", senha)
164
                                        .getSingleResult();
165
        }
166
 
167
        @Override
168
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
169
                StringBuilder jpql = new StringBuilder();
170
                jpql.append("SELECT u FROM Usuario u ");
171
                jpql.append("LEFT JOIN FETCH u.perfis p ");
172
                jpql.append("LEFT JOIN FETCH u.lojas l ");
173
                jpql.append("WHERE u.pessoa = :pessoa");
174
                try {
175
                        return getEntityManager().createQuery(jpql.toString(), Usuario.class)
176
                                                .setParameter("pessoa", pessoa)
177
                                                .getSingleResult();
178
                } catch (NoResultException nre) {
179
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
180
                }
181
        }
182
 
183
        @Override
184
        public Usuario detalhar(Usuario usuario) {
185
                StringBuilder jpql = new StringBuilder();
186
                jpql.append("SELECT u FROM Usuario u ");
187
                jpql.append("LEFT JOIN FETCH u.perfis p ");
188
                jpql.append("LEFT JOIN FETCH u.lojas l ");
189
                jpql.append("WHERE u.sequencial = :sequencial");
190
                return getEntityManager().createQuery(jpql.toString(), Usuario.class).setParameter("sequencial", usuario.getSequencial()).getSingleResult();
191
        }
192
 
193
 
194
 
195
        @Override
196
        public void atualizarDataUltimoAcesso(Usuario usuario) {
197
                StringBuilder sql = new StringBuilder();
198
                sql.append("UPDATE Usuario u SET u.ultimoAcesso = now() ");
199
                sql.append("WHERE u.sequencial = :sequencial");
200
                try {
201
                        getEntityManager().createQuery(sql.toString())
202
                                .setParameter("sequencial", usuario.getSequencial())
203
                                .executeUpdate();
204
                        getEntityManager().flush();
205
                } catch(Exception ex) {
206
                        ex.printStackTrace();
207
                }
208
        }
209
 
210
 
211
        */
212
}