package gcom.gui.cadastro.endereco;
import gcom.cadastro.endereco.Cep;
import gcom.cadastro.endereco.FiltroCep;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.filtro.ComparacaoTexto;
import java.util.Collection;
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 exibir para o usu�rio os CEPs que ser�o retornados
* a partir dos par�metros que foram passados pelo filtro
*
* @author Raphael Rossiter
* @date 03/05/2006
*/
public class PesquisarSelecionarCepAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("exibirSelecionarCep");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
SelecionarCepActionForm selecionarCepActionForm = (SelecionarCepActionForm) actionForm;
FiltroCep filtroCep = new FiltroCep();
filtroCep.setConsultaSemLimites(true);
Collection colecaoCep = null;
//Validando os campos do formulario
boolean peloMenosUmParametroInformado = false;
//Munic�pio
if (selecionarCepActionForm.getNomeMunicipio() != null &&
!selecionarCepActionForm.getNomeMunicipio().equals("")) {
String nomeMunicipioJSP = selecionarCepActionForm.getNomeMunicipio();
peloMenosUmParametroInformado = true;
filtroCep.adicionarParametro(new ComparacaoTexto(
FiltroCep.MUNICIPIO, nomeMunicipioJSP));
}
//Logradouro
if (selecionarCepActionForm.getNomeLogradouro() != null &&
!selecionarCepActionForm.getNomeLogradouro().equals("")) {
String nomeLogradouroJSP = selecionarCepActionForm.getNomeLogradouro();
peloMenosUmParametroInformado = true;
filtroCep.adicionarParametro(new ComparacaoTexto(
FiltroCep.LOGRADOURO, nomeLogradouroJSP));
}
//Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
//Retorna o(s) bairro(s)
colecaoCep = fachada.pesquisar(filtroCep, Cep.class.getName());
if (colecaoCep == null || colecaoCep.isEmpty()) {
/*
* Nenhum CEP cadastrado de acordo com os par�metros passados
* Ser� disponibilizado para o usu�rio a op��o de CEP Padr�o
*/
httpServletRequest.setAttribute("cepPadrao", "OK");
sessao.removeAttribute("colecaoCepSelecionados");
} else {
sessao.setAttribute("colecaoCepSelecionados", colecaoCep);
}
httpServletRequest.setAttribute("nomeCampo", "botaoSelecionar");
return retorno;
}
}