package gcom.gui.cadastro.endereco;
import gcom.cadastro.endereco.Cep;
import gcom.cadastro.endereco.FiltroCep;
import gcom.cadastro.endereco.FiltroLogradouroTipo;
import gcom.cadastro.endereco.FiltroLogradouroTitulo;
import gcom.cadastro.endereco.LogradouroTipo;
import gcom.cadastro.endereco.LogradouroTitulo;
import gcom.cadastro.geografico.Bairro;
import gcom.cadastro.geografico.FiltroBairro;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Action que define o pr�-processamento da p�gina de pesquisa de Logradouro
*
* @author Administrador
*/
public class ExibirPesquisarLogradouroAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = null;
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
// Obt�m a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
// Verifica se o pesquisar logradouro foi chamado a partir do inserir
// logradouro
// e em caso afirmativo recebe o par�metro e manda-o pela sess�o para
// ser verificado no logradouro_resultado_pesquisa e depois retirado da
// sess�o no ExibirFiltrarLogradouroAction
if (httpServletRequest.getParameter("consultaLogradouro") != null) {
String consulta = httpServletRequest
.getParameter("consultaLogradouro");
sessao.setAttribute("consultaLogradouro", consulta);
}
ExibirPesquisarLogradouroActionForm exibirPesquisarLogradouroActionForm = (ExibirPesquisarLogradouroActionForm) actionForm;
// Parte da pesquisa da lupa que � rotornada do logradouro_pesquisar.jsp
// para ser redirecionado para a pesquisa que foi chamado
if (httpServletRequest.getParameter("chamarPesquisa") != null) {
retorno = actionMapping.findForward(httpServletRequest
.getParameter("chamarPesquisa"));
if (httpServletRequest.getParameter("chamarPesquisa").equals(
"exibirPesquisarBairro")) {
httpServletRequest.setAttribute("idMunicipio",
exibirPesquisarLogradouroActionForm
.getCodigoMunicipio());
}
if (httpServletRequest.getParameter("chamarPesquisa").equals(
"exibirPesquisarCep")) {
httpServletRequest.setAttribute("idMunicipioDefinido",
exibirPesquisarLogradouroActionForm
.getCodigoMunicipio());
}
return retorno;
} else {
retorno = actionMapping
.findForward("exibirPesquisarLogradouroAction");
}
if (httpServletRequest.getParameter("objetoConsulta") == null
&& httpServletRequest.getParameter("tipoConsulta") == null
&& httpServletRequest.getParameter("chamarPesquisa") == null) {
exibirPesquisarLogradouroActionForm.setCodigoMunicipio("");
exibirPesquisarLogradouroActionForm.setNome("");
exibirPesquisarLogradouroActionForm.setNomePopular("");
exibirPesquisarLogradouroActionForm.setNomeMunicipio("");
exibirPesquisarLogradouroActionForm.setCep("");
exibirPesquisarLogradouroActionForm.setDescricaoCep("");
exibirPesquisarLogradouroActionForm.setCodigoBairro("");
exibirPesquisarLogradouroActionForm.setNomeBairro("");
exibirPesquisarLogradouroActionForm.setTipoLogradouro(String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO));
exibirPesquisarLogradouroActionForm.setTitulo(String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO));
exibirPesquisarLogradouroActionForm
.setTipoPesquisa(ConstantesSistema.TIPO_PESQUISA_INICIAL
.toString());
exibirPesquisarLogradouroActionForm
.setTipoPesquisaPopular(ConstantesSistema.TIPO_PESQUISA_INICIAL
.toString());
}
if (httpServletRequest.getParameter("tipoConsulta") != null
&& !httpServletRequest.getParameter("tipoConsulta").equals("")) {
// Verifica se o tipo da consulta de imovel � de municipio
// se for os parametros de enviarDadosParametros ser�o mandados para
// a pagina logradouro_pesuisar.jsp
if (httpServletRequest.getParameter("tipoConsulta").equals(
"municipio")) {
exibirPesquisarLogradouroActionForm
.setCodigoMunicipio(httpServletRequest
.getParameter("idCampoEnviarDados"));
exibirPesquisarLogradouroActionForm
.setNomeMunicipio(httpServletRequest
.getParameter("descricaoCampoEnviarDados"));
}
if (httpServletRequest.getParameter("tipoConsulta")
.equals("bairro")) {
exibirPesquisarLogradouroActionForm
.setCodigoBairro(httpServletRequest
.getParameter("idCampoEnviarDados"));
exibirPesquisarLogradouroActionForm
.setNomeBairro(httpServletRequest
.getParameter("descricaoCampoEnviarDados"));
}
if (httpServletRequest.getParameter("tipoConsulta").equals("cep")) {
exibirPesquisarLogradouroActionForm.setCep(httpServletRequest
.getParameter("idCampoEnviarDados"));
exibirPesquisarLogradouroActionForm
.setDescricaoCep(httpServletRequest
.getParameter("descricaoCampoEnviarDados"));
}
}
// Filtro para pesquisa do municipio
String codigoMunicipio = null;
if(httpServletRequest.getParameter("codigoMunicipio") != null){
codigoMunicipio = httpServletRequest.getParameter("codigoMunicipio");
}
if(httpServletRequest.getAttribute("codigoMunicipio") != null){
codigoMunicipio = (String)httpServletRequest.getAttribute("codigoMunicipio");
}
String codigoBairro = null;
if(httpServletRequest.getParameter("codigoBairro") != null){
codigoBairro = httpServletRequest.getParameter("codigoBairro");
}
if(httpServletRequest.getAttribute("codigoBairro") != null){
codigoBairro = (String)httpServletRequest.getAttribute("codigoBairro");
}
if ((httpServletRequest.getParameter("primeriaVez") != null
&& httpServletRequest.getParameter("primeriaVez")
.equalsIgnoreCase("1")) || (httpServletRequest.getAttribute("primeriaVez") != null
&& httpServletRequest.getAttribute("primeriaVez")
.equals("1"))) {
sessao.removeAttribute("bloquearMunicipio");
sessao.removeAttribute("bloquearBairro");
if (codigoMunicipio != null && !codigoMunicipio.trim().equals("")) {
sessao.setAttribute("bloquearMunicipio", "S");
}
if (codigoBairro != null && !codigoBairro.trim().equals("")) {
sessao.setAttribute("bloquearBairro", "S");
}
}
if (codigoMunicipio != null
&& !codigoMunicipio.trim().equalsIgnoreCase("")) {
Collection colecaoMunicipio = null;
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, codigoMunicipio));
if (httpServletRequest.getParameter("indicadorUsoTodos") == null
&& sessao.getAttribute("indicadorUso") == null) {
sessao.removeAttribute("indicadorUsoTodos");
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
colecaoMunicipio = fachada.pesquisar(filtroMunicipio,
Municipio.class.getName());
if (!colecaoMunicipio.isEmpty()) {
exibirPesquisarLogradouroActionForm
.setCodigoMunicipio(((Municipio) ((List) colecaoMunicipio)
.get(0)).getId().toString());
exibirPesquisarLogradouroActionForm
.setNomeMunicipio(((Municipio) ((List) colecaoMunicipio)
.get(0)).getNome());
httpServletRequest.setAttribute("nomeCampo", "codigoBairro");
} else {
exibirPesquisarLogradouroActionForm.setCodigoMunicipio("");
exibirPesquisarLogradouroActionForm
.setNomeMunicipio("Munic�pio inexistente");
httpServletRequest.setAttribute("codigoMunicipioNaoEncontrada",
"true");
httpServletRequest.setAttribute("nomeCampo", "codigoMunicipio");
}
}
// Filtro para pesquisa do municipio
if (codigoBairro != null && !codigoBairro.trim().equalsIgnoreCase("")) {
Collection colecaoBairro = null;
FiltroBairro filtroBairro = new FiltroBairro();
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.CODIGO, codigoBairro));
if (codigoMunicipio != null && !codigoMunicipio.trim().equals("")) {
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.MUNICIPIO_ID, codigoMunicipio));
}
if (httpServletRequest.getParameter("indicadorUsoTodos") == null
&& sessao.getAttribute("indicadorUso") == null) {
sessao.removeAttribute("indicadorUsoTodos");
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
colecaoBairro = fachada.pesquisar(filtroBairro, Bairro.class
.getName());
if (!colecaoBairro.isEmpty()) {
exibirPesquisarLogradouroActionForm
.setCodigoBairro(((Bairro) ((List) colecaoBairro)
.get(0)).getCodigo()
+ "");
exibirPesquisarLogradouroActionForm
.setNomeBairro(((Bairro) ((List) colecaoBairro).get(0))
.getNome());
httpServletRequest.setAttribute("nomeCampo", "tipo");
} else {
exibirPesquisarLogradouroActionForm.setCodigoBairro("");
exibirPesquisarLogradouroActionForm
.setNomeBairro("Bairro inexistente");
httpServletRequest.setAttribute("codigoBairroNaoEncontrada",
"true");
httpServletRequest.setAttribute("nomeCampo", "codigoBairro");
}
}
// Filtro para pesquisa do cep
String cep = httpServletRequest.getParameter("cep");
if (cep != null && !cep.trim().equalsIgnoreCase("")) {
Collection colecaoCep = null;
FiltroCep filtroCep = new FiltroCep();
filtroCep.adicionarParametro(new ParametroSimples(FiltroCep.CODIGO,
cep));
if (httpServletRequest.getParameter("indicadorUsoTodos") == null
&& sessao.getAttribute("indicadorUso") == null) {
sessao.removeAttribute("indicadorUsoTodos");
filtroCep.adicionarParametro(new ParametroSimples(
FiltroCep.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
colecaoCep = fachada.pesquisar(filtroCep, Cep.class.getName());
if (!colecaoCep.isEmpty()) {
exibirPesquisarLogradouroActionForm
.setCep(((Cep) ((List) colecaoCep).get(0)).getCodigo()
.toString());
exibirPesquisarLogradouroActionForm
.setDescricaoCep(((Cep) ((List) colecaoCep).get(0))
.getDescricaoLogradouroFormatada());
} else {
exibirPesquisarLogradouroActionForm.setCep("");
exibirPesquisarLogradouroActionForm
.setDescricaoCep("Cep inexistente");
httpServletRequest.setAttribute("cepNaoEncontrada", "true");
httpServletRequest.setAttribute("nomeCampo", "cep");
}
}
if (httpServletRequest.getParameter("objetoConsulta") == null
|| !httpServletRequest.getParameter("objetoConsulta")
.equalsIgnoreCase("1")) {
Collection colecaoTipo = null;
Collection colecaoTitulo = null;
FiltroLogradouroTipo filtroLogradouroTipo = null;
FiltroLogradouroTitulo filtroLogradouroTitulo = null;
// Filtro para pequisa do tipo do logradouro
filtroLogradouroTipo = new FiltroLogradouroTipo(
FiltroLogradouroTipo.DESCRICAO);
filtroLogradouroTipo.setConsultaSemLimites(true);
if (httpServletRequest.getParameter("indicadorUsoTodos") == null
&& sessao.getAttribute("indicadorUso") == null) {
sessao.removeAttribute("indicadorUsoTodos");
filtroLogradouroTipo.adicionarParametro(new ParametroSimples(
FiltroLogradouroTipo.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
// Filtro para pequisa do titulo do logradouro
filtroLogradouroTitulo = new FiltroLogradouroTitulo(
FiltroLogradouroTitulo.DESCRICAO);
filtroLogradouroTitulo.setConsultaSemLimites(true);
if (httpServletRequest.getParameter("indicadorUsoTodos") == null
&& sessao.getAttribute("indicadorUso") == null) {
sessao.removeAttribute("indicadorUsoTodos");
filtroLogradouroTitulo.adicionarParametro(new ParametroSimples(
FiltroLogradouroTitulo.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
// Retorna todos os tipos de logradouro
colecaoTipo = fachada.pesquisar(filtroLogradouroTipo,
LogradouroTipo.class.getName());
if (colecaoTipo == null || colecaoTipo.isEmpty()) {
// Nenhum tipo de logradouro cadastrado
throw new ActionServletException(
"erro.pesquisa.nenhumresultado");
} else {
sessao.setAttribute("tiposLogradouro", colecaoTipo);
}
// Retorna todos os titulos de logradouro
colecaoTitulo = fachada.pesquisar(filtroLogradouroTitulo,
LogradouroTitulo.class.getName());
if (colecaoTitulo == null || colecaoTitulo.isEmpty()) {
// Nenhum titulo de logradouro cadastrado
throw new ActionServletException(
"erro.pesquisa.nenhumresultado");
} else {
sessao.setAttribute("titulosLogradouro", colecaoTitulo);
}
if (httpServletRequest
.getParameter("caminhoRetornoTelaPesquisaLogradouro") != null) {
sessao
.setAttribute(
"caminhoRetornoTelaPesquisaLogradouro",
httpServletRequest
.getParameter("caminhoRetornoTelaPesquisaLogradouro"));
}
}
if (httpServletRequest.getParameter("indicadorUsoTodos") != null) {
sessao.setAttribute("indicadorUsoTodos", httpServletRequest
.getParameter("indicadorUsoTodos"));
sessao.setAttribute("indicadorUso", httpServletRequest
.getParameter("indicadorUsoTodos"));
}
// devolve o mapeamento de retorno
return retorno;
}
}