Pessoal, tô com um problemão aqui e preciso da ajuda de vcs para resolver isso.
É o seguinte: Tenho um formulário de pesquisa com alguns campos, este formulário submete ao arquivo PesquisaAgenda.java, lá o script monta um ArrayList com as opções selecionadas no formulário e coloca num select.
Meu problema é que nem todos os campos das opções selecionadas no formulário não estão na mesma tabela e então não funciona em somente um select.
Estou tendo problemas quando seleciono as opções de data (Inicio e Fim) para pesquisar por período.
Ex: Inicio 01-08-2010 e Fim 31-08-2010. O código abaixo, mostra como faço a pesquisa, só que tá buscando várias vezes a mesma data.
Está imprimindo assim:
2010-08-27
2010-08-27
2010-08-27
2010-08-27
2010-08-27
2010-08-27
2010-08-26
package servletsAgenda;
import java.sql.Statement;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import util.*;
import classes.*;
public class PesquisaAgenda extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException {
response.setContentType("text/html;charset=ISO-8859-1");
PrintWriter out = response.getWriter();
//RECEBEOS VALORES DAS VARIÁVEIS
String dt_reu_ini = request.getParameter("data_reu_ini");
String dt_reu_fim = request.getParameter("data_reu_fim");
String tecnologia = request.getParameter("tecnologia");
String projeto = request.getParameter("projetos");
String tipo = request.getParameter("tipo");
String apr = request.getParameter("apr");
new AgeBasico().setExclui(request.getParameter("exclui"));
String retorno = null;
try{
if (dt_reu_ini==null && dt_reu_fim==null && tecnologia.equals("")&& projeto.equals("")&& tipo.equals("")&& apr.equals("")){
retorno = (String) request.getSession().getAttribute("retornoSession");
}
else
{
String dataFormPesqIni = null;
String dataFormPesqFim = null;
if (!dt_reu_ini.equals("") && !dt_reu_fim.equals("")){
Date data_pesqIni = new SimpleDateFormat("dd-MM-yyyy").parse(dt_reu_ini);
dataFormPesqIni = new SimpleDateFormat("yyyy-MM-dd").format(data_pesqIni);
Date data_pesqFim = new SimpleDateFormat("dd-MM-yyyy").parse(dt_reu_fim);
dataFormPesqFim = new SimpleDateFormat("yyyy-MM-dd").format(data_pesqFim);
}
// monta um array com as opções de pesquisa
List<String> lista = new ArrayList<String>();
if(dataFormPesqIni!=null)
lista.add("dt_reuniao>='"+dataFormPesqIni+"'");
if(dataFormPesqFim!=null)
lista.add("dt_reuniao<='"+dataFormPesqFim+"'");
if(tecnologia!=null && !tecnologia.equals(""))
lista.add("tecnologia = '"+tecnologia+"'");
if(projeto!=null && !projeto.equals(""))
lista.add("assunto = '"+projeto+"'");
if(tipo!=null && !tipo.equals(""))
lista.add("tipo = '"+tipo+"'");
if(apr!=null && !apr.equals(""))
lista.add("apresentador = '"+apr+"'");
StringBuilder sb = new StringBuilder();
for(String s : lista){
sb.append(" and ").append(s);
}
retorno = sb.toString().replaceFirst("and", "");
request.getSession().setAttribute("retornoSession", retorno);
}
} catch (Exception e) {
e.printStackTrace();
}
//ABRE CONEXÃO COM O BANCO
ConexaoUtil c = new ConexaoUtil();
//MONTA LISTA COM O VALORES DAS CONSULTAS
List<Agenda> listaAgenda = new ArrayList<Agenda>();
List<AgeBasico> listaAgendaBasico = new ArrayList<AgeBasico>();
//SQL QUE BUSCA AS INFORMAÇÕES SOBRE A AGENDA
try{
ResultSet rs = c.executeConsulta("select * from agendatopicos where"+retorno+" order by idtopicos asc");
while (rs.next()){
Agenda age = new Agenda();
age.setIdAgenda(rs.getString("idagenda"));
age.setIdTopico(rs.getString("idtopicos"));
age.setIdSos(rs.getString("idsos"));
age.setAssunto(rs.getString("assunto"));
age.setTipo(rs.getString("tipo"));
age.setApresentador(rs.getString("apresentador"));
age.setHorario(rs.getString("horario"));
age.setDuracao(rs.getString("duracao"));
age.setIdCampo(rs.getString("idcampo"));
age.setSos(rs.getString("sos"));
age.setDtReuniao(rs.getDate("dt_reuniao"));
listaAgenda.add(age);
}
for (Agenda dataReu : listaAgenda) {
ResultSet rs_basico = c.executeConsulta("select * from agendabasico where idagenda='"+dataReu.getIdAgenda()+"'order by idagenda asc");
while (rs_basico.next()){
AgeBasico ageBasico = new AgeBasico();
ageBasico.setIdAgenda(rs_basico.getString("idagenda"));
ageBasico.setIdAta(rs_basico.getString("idata"));
ageBasico.setDtReuniao(rs_basico.getDate("dt_reuniao"));
ageBasico.setTec(rs_basico.getString("tecnologia"));
ageBasico.setLinkApre(rs_basico.getString("link_apre"));
ageBasico.setAta(rs_basico.getString("ata"));
listaAgendaBasico.add(ageBasico);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
for (Agenda teste : listaAgenda){
out.println(teste.getDtReuniao()+"<br>");
}
//FECHA CONEXÃO COM O BANCO DE DADOS
c.fechaConexao();
request.setAttribute("listaAge",listaAgenda);
request.setAttribute("listaAgeBasico",listaAgendaBasico);
String nextJSP = "/agenda/agendaPesquisaRet.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
As tabelas estão assim:
Agradeço se alguém puder ajudar