Rev 259 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.repository.jpa;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.domain.dto.FuncionarioDTO;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.dto.UsuarioDTO;
import br.com.ec.domain.dto.UsuarioPerfilDTO;
import br.com.ec.domain.model.Usuario;
import br.com.ec.repository.SistemaAbstractRepository;
import br.com.ec.repository.UsuarioRepository;
@Repository
public class UsuarioRepositoryJpaImpl
extends SistemaAbstractRepository
<Usuario
> implements UsuarioRepository
{
private static final String USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA =
"Usuário informado não existe para esta pessoa";
@
Override
public UsuarioDTO consultarPorLogin
(String login,
String senha
) {
StringBuilder jpql =
new StringBuilder();
jpql.
append("SELECT new br.com.ec.domain.dto.UsuarioDTO(");
jpql.
append(UsuarioDTO.
CONSULTA_DTO_COMPLETA);
jpql.
append(") FROM Usuario e ");
jpql.
append("WHERE e.login = :login AND e.senha = :senha AND e.ativo is true");
try {
return getEntityManager
().
createQuery(jpql.
toString(), UsuarioDTO.
class)
.
setParameter("login", login
)
.
setParameter("senha", senha
)
.
getSingleResult();
} catch (NoResultException nre
) {
throw new NegocioException
("Usuário não existe");
}
}
@
Override
public UsuarioDTO consultarPorPessoa
(Long sequencialPessoa
) {
StringBuilder jpql =
new StringBuilder();
jpql.
append("SELECT new br.com.ec.domain.dto.UsuarioDTO(");
jpql.
append(UsuarioDTO.
CONSULTA_DTO_COMPLETA);
jpql.
append(") FROM Usuario e ");
jpql.
append("WHERE e.pessoa.sequencial = :sequencialPessoa");
try {
return getEntityManager
().
createQuery(jpql.
toString(), UsuarioDTO.
class)
.
setParameter("sequencialPessoa", sequencialPessoa
)
.
getSingleResult();
} catch (NoResultException nre
) {
nre.
printStackTrace();
}
return null;
}
@
Override
public List<UsuarioPerfilDTO
> consultarPerfisDoUsuario
(Long sequencialUsuario
) {
StringBuilder jpql =
new StringBuilder();
jpql.
append("SELECT new br.com.ec.domain.dto.UsuarioPerfilDTO(");
jpql.
append(UsuarioPerfilDTO.
CONSULTA_DTO_COMPLETA);
jpql.
append(") FROM UsuarioPerfil e ");
jpql.
append("WHERE e.usuario.sequencial = :sequencialUsuario ");
jpql.
append("ORDER BY e.perfil.descricao ");
try {
TypedQuery
<UsuarioPerfilDTO
> query = getEntityManager
().
createQuery(jpql.
toString(), UsuarioPerfilDTO.
class);
query.
setParameter("sequencialUsuario", sequencialUsuario
);
return query.
getResultList();
} catch(Exception ex
) {
ex.
printStackTrace();
return null;
}
}
/*
@Override
public List<LojaDTO> consultarLojasDoUsuario(Long sequencialUsuario) {
StringBuilder jpql = new StringBuilder();
jpql.append("SELECT new br.com.ec.domain.dto.LojaDTO(ul.loja.sequencial, ul.loja.descricao) FROM UsuarioLoja ul ");
jpql.append("WHERE ul.usuario.sequencial = :sequencialUsuario ");
jpql.append("ORDER BY ul.loja.ordenador ");
try {
return getEntityManager().createQuery(jpql.toString(), LojaDTO.class)
.setParameter("sequencialUsuario", sequencialUsuario)
.getResultList();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
*/
@
Override
public Integer obterQuantidadeUsuarioDiferenteComSenhaInformada
(String login,
String senha
) {
StringBuilder jpql =
new StringBuilder();
jpql.
append("SELECT COUNT(u) FROM Usuario u ");
jpql.
append("WHERE u.login != :login AND u.senha = :senha");
try {
TypedQuery
<Long> query = getEntityManager
()
.
createQuery(jpql.
toString(),
Long.
class)
.
setParameter("login", login
)
.
setParameter("senha", senha
);
return query.
getSingleResult().
intValue();
} catch(Exception ex
) {
ex.
printStackTrace();
}
return 0;
}
@
Override
public Integer obterQuantidadeUsuarioComLoginCpfInformados
(String login,
String cpfCnpj
) {
StringBuilder jpql =
new StringBuilder();
jpql.
append("SELECT COUNT(u) FROM Usuario u ");
jpql.
append("WHERE u.login = :login AND u.pessoa.cpfCnpj like :cpfCnpj");
try {
TypedQuery
<Long> query = getEntityManager
()
.
createQuery(jpql.
toString(),
Long.
class)
.
setParameter("login", login
)
.
setParameter("cpfCnpj", cpfCnpj
);
return query.
getSingleResult().
intValue();
} catch(Exception ex
) {
ex.
printStackTrace();
}
return 0;
}
@
Override
public void alterarSenha
(String login,
String senha
) {
StringBuilder sql =
new StringBuilder();
sql.
append("UPDATE Usuario u SET u.senha = :senha ");
sql.
append("WHERE u.login = :login");
try {
getEntityManager
().
createQuery(sql.
toString())
.
setParameter("login", login
)
.
setParameter("senha", senha
)
.
executeUpdate();
getEntityManager
().
flush();
} catch(Exception ex
) {
ex.
printStackTrace();
}
}
@
Override
public String consultarEmailPorLogin
(String login
) {
StringBuilder jpql =
new StringBuilder();
jpql.
append("SELECT u.pessoa.email FROM Usuario u ");
jpql.
append("WHERE u.login = :login AND u.ativo is true");
try {
return getEntityManager
().
createQuery(jpql.
toString(),
String.
class)
.
setParameter("login", login
)
.
getSingleResult();
} catch(NoResultException nre
) {
nre.
printStackTrace();
}
return null;
}
/*
@Override
public Usuario consultarPorLoginAnterior(Usuario usuario) {
StringBuilder jpql = new StringBuilder();
jpql.append("SELECT u FROM Usuario u ");
jpql.append("LEFT JOIN FETCH u.perfis p ");
// jpql.append("LEFT JOIN FETCH u.lojas l ");
jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
return getEntityManager().createQuery(jpql.toString(), Usuario.class)
.setParameter("login", usuario.getLogin())
.setParameter("senha", usuario.getSenha())
.getSingleResult();
}
@Override
protected String getColunaOrdenadora() {
return "nome";
}
@Override
public Usuario consultarUsuarioPorSenha(String senha) {
StringBuilder jpql = new StringBuilder();
jpql.append("SELECT u FROM Usuario u ");
jpql.append("LEFT JOIN FETCH u.perfis p ");
jpql.append("LEFT JOIN FETCH u.lojas l ");
jpql.append("WHERE u.senha = :senha");
return getEntityManager().createQuery(jpql.toString(), Usuario.class)
.setParameter("senha", senha)
.getSingleResult();
}
@Override
public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
StringBuilder jpql = new StringBuilder();
jpql.append("SELECT u FROM Usuario u ");
jpql.append("LEFT JOIN FETCH u.perfis p ");
jpql.append("LEFT JOIN FETCH u.lojas l ");
jpql.append("WHERE u.pessoa = :pessoa");
try {
return getEntityManager().createQuery(jpql.toString(), Usuario.class)
.setParameter("pessoa", pessoa)
.getSingleResult();
} catch (NoResultException nre) {
throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
}
}
@Override
public Usuario detalhar(Usuario usuario) {
StringBuilder jpql = new StringBuilder();
jpql.append("SELECT u FROM Usuario u ");
jpql.append("LEFT JOIN FETCH u.perfis p ");
jpql.append("LEFT JOIN FETCH u.lojas l ");
jpql.append("WHERE u.sequencial = :sequencial");
return getEntityManager().createQuery(jpql.toString(), Usuario.class).setParameter("sequencial", usuario.getSequencial()).getSingleResult();
}
@Override
public void atualizarDataUltimoAcesso(Usuario usuario) {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE Usuario u SET u.ultimoAcesso = now() ");
sql.append("WHERE u.sequencial = :sequencial");
try {
getEntityManager().createQuery(sql.toString())
.setParameter("sequencial", usuario.getSequencial())
.executeUpdate();
getEntityManager().flush();
} catch(Exception ex) {
ex.printStackTrace();
}
}
*/
}