Eu fiz esse modelo…
ele verifica se existe, e fica preenchendo… :
Primeiro a tela que recebe os parâmetros do Servlet recebidos do JSP… (aqui vc coloca da onde está pegando os dados) que é um vetor
[code]
// Pega a lista do checkbox da tela (relatorio.jsp) e consulta no
// BD para gerar o resultado da pesquisa
public List<ConsultaGerarRelatorio> Verificador(
String[] MultiplosDadosAtuais) {
GeraRelatorioDAO dao = new GeraRelatorioDAO();
List<Integer> tecnologias = new ArrayList<Integer>();
List<Integer> operadoras = new ArrayList<Integer>();
List<Integer> status = new ArrayList<Integer>();
int cod = 0;
for (String mult : MultiplosDadosAtuais) {
System.out.println("Valor do Vetor: " + mult);
if (mult.contains("A") || mult.contains("B")
|| mult.contains("C") || mult.contains("D")
|| mult.contains("E")) {
if (mult.contains("A")) {
cod = 22;
} else if (mult.contains("B")) {
cod = 26;
} else if (mult.contains("C")) {
cod = 24;
} else if (mult.contains("D")) {
cod = 25;
} else { // E
cod = 23;
}
System.out.println("Tecnologia: " + cod);
// CRIA LISTA DE TECNOLOGIAS
tecnologias.add(cod);
} else if (mult.contains("CLARO") || mult.contains("TIM")
|| mult.contains("OI") || mult.contains("CONECTA")) {
if (mult.contains("CLARO")) {
cod = 10;
} else if (mult.contains("TIM")) {
cod = 11;
} else if (mult.contains("OI")) {
cod = 12;
} else {
cod = 13;
}
System.out.println("Operadora: " + cod);
// CRIA LISTA DE OPERADORAS
operadoras.add(cod);
} else if (mult.contains("Ativo") || mult.contains("Bloqueado")
|| mult.contains("Cancelado")) {
if (mult.contains("Ativo")) {
cod = 16;
} else if (mult.contains("Bloqueado")) {
cod = 15;
} else {
cod = 14;
}
System.out.println("Status: " + cod);
// CRIA LISTA DE STATUS
status.add(cod);
} else {
System.out.println("Campos vazios: " + mult);
}
}
return dao.listaTecnologias(tecnologias, operadoras, status);
}[/code]
Parte do SELECT que não irá ficar mudando:
private static final String SQL_ATUAL = " SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Dispositivo.CodigoTecnologia) AS CodTecnologia, "
+ "(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = SIMCard.CodigoOperadora) AS Operadora, "
+ "(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Linha.CodigoStatusLinha) AS StatusLinha, "
+ "COUNT(*) as Quantidade "
+ "FROM SIMCard LEFT JOIN SIMCardDispositivo ON SIMCardDispositivo.SIMCard_Numero = SIMCard.Numero "
+ "LEFT JOIN Dispositivo ON Dispositivo.Numero = SIMCardDispositivo.Dispositivo_Numero "
+ "INNER JOIN Linha ON Linha.Numero = SIMCard.NumeroLinha "
+ "LEFT JOIN Processamento ON (Processamento.Codigo = SIMCard.CodigoProcessamento OR Processamento.Codigo = Dispositivo.CodigoProcessamento) "
+ "WHERE (";
recebo 3 listas preenchidas, ou não…
[code]
StringBuilder sql = new StringBuilder("");
public List<ConsultaGerarRelatorio> listaTecnologias(
List<Integer> tecnologias, List<Integer> operadoras,
List<Integer> status) {
Connection conn = null;
PreparedStatement ps = null;
List<ConsultaGerarRelatorio> listaConsultaGeraRelatorio = new ArrayList<ConsultaGerarRelatorio>();
if (!tecnologias.isEmpty()) {
sql.append(" Dispositivo.CodigoTecnologia IN (");
for (Iterator<Integer> it = tecnologias.iterator(); it.hasNext();) {
it.next();
sql.append("?");
if (it.hasNext()) {
sql.append(",");
}
}
sql.append(")");
}
if (!operadoras.isEmpty()) {
if (!tecnologias.isEmpty()) {
sql.append(" AND SIMCard.CodigoOperadora IN (");
for (Iterator<Integer> it = operadoras.iterator(); it.hasNext();) {
it.next();
sql.append("?");
if (it.hasNext()) {
sql.append(",");
}
}
sql.append(")");
} else {
sql.append(" SIMCard.CodigoOperadora IN (");
for (Iterator<Integer> it = operadoras.iterator(); it.hasNext();) {
it.next();
sql.append("?");
if (it.hasNext()) {
sql.append(",");
}
}
sql.append(")");
}
}
if (!status.isEmpty()) {
if (!tecnologias.isEmpty() || !operadoras.isEmpty()) {
sql.append(" AND Linha.CodigoStatusLinha IN (");
for (Iterator<Integer> it = status.iterator(); it.hasNext();) {
it.next();
sql.append("?");
if (it.hasNext()) {
sql.append(",");
}
}
sql.append(")");
} else {
sql.append(" Linha.CodigoStatusLinha IN (");
for (Iterator<Integer> it = status.iterator(); it.hasNext();) {
it.next();
sql.append("?");
if (it.hasNext()) {
sql.append(",");
}
}
sql.append(")");
}
}
sql.append(" )");
try {
conn = ConnectionManager.obterConexao();
ps = conn.prepareStatement(SQL_ATUAL + sql.toString());
int indicePs = 1;
if (!tecnologias.isEmpty()) {
for (Integer i : tecnologias) {
ps.setInt(indicePs++, i);
}
}
if (!operadoras.isEmpty()) {
for (Integer i : operadoras) {
ps.setInt(indicePs++, i);
}
}
if (!status.isEmpty()) {
for (Integer i : status) {
ps.setInt(indicePs++, i);
}
}
System.out.println("Consulta: " + SQL_ATUAL + sql.toString());
ResultSet rs = ps.executeQuery();
while (rs.next()) {
ConsultaGerarRelatorio listaRelatorio = new ConsultaGerarRelatorio(
rs.getString("CodTecnologia"),
rs.getString("Operadora"), rs.getString("StatusLinha"),
rs.getString("Quantidade"));
listaConsultaGeraRelatorio.add(listaRelatorio);
System.out.println(rs.getString("CodTecnologia") + " "
+ rs.getString("Operadora") + " "
+ rs.getString("StatusLinha") + " "
+ rs.getString("Quantidade"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionManager.fecharConexao(conn, null, ps);
}
return listaConsultaGeraRelatorio;
}[/code]
da uma analisada que está certinho