package gcom.gui.cadastro.geografico;
import gcom.cadastro.cliente.FiltroCliente;
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.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
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;
import org.apache.struts.validator.DynaValidatorForm;
/**
* Realiza a pesquisa de responsavel superior de acordo com os par�metros
* informados
*
* @author S�vio Luiz
* @created 20 de Julho de 2005
*/
public class PesquisarMunicipioAction 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) {
ActionForward retorno = actionMapping.findForward("listaMunicipio");
//Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm;
//Recupera os par�metros do form
String nome = (String) pesquisarActionForm.get("nomeMunicipio");
Integer idRegiaoDesenvolvimento = (Integer) pesquisarActionForm
.get("idRegiaoDesenvolvimento");
Integer idRegiao = (Integer) pesquisarActionForm.get("idRegiao");
Integer idMicrorregiao = (Integer) pesquisarActionForm
.get("idMicrorregiao");
Integer idUnidadeFederacao = (Integer) pesquisarActionForm
.get("idUnidadeFederacao");
String tipoPesquisa = (String) pesquisarActionForm.get("tipoPesquisa");
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.setCampoOrderBy(FiltroCliente.NOME);
boolean peloMenosUmParametroInformado = false;
//Insere os par�metros informados no filtro
if (nome != null && !nome.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null
&& tipoPesquisa
.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA
.toString())) {
filtroMunicipio.adicionarParametro(new ComparacaoTextoCompleto(
FiltroMunicipio.NOME, nome));
} else {
filtroMunicipio.adicionarParametro(new ComparacaoTexto(
FiltroMunicipio.NOME, nome));
}
}
if (idRegiaoDesenvolvimento != null
&& idRegiaoDesenvolvimento.intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.REGIAO_DESENVOLVOMENTO_ID,
idRegiaoDesenvolvimento));
}
if (idRegiao != null
&& idRegiao.intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.REGIAO_ID, idRegiao));
}
if (idMicrorregiao != null
&& idMicrorregiao.intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.MICRORREGICAO_ID, idMicrorregiao));
}
if (idUnidadeFederacao != null
&& idUnidadeFederacao.intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.UNIDADE_FEDERACAO_ID, idUnidadeFederacao));
}
if( sessao.getAttribute("indicadorUsoTodos") == null ){
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
}
//Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
Collection municipios = null;
//Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
//adiciona as depend�ncias para serem mostradas na p�gina
filtroMunicipio
.adicionarCaminhoParaCarregamentoEntidade("microrregiao.regiao");
//Faz a busca das empresas
municipios = fachada.pesquisar(filtroMunicipio, Municipio.class
.getName());
// Aciona o controle de pagina��o para que sejam pesquisados apenas
// os registros que aparecem na p�gina
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroMunicipio, Municipio.class.getName());
municipios = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
if(municipios.isEmpty()){
//Nenhum logradouro cadastrado de acordo com os par�metros passados
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "munic�pio");
}
sessao.setAttribute("colecaoMunicipios", municipios);
return retorno;
}
}