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.Util;
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;
import org.apache.struts.validator.DynaValidatorForm;
/**
* Action respons�vel pela pre-exibi��o da pagina de filtrar logradouro
*
* @author S�vio Luiz
* @date 28/06/2006
*/
public class ExibirFiltrarLogradouroAction extends GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("filtrarLogradouro");
DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm;
Fachada fachada = Fachada.getInstancia();
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
if (sessao.getAttribute("consultaLogradouro") != null) {
sessao.removeAttribute("consultaLogradouro");
}
// -------Parte que trata do c�digo quando o usu�rio tecla enter
// caso seja o id do municipio
String idDigitadoEnterMunicipio = (String) pesquisarActionForm.get("idMunicipioFiltro");
String idDigitadoEnterBairro = (String) pesquisarActionForm.get("idBairro");
String codigoDigitadoEnterCep = (String) pesquisarActionForm.get("cep");
if (sessao.getAttribute("atualizar") != null){
sessao.removeAttribute("atualizar");
}
if (sessao.getAttribute("manter") != null){
sessao.removeAttribute("manter");
}
// Verifica se o c�digo foi digitado
if (idDigitadoEnterMunicipio != null
&& !idDigitadoEnterMunicipio.trim().equals("")
&& Integer.parseInt(idDigitadoEnterMunicipio) > 0) {
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, idDigitadoEnterMunicipio));
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection municipioEncontrado = fachada.pesquisar(filtroMunicipio,
Municipio.class.getName());
if (municipioEncontrado != null && !municipioEncontrado.isEmpty()) {
// O municipio foi encontrado
pesquisarActionForm.set("idMunicipioFiltro",
((Municipio) ((List) municipioEncontrado).get(0))
.getId().toString());
pesquisarActionForm.set("nomeMunicipio",
((Municipio) ((List) municipioEncontrado).get(0))
.getNome());
httpServletRequest.setAttribute("nomeCampo", "idBairro");
} else {
pesquisarActionForm.set("idMunicipioFiltro", "");
httpServletRequest.setAttribute("idMunicipioNaoEncontrado",
"true");
pesquisarActionForm.set("nomeMunicipio",
"Munic�pio inexistente");
httpServletRequest.setAttribute("nomeCampo", "idMunicipioFiltro");
}
}
if (idDigitadoEnterBairro != null
&& !idDigitadoEnterBairro.trim().equals("")
&& Integer.parseInt(idDigitadoEnterBairro) > 0) {
if (idDigitadoEnterMunicipio == null || idDigitadoEnterMunicipio.trim().equalsIgnoreCase("")) {
//Limpa os campos bairroCD e bairroID do formulario
pesquisarActionForm.set("idBairro", "");
pesquisarActionForm.set("nomeBairro", "Informe Munic�pio");
httpServletRequest.setAttribute("corBairro", "exception");
httpServletRequest.setAttribute("nomeCampo", "idMunicipioFiltro");
} else {
//Recebe o valor do campo bairroCD do formul�rio.
String idBairro = (String) pesquisarActionForm.get("idBairro");
FiltroBairro filtroBairro = new FiltroBairro();
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.MUNICIPIO_ID, idDigitadoEnterMunicipio));
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.CODIGO, idBairro));
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna bairro
Collection<Bairro> colecaoPesquisa = fachada.pesquisar(filtroBairro, Bairro.class
.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//bairro nao encontrado
//Limpa os campos bairroCD, bairroID e bairroNome
pesquisarActionForm.set("idBairro", "");
pesquisarActionForm.set("nomeBairro","Bairro inexistente.");
httpServletRequest.setAttribute("corBairro", "exception");
httpServletRequest.setAttribute("nomeCampo", "idLogradouro");
} else {
Bairro objetoBairro = (Bairro) Util
.retonarObjetoDeColecao(colecaoPesquisa);
pesquisarActionForm.set("idBairro", String.valueOf(objetoBairro
.getCodigo()));
pesquisarActionForm.set("nomeBairro", objetoBairro.getNome());
httpServletRequest.setAttribute("corBairro", "valor");
httpServletRequest.setAttribute("nomeCampo", "idBairro");
}
}
}
//Verifica se o c�digo do CEP foi digitado
if ((codigoDigitadoEnterCep != null
&& !codigoDigitadoEnterCep.trim().equals("")
&& Integer.parseInt(codigoDigitadoEnterCep) > 0)) {
FiltroCep filtroCep = new FiltroCep();
filtroCep.adicionarParametro(new ParametroSimples(
FiltroCep.CODIGO, codigoDigitadoEnterCep));
filtroCep.adicionarParametro(new ParametroSimples(
FiltroCep.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection cepEncontrado = fachada.pesquisar(filtroCep,
Cep.class.getName());
if (cepEncontrado != null && !cepEncontrado.isEmpty()) {
// O CEP foi encontrado
pesquisarActionForm.set("cep",
((Cep) ((List) cepEncontrado).get(0))
.getCodigo().toString());
pesquisarActionForm.set("retornoCep",
((Cep) ((List) cepEncontrado).get(0))
.getDescricaoLogradouroFormatada());
httpServletRequest.setAttribute("nomeCampo", "Button");
} else {
pesquisarActionForm.set("cep", "");
httpServletRequest.setAttribute("cepNaoEncontrado",
"true");
pesquisarActionForm.set("retornoCep",
"CEP INV�LIDO");
httpServletRequest.setAttribute("nomeCampo", "cep");
}
}
// verifica se n�o foi a pesquisa do enter
// se n�o for ent�o � a primeira vez que entra no action
// prepara as cole��es de logradouro tipo e logradouro titulo para
// exibir
// na p�gina
if ((idDigitadoEnterMunicipio == null
|| idDigitadoEnterMunicipio.trim().equals("")) &&
(codigoDigitadoEnterCep == null
|| codigoDigitadoEnterCep.trim().equals(""))) {
FiltroLogradouroTipo filtroLogradouroTipo = new FiltroLogradouroTipo(
FiltroLogradouroTipo.DESCRICAO);
filtroLogradouroTipo.setConsultaSemLimites(true);
filtroLogradouroTipo.adicionarParametro(new ParametroSimples(
FiltroLogradouroTipo.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection logradouroTipos = fachada.pesquisar(
filtroLogradouroTipo, LogradouroTipo.class.getName());
if (logradouroTipos == null || logradouroTipos.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null,
"logradouro tipo");
} else {
sessao.setAttribute("logradouroTipos", logradouroTipos);
}
FiltroLogradouroTitulo filtroLogradouroTitulo = new FiltroLogradouroTitulo(
FiltroLogradouroTitulo.DESCRICAO);
filtroLogradouroTitulo.setConsultaSemLimites(true);
filtroLogradouroTitulo.adicionarParametro(new ParametroSimples(
FiltroLogradouroTipo.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection logradouroTitulos = fachada.pesquisar(
filtroLogradouroTitulo, LogradouroTitulo.class.getName());
if (logradouroTitulos == null || logradouroTitulos.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null,
"logradouro t�tulo");
} else {
sessao.setAttribute("logradouroTitulos", logradouroTitulos);
}
}
if (pesquisarActionForm.get("tipoPesquisa") == null
|| pesquisarActionForm.get("tipoPesquisa").equals("")) {
pesquisarActionForm.set("tipoPesquisa",
ConstantesSistema.TIPO_PESQUISA_INICIAL.toString());
}
if (pesquisarActionForm.get("tipoPesquisaPopular") == null
|| pesquisarActionForm.get("tipoPesquisaPopular").equals("")) {
pesquisarActionForm.set("tipoPesquisaPopular",
ConstantesSistema.TIPO_PESQUISA_INICIAL.toString());
}
httpServletRequest.removeAttribute("i");
String atualizar = httpServletRequest.getParameter("atualizar");
String menu = httpServletRequest.getParameter("menu");
if(httpServletRequest.getParameter("implog")!=null &&
httpServletRequest.getParameter("implog").equals("sim")){
pesquisarActionForm.set("indicadorImportanciaLogradouro", "1");
sessao.setAttribute("indicadorImportanciaLogradouro",
"true");
}
if (atualizar == null && menu == null){
boolean i = true;
httpServletRequest.setAttribute("i",i);
} else{
boolean i = true;
httpServletRequest.setAttribute("i",i);
}
if (httpServletRequest.getAttribute("nomeCampo") == null){
httpServletRequest.setAttribute("nomeCampo", "idMunicipioFiltro");
}
return retorno;
}
}