package gcom.gui.arrecadacao;
import gcom.arrecadacao.ArrecadacaoForma;
import gcom.arrecadacao.FiltroArrecadacaoForma;
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;
/**
* [UC0758]FILTRAR FORMA DE ARRECADACAO
*
* @author Vin�cius Medeiros
* @date 09/04/2008
*/
public class FiltrarArrecadacaoFormaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o caminho do retorno
ActionForward retorno = actionMapping.findForward("exibirManterArrecadacaoForma");
// Mudar isso quando for implementado o esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
FiltrarArrecadacaoFormaActionForm filtrarArrecadacaoFormaActionForm = (FiltrarArrecadacaoFormaActionForm) actionForm;
FiltroArrecadacaoForma filtroArrecadacaoForma = new FiltroArrecadacaoForma();
boolean peloMenosUmParametroInformado = false;
String idArrecadacaoForma = filtrarArrecadacaoFormaActionForm.getIdArrecadacaoForma();
String descricao = filtrarArrecadacaoFormaActionForm.getDescricao();
String codigoArrecadacaoForma = filtrarArrecadacaoFormaActionForm.getCodigoArrecadacaoForma();
String tipoPesquisa = filtrarArrecadacaoFormaActionForm.getTipoPesquisa();
// Filtro pelo ID
if (idArrecadacaoForma != null && !idArrecadacaoForma.trim().equals("")) {
boolean achou = fachada.verificarExistenciaAgente(new Integer(idArrecadacaoForma));
if (achou) {
peloMenosUmParametroInformado = true;
filtroArrecadacaoForma.adicionarParametro(
new ParametroSimples(FiltroArrecadacaoForma.CODIGO,
idArrecadacaoForma));
}
}
// Filtro pela Descri��o
if (descricao != null && !descricao.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null && tipoPesquisa.equals(
ConstantesSistema.TIPO_PESQUISA_COMPLETA.toString())) {
filtroArrecadacaoForma.adicionarParametro(
new ComparacaoTextoCompleto(FiltroArrecadacaoForma.DESCRICAO,
descricao));
} else {
filtroArrecadacaoForma.adicionarParametro(
new ComparacaoTexto(FiltroArrecadacaoForma.DESCRICAO,
descricao));
}
}
// Filtro pelo C�digo
if (codigoArrecadacaoForma != null && !codigoArrecadacaoForma.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroArrecadacaoForma.adicionarParametro(
new ParametroSimples(FiltroArrecadacaoForma.CODIGO_ARRECADACAO_FORMA,
codigoArrecadacaoForma));
}
Collection<ArrecadacaoForma> colecaoArrecadacaoForma = fachada.pesquisar(
filtroArrecadacaoForma, ArrecadacaoForma.class.getName());
//Verificar a existencia de uma Forma de Arrecadacao
if (colecaoArrecadacaoForma.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.arrecadacaoforma_inexistente");
}
// Filtragem sem parametros
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
} else {
httpServletRequest.setAttribute("filtroArrecadacaoForma",filtroArrecadacaoForma);
sessao.setAttribute("filtroArrecadacaoForma",filtroArrecadacaoForma);
sessao.setAttribute("idArrecadacaoForma",idArrecadacaoForma);
}
// Pesquisa sem registros
if (colecaoArrecadacaoForma == null || colecaoArrecadacaoForma.isEmpty()) {
throw new ActionServletException("atencao.pesquisa.nenhumresultado", null,"Forma de Arrecada��o");
} else {
httpServletRequest.setAttribute("colecaoArrecadacaoForma",colecaoArrecadacaoForma);
ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma();
arrecadacaoForma = (ArrecadacaoForma) Util.retonarObjetoDeColecao(colecaoArrecadacaoForma);
String idRegistroAtualizacao = arrecadacaoForma.getId().toString();
sessao.setAttribute("idRegistroAtualizacao", idRegistroAtualizacao);
}
sessao.setAttribute("filtroArrecadacaoForma", filtroArrecadacaoForma);
httpServletRequest.setAttribute("filtroArrecadacaoForma", filtroArrecadacaoForma);
return retorno;
}
}