public List<Empresa> buscarPorEmpresa(Usuario usuario, String nomeEmpresa, Calendar dataInicio, Calendar dataFim){
if(usuario != null && usuario.getContabilidade() != null){
String queryEmpresa = "";
if( (nomeEmpresa == null || nomeEmpresa.isEmpty()) && dataInicio != null && dataFim != null){
queryEmpresa = " and o.dataInicio between '" + dataInicio.getTime() + "' and '" + dataFim.getTime() + "'";
}else if( (nomeEmpresa != null && !nomeEmpresa.isEmpty()) && dataInicio != null && dataFim != null){
queryEmpresa = " and lower(o.nomeEmpresa) like '" + nomeEmpresa.toLowerCase() + "%' and "
+ "o.dataInicio between '" + dataInicio.getTime() + "' and '" + dataFim.getTime() + "'";
}else {
if(nomeEmpresa == null || nomeEmpresa.isEmpty()){
return null;
}
queryEmpresa = " and lower(o.nomeEmpresa) like '" + nomeEmpresa.toLowerCase() + "%'";
}
TypedQuery<Empresa> q = em.createQuery("select o"
+ " from " + Empresa.class.getName() + " o"
+ " where "
+ " o.contabilidade = " + usuario.getContabilidade().getId()
+ queryEmpresa, Empresa.class);
return q.getResultList();
}else {
return null;
}
}
Criteria
public List<Empresa> buscarPorEmpresa(Usuario usuario, String nomeEmpresa, Calendar dataInicio, Calendar dataFim){
if(usuario != null && usuario.getContabilidade() != null){
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Empresa> cq = cb.createQuery(Empresa.class);
Root<Empresa> root = cq.from(Empresa.class);
cq.select(root);
if( (nomeEmpresa == null || nomeEmpresa.isEmpty()) && dataInicio != null && dataFim != null){
cq.where(cb.between(root.get("dataInicio"), dataInicio, dataFim));
}else if( (nomeEmpresa != null && !nomeEmpresa.isEmpty()) && dataInicio != null && dataFim != null){
cq.where(cb.between(root.get("dataInicio"), dataInicio, dataFim));
cq.where(cb.like(cb.lower( root.get("nomeEmpresa") ), nomeEmpresa.toLowerCase() + "%"));
}else {
if(nomeEmpresa == null || nomeEmpresa.isEmpty()){
return null;
}
cq.where(cb.like(cb.lower( root.get("nomeEmpresa") ), nomeEmpresa.toLowerCase() + "%"));
}
TypedQuery<Empresa> query = em.createQuery(cq);
return query.getResultList();
}else {
return null;
}
}
Nenhum comentário:
Postar um comentário