package gcom.gui.arrecadacao.banco;
import gcom.arrecadacao.banco.ContaBancaria;
import gcom.arrecadacao.banco.FiltroContaBancaria;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ComparacaoTexto;
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;
public class RetornarContaBancariaPesquisarAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Inicializacoes de variaveis
ActionForward retorno = actionMapping
.findForward("retornarContaBancariaPesquisar");
HttpSession sessao = httpServletRequest.getSession(false);
//Fachada fachada = Fachada.getInstancia();
boolean peloMenosUmParametroInformado = false;
ContaBancariaPesquisarActionForm form = (ContaBancariaPesquisarActionForm) actionForm;
FiltroContaBancaria filtroContaBancaria = new FiltroContaBancaria();
//Inicializacoes de variaveis
//Carregamento de Entidades para pesquisa com ID de Banco
filtroContaBancaria.adicionarCaminhoParaCarregamentoEntidade("agencia.banco");
String idBanco = form.getIdBanco().trim();
if(idBanco != null && new Integer(idBanco).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO){
filtroContaBancaria.adicionarParametro(new ParametroSimples(FiltroContaBancaria.AGENCIA_BANCO_ID, idBanco));
peloMenosUmParametroInformado = true;
}
//Adicionando id de Agencia para a pesquisa
String idAgencia = form.getIdAgencia().trim();
if(idAgencia != null && !idAgencia.equals("")
&& (new Integer(idAgencia).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO)){
filtroContaBancaria.adicionarParametro(new ParametroSimples(FiltroContaBancaria.AGENCIA_ID, idAgencia));
peloMenosUmParametroInformado = true;
}
//Adicionando numero de Conta para a pesquisa
String numeroConta = form.getNumeroConta().trim();
if(numeroConta != null && !numeroConta.equals("")){
filtroContaBancaria.adicionarParametro(new ComparacaoTexto(FiltroContaBancaria.NUMERO_CONTA, numeroConta));
peloMenosUmParametroInformado = true;
}
//Testa se pelo menos um parametro foi informado
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
//Pesquisa e retorno da collection de Contas Bancarias
Collection<ContaBancaria> collectionContaBancaria = null;//
//Alterado para retornar a cole��o com o controle novo de pagina��o - Fernanda Paiva - 10/08/2006
//Collection<ContaBancaria> collectionContaBancaria =fachada.pesquisar(filtroContaBancaria, ContaBancaria.class.getName());
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroContaBancaria, ContaBancaria.class.getName());
collectionContaBancaria = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
//Validacoes
if (collectionContaBancaria == null || collectionContaBancaria.isEmpty()) {
// Nenhuma cliente cadastrado
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "conta bancaria");
} else if (collectionContaBancaria.size() > ConstantesSistema.NUMERO_MAXIMO_REGISTROS_PESQUISA) {
// Muitos registros encontrados
throw new ActionServletException("atencao.pesquisa.muitosregistros");
} else {
// Coloca a cole��o na sess�o
sessao.setAttribute("collectionContaBancaria", collectionContaBancaria);
}
return retorno;
}
}