package gcom.gui.cadastro.endereco;
import gcom.cadastro.endereco.Cep;
import gcom.cadastro.endereco.FiltroCep;
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.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
import gcom.util.filtro.MaiorQue;
import gcom.util.filtro.MenorQue;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Map;
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;
/**
* Esta classe tem por finalidade receber os par�metros informados pelo usu�rio e realizar uma
* pesquisa de CEPs a partir dos mesmos
*
* @author Raphael Rossiter
* @date 06/05/2006
*/
public class PesquisarCepAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("pesquisarCep");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
PesquisarCepActionForm pesquisarCepActionForm = (PesquisarCepActionForm) actionForm;
Municipio municipio = null;
if (pesquisarCepActionForm.getIdMunicipio() == null ||
pesquisarCepActionForm.getIdMunicipio().equals("")){
throw new ActionServletException("errors.required", null, "munic�pio");
}
else{
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.ID,
pesquisarCepActionForm.getIdMunicipio()));
if( sessao.getAttribute("indicadorUsoTodos") == null ){
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
Collection colecaoMunicipio = fachada.pesquisar(filtroMunicipio, Municipio.class.getName());
if (colecaoMunicipio != null && !colecaoMunicipio.isEmpty()){
municipio = (Municipio) Util.retonarObjetoDeColecao(colecaoMunicipio);
}
else{
throw new ActionServletException("atencao.municipio.inexistente");
}
}
FiltroCep filtroCep = new FiltroCep(FiltroCep.CODIGO);
filtroCep.adicionarParametro(new ComparacaoTexto(FiltroCep.MUNICIPIO, municipio.getNome()));
if( sessao.getAttribute("indicadorUsoTodos") == null ){
filtroCep.adicionarParametro(new ParametroSimples(FiltroCep.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
if (pesquisarCepActionForm.getNomeLogradouro() != null &&
!pesquisarCepActionForm.getNomeLogradouro().equals("")){
if (pesquisarCepActionForm.getTipoPesquisaLogradouro() != null &&
pesquisarCepActionForm.getTipoPesquisaLogradouro().equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA
.toString())) {
filtroCep.adicionarParametro(new ComparacaoTextoCompleto(FiltroCep.LOGRADOURO,
pesquisarCepActionForm.getNomeLogradouro()));
}else {
filtroCep.adicionarParametro(new ComparacaoTexto(FiltroCep.LOGRADOURO,
pesquisarCepActionForm.getNomeLogradouro()));
}
}
if(pesquisarCepActionForm.getIdCepInicial() != null && pesquisarCepActionForm.getIdCepInicial() != 0){
filtroCep.adicionarParametro(new MaiorQue(FiltroCep.CODIGO, pesquisarCepActionForm.getIdCepInicial()));
}
if(pesquisarCepActionForm.getIdCepFinal() != null && pesquisarCepActionForm.getIdCepFinal() != 0){
filtroCep.adicionarParametro(new MenorQue(FiltroCep.CODIGO, pesquisarCepActionForm.getIdCepFinal()));
}
/*
* C�digo respons�vel pela implementa��o da nova pagina��o
*/
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroCep, Cep.class.getName());
Collection colecaoCep = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
if(colecaoCep == null || colecaoCep.isEmpty())
{
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "cep");
}
sessao.setAttribute("colecaoCep", colecaoCep);
return retorno;
}
}