package gcom.gui.cobranca;
import gcom.cobranca.CobrancaAcaoAtividadeCronograma;
import gcom.cobranca.CobrancaGrupo;
import gcom.cobranca.CobrancaGrupoCronogramaMes;
import gcom.cobranca.FiltroCobrancaAcaoAtividadeCronograma;
import gcom.cobranca.FiltroCobrancaGrupo;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
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;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class ExibirManterCobrancaCronogramaAction 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) {
//Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("manterCobrancaCronograma");
Fachada fachada = Fachada.getInstancia();
CobrancaActionForm cobrancaActionForm = (CobrancaActionForm) actionForm;
//Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = (FiltroCobrancaAcaoAtividadeCronograma)sessao.getAttribute("filtroCobrancaAcaoAtividade");
// 1� Passo - Pegar o total de registros atrav�s de um count da consulta que aparecer� na tela
Integer totalRegistros = fachada
.pesquisarCobrancaCronogramaCount(filtroCobrancaAcaoAtividadeCronograma);
// 2� Passo - Chamar a fun��o de Pagina��o passando o total de registros
retorno = this.controlarPaginacao(httpServletRequest, retorno,
totalRegistros);
FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronogramaDois = new FiltroCobrancaAcaoAtividadeCronograma();
filtroCobrancaAcaoAtividadeCronogramaDois = (FiltroCobrancaAcaoAtividadeCronograma)sessao.getAttribute("filtroCobrancaAcaoAtividade");
// filtroCobrancaAcaoAtividadeCronogramaDois.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma.cobrancaGrupoCronogramaMes.cobrancaGrupo");
// 3� Passo - Obter a cole��o da consulta que aparecer� na tela passando o numero de paginas
// da pesquisa que est� no request
Collection colecaoCobrancaCronograma = fachada
.pesquisar(filtroCobrancaAcaoAtividadeCronogramaDois,
(Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa"),
CobrancaAcaoAtividadeCronograma.class.getName());
Collection colecaoCronogramaNova = new ArrayList();
if(!colecaoCobrancaCronograma.isEmpty()){
Iterator iteratorColecaoCobrancaCronograma = colecaoCobrancaCronograma.iterator();
Collection colecaoCobrancaGrupo = new ArrayList();
while(iteratorColecaoCobrancaCronograma.hasNext()){
CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMes = (CobrancaGrupoCronogramaMes)iteratorColecaoCobrancaCronograma.next();
FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo();
filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, cobrancaGrupoCronogramaMes.getCobrancaGrupo().getId()));
colecaoCobrancaGrupo = fachada.pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName());
cobrancaGrupoCronogramaMes.setCobrancaGrupo((CobrancaGrupo)colecaoCobrancaGrupo.iterator().next());
colecaoCronogramaNova.add(cobrancaGrupoCronogramaMes);
}
//ordena��o atrav�s do sort---Feita pelo mesAnoReferencia
Collections.sort((List) colecaoCronogramaNova, new Comparator() {
public int compare(Object a, Object b) {
String cobrancaAcaoAtividadeCronograma1 = ((CobrancaGrupoCronogramaMes) a).getMesAno();
String cobrancaAcaoAtividadeCronograma2 = ((CobrancaGrupoCronogramaMes) b).getMesAno();
return cobrancaAcaoAtividadeCronograma1.compareTo(cobrancaAcaoAtividadeCronograma2);
}
});
}
//// Aciona o controle de pagina��o para que sejam pesquisados apenas
// // os registros que aparecem na p�gina
// Map resultado = controlarPaginacao(httpServletRequest, retorno,
// filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName());
// Collection colecaoCobrancaCronograma = (Collection) resultado.get("colecaoRetorno");
// retorno = (ActionForward) resultado.get("destinoActionForward");
//
String identificadorAtualizar = cobrancaActionForm.getIndicadorAtualizar();
if (colecaoCobrancaCronograma.size()== 1 && identificadorAtualizar != null
&& !identificadorAtualizar.trim().equals("2") ){
// caso o resultado do filtro s� retorne um registro
// e o check box Atualizar estiver selecionado
//o sistema n�o exibe a tela de manter, exibe a de atualizar
retorno = actionMapping.findForward("atualizarCobrancaCronograma");
CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMes = (CobrancaGrupoCronogramaMes)Util.retonarObjetoDeColecao(colecaoCobrancaCronograma);
sessao.setAttribute("idRegistroAtualizacao", new Integer (cobrancaGrupoCronogramaMes.getId()).toString());
sessao.setAttribute("voltaFiltro", true);
}else if(colecaoCobrancaCronograma.size()== 0){
throw new
ActionServletException("atencao.pesquisa.nenhumresultado");
}else{
sessao.setAttribute("colecaoCobrancaCronograma", colecaoCronogramaNova);
sessao.removeAttribute("voltaFiltro");
}
return retorno;
}
}