package gcom.gui.cadastro.geografico;
import gcom.cadastro.geografico.FiltroMunicipio;
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 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;
/**
* [UC0006] FILTRAR MUNICIPIO
*
* @author K�ssia Albuquerque
* @date 03/01/2007
*/
public class FiltrarMunicipioAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("exibirManterMunicipio");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
FiltrarMunicipioActionForm form = (FiltrarMunicipioActionForm) actionForm;
// Recupera todos os campos da p�gina para ser colocada no filtro
// posteriormente
String codigoMunicipio = form.getCodigoMunicipio();
String nomeMunicipio = form.getNomeMunicipio();
String tipoPesquisa = form.getTipoPesquisa();
String regiaoDesenv = form.getRegiaoDesenv();
String regiao = form.getRegiao();
String microregiao = form.getMicroregiao();
String unidadeFederacao = form.getUnidadeFederacao();
String indicadorUso = form.getIndicadorUso();
String ordernarPor = form.getOrdernarPor();
// Indicador Atualizar
String indicadorAtualizar = httpServletRequest.getParameter("indicadorAtualizar");
if (indicadorAtualizar != null && !indicadorAtualizar.equals("")) {
sessao.setAttribute("indicadorAtualizar", indicadorAtualizar);
} else {
sessao.removeAttribute("indicadorAtualizar");
}
FiltroMunicipio filtroMunicipio = null;
if(ordernarPor != null && ordernarPor.equals(ConstantesSistema.ORDENAR_POR_CODIGO)){
filtroMunicipio = new FiltroMunicipio(FiltroMunicipio.ID);
}else{
filtroMunicipio = new FiltroMunicipio(FiltroMunicipio.NOME);
}
// Objetos que ser�o retornados pelo hibernate
filtroMunicipio.adicionarCaminhoParaCarregamentoEntidade("regiaoDesenvolvimento");
filtroMunicipio.adicionarCaminhoParaCarregamentoEntidade("microrregiao.regiao");
filtroMunicipio.adicionarCaminhoParaCarregamentoEntidade("unidadeFederacao");
boolean peloMenosUmParametroInformado = false;
// C�digo do Munic�pio
if (codigoMunicipio != null && !codigoMunicipio.trim().equals("")) {
// [FS0004] - Verificando a exist�ncia do Municipio
boolean achou = fachada.verificarExistenciaMunicipio(new Integer(codigoMunicipio));
if (achou){
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.ID, codigoMunicipio));
}
}
// Nome do Municipio
if (nomeMunicipio != null && !nomeMunicipio.equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null && tipoPesquisa.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA.toString())) {
filtroMunicipio.adicionarParametro(new ComparacaoTextoCompleto(FiltroMunicipio.NOME,
nomeMunicipio));
} else {
filtroMunicipio.adicionarParametro(new ComparacaoTexto(FiltroMunicipio.NOME, nomeMunicipio));
}
}
// Regi�o de Desenvolvimento
if (regiaoDesenv != null && !regiaoDesenv.trim().equalsIgnoreCase(String.valueOf(ConstantesSistema.
NUMERO_NAO_INFORMADO))) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.REGIAO_DESENVOLVOMENTO_ID,
regiaoDesenv));
}
// Regi�o
if (regiao != null && !regiao.trim().equalsIgnoreCase(String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.REGIAO_ID, regiao));
}
// Microrregi�o
if (microregiao != null && !microregiao.trim().equalsIgnoreCase(String.valueOf(ConstantesSistema.
NUMERO_NAO_INFORMADO))) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.MICRORREGICAO_ID, microregiao));
}
// Regi�o de Desenvolvimento
if (unidadeFederacao != null && !unidadeFederacao.trim().equalsIgnoreCase(String.valueOf(ConstantesSistema.
NUMERO_NAO_INFORMADO))) {
peloMenosUmParametroInformado = true;
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.UNIDADE_FEDERACAO_ID,
unidadeFederacao));
}
// Indicador de Uso
if (indicadorUso != null && !indicadorUso.equalsIgnoreCase("")&& !indicadorUso.equalsIgnoreCase("3")) {
peloMenosUmParametroInformado = true;
if (indicadorUso.equalsIgnoreCase(String.valueOf(ConstantesSistema.INDICADOR_USO_ATIVO))) {
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
} else {
filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_DESATIVO));
}
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
}
// Manda o filtro pela sessao para o
// ExibirManterMunicipioAction
sessao.setAttribute("filtroMunicipio", filtroMunicipio);
return retorno;
}
}