Blame |
Last modification |
View Log
| Download
| RSS feed
package br.com.sl.repository.jpa;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import br.com.ec.core.exception.NegocioException;
import br.com.sl.domain.dto.UsuarioDTO;
import br.com.sl.domain.model.Usuario;
import br.com.sl.repository.SistemaAbstractRepository;
import br.com.sl.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.sl.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.sl.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 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;
}
}