package gcom.gui.cadastro.localidade;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.UnidadeNegocio;
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.ParametroSimples;
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;
/**
* [UC0???]FILTRAR Unidade Negocio
*
* @author R�mulo Aur�lio
* @date 30/09/2008
*/
public class FiltrarUnidadeNegocioAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirManterUnidadeNegocio");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
FiltrarUnidadeNegocioActionForm form = (FiltrarUnidadeNegocioActionForm) actionForm;
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
boolean peloMenosUmParametroInformado = false;
String id = form.getId();
String nome = form.getNome();
String nomeAbreviado = form.getNomeAbreviado();
String idCliente = form.getIdCliente();
String idGerenciaRegional = form.getIdGerenciaRegional();
String cnpj = form.getNumeroCnpj();
String indicadorUso = form.getIndicadorUso();
String tipoPesquisa = form.getTipoPesquisa();
// ID
if (id != null && !id.trim().equals("")) {
boolean achou = fachada.verificarExistenciaAgente(new Integer(id));
if (achou) {
peloMenosUmParametroInformado = true;
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroEmpresa.ID, id));
}
}
// Nome
if (nome != null && !nome.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null
&& tipoPesquisa
.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA
.toString())) {
filtroUnidadeNegocio
.adicionarParametro(new ComparacaoTextoCompleto(
FiltroUnidadeNegocio.NOME, nome));
} else {
filtroUnidadeNegocio.adicionarParametro(new ComparacaoTexto(
FiltroUnidadeNegocio.NOME, nome));
}
}
// Nome Abreviado
if (nomeAbreviado != null && !nomeAbreviado.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeNegocio
.adicionarParametro(new ComparacaoTextoCompleto(
FiltroUnidadeNegocio.NOME_ABREVIADO, nomeAbreviado));
}
// Cliente
if (idCliente != null && !idCliente.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.CLIENTE_ID, idCliente));
}
// Gerencia Regional
if (idGerenciaRegional != null && !idGerenciaRegional.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.ID_GERENCIA, idGerenciaRegional));
}
// Cnpj
if (cnpj != null && !cnpj.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.CNPJ, cnpj));
}
// Indicador uso
if (indicadorUso != null && !indicadorUso.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.INDICADOR_USO, indicadorUso));
}
filtroUnidadeNegocio
.adicionarCaminhoParaCarregamentoEntidade(FiltroUnidadeNegocio.CLIENTE);
filtroUnidadeNegocio
.adicionarCaminhoParaCarregamentoEntidade(FiltroUnidadeNegocio.GERENCIA);
Collection<UnidadeNegocio> colecaoUnidadeNegocio = fachada.pesquisar(
filtroUnidadeNegocio, UnidadeNegocio.class.getName());
// Verificar a existencia
if (colecaoUnidadeNegocio.isEmpty()) {
throw new ActionServletException("atencao.pesquisa_inexistente",
null, "Unidade de Negocio");
}
// Filtragem sem parametros
if (!peloMenosUmParametroInformado == true) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
// Pesquisa sem registros
if (colecaoUnidadeNegocio == null || colecaoUnidadeNegocio.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null,
"Unidade de Negocio");
} else {
httpServletRequest.setAttribute("colecaoUnidadeNegocio",
colecaoUnidadeNegocio);
UnidadeNegocio unidadeNegocio = new UnidadeNegocio();
unidadeNegocio = (UnidadeNegocio) Util
.retonarObjetoDeColecao(colecaoUnidadeNegocio);
String idRegistroAtualizar = unidadeNegocio.getId().toString();
sessao.setAttribute("idRegistroAtualizar", idRegistroAtualizar);
}
sessao.setAttribute("filtroUnidadeNegocio", filtroUnidadeNegocio);
httpServletRequest.setAttribute("filtroUnidadeNegocio",
filtroUnidadeNegocio);
// Verifica se o checkbox Atualizar est� marcado e em caso afirmativo
// manda pelo um request uma vari�vel para o
// ExibirManterFuncionalidadeAction e nele verificar se ir� para o
// atualizar ou para o manter
if (form.getAtualizar() != null
&& form.getAtualizar().equalsIgnoreCase("1")) {
httpServletRequest.setAttribute("atualizar", form.getAtualizar());
}
return retorno;
}
}