Skip to content
Snippets Groups Projects
Commit 84f2df55 authored by Bruno Nocera Zanette's avatar Bruno Nocera Zanette
Browse files

Fix municipio query & optimize query construction

Fix municipio query & optimize query construction
parent 5fc7fd33
Branches
No related tags found
No related merge requests found
......@@ -133,32 +133,19 @@ public class Programa {
*
*/
public static List<Programa> findWithParameters(String nomeOficial, String nomeMunicipio, Set<Tematica> tematicas) {
String querySelectFrom = "SELECT distinct p.* FROM programa p, ocorrencia_municipal o";
String queryWhere = " WHERE p.status = 'Efetivo' AND o.status = 'Efetivo'";
String querySelect = "SELECT distinct p.*";
String queryFrom = " FROM programa p";
String queryWhere = " WHERE p.status = 'Efetivo'";
String query = "";
if (tematicas.isEmpty()) {
if (nomeOficial != null && nomeMunicipio == null){
queryWhere += " AND LOWER(p.nome_oficial) LIKE LOWER('%"+nomeOficial+"%')";
}
else if (nomeOficial == null && nomeMunicipio != null){
querySelectFrom += ", municipio m";
queryWhere += " AND o.municipio = m.id";
queryWhere += " AND p.id = o.programa_vinculado AND LOWER(m.nome) LIKE LOWER('%"+nomeMunicipio+"%')";
}
else if (nomeOficial != null && nomeMunicipio != null) {
querySelectFrom += ", municipio m";
queryWhere += " AND o.municipio = m.id";
queryWhere += " AND LOWER(p.nome_oficial) LIKE LOWER('%"+nomeOficial+"%')";
queryWhere += " AND p.id = o.programa_vinculado AND LOWER(m.nome) LIKE LOWER('%"+nomeMunicipio+"%')";
}
}
else { //(!tematicas.isEmpty())
querySelectFrom += " ,programa_tematicas pt, tematica t";
if (!tematicas.isEmpty()) {
queryFrom += " ,programa_tematicas pt, tematica t";
queryWhere += " AND p.id = pt.programa AND t.id = pt.tematicas";
String strTemas = "(";
Integer i = 0;
Integer tam = tematicas.size();
String strTemas = "(";
for (Iterator<Tematica> t = tematicas.iterator(); t.hasNext();) {
strTemas += "t.nome = '"+t.next().getNome()+"'";
i++;
......@@ -166,28 +153,22 @@ public class Programa {
strTemas += " OR ";
}
strTemas += ")";
if (nomeOficial == null && nomeMunicipio == null){
queryWhere += " AND "+strTemas;
}
else if (nomeOficial != null && nomeMunicipio == null) {
queryWhere += " AND LOWER(p.nome_oficial) LIKE LOWER('%"+nomeOficial+"%')";
queryWhere += " AND "+strTemas;
}
else if (nomeOficial == null && nomeMunicipio != null) {
querySelectFrom += ", municipio m";
queryWhere += " AND o.municipio = m.id";
queryWhere += " AND p.id = o.programa_vinculado AND LOWER(m.nome) LIKE LOWER('%"+nomeMunicipio+"%')";
queryWhere += " AND "+strTemas;
}
else if (nomeOficial != null && nomeMunicipio != null) {
querySelectFrom += ", municipio m";
queryWhere += " AND o.municipio = m.id";
if (nomeOficial != null){
queryWhere += " AND LOWER(p.nome_oficial) LIKE LOWER('%"+nomeOficial+"%')";
queryWhere += " AND p.id = o.programa_vinculado AND LOWER(m.nome) LIKE LOWER('%"+nomeMunicipio+"%')";
queryWhere += " AND "+strTemas;
}
if (nomeMunicipio != null){
queryFrom += ", ocorrencia_municipal o, ocorrencia_municipal_municipios om, municipio m";
queryWhere += " AND o.status = 'Efetivo'";
queryWhere += " AND p.id = o.programa_vinculado AND o.id = om.ocorrencia_municipal AND om.municipios = m.id";
queryWhere += " AND LOWER(m.nome) LIKE LOWER('%"+nomeMunicipio+"%')";
}
query = querySelectFrom + queryWhere;
query = querySelect + queryFrom + queryWhere;
return entityManager().createNativeQuery(query, Programa.class).getResultList();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment