package gcom.gui.cobranca; import gcom.cobranca.CobrancaAcao; import gcom.cobranca.CobrancaAcaoAtividadeCronograma; import gcom.cobranca.CobrancaAcaoCronograma; import gcom.cobranca.CobrancaAtividade; import gcom.cobranca.FiltroCobrancaAcao; import gcom.cobranca.FiltroCobrancaAcaoCronograma; import gcom.cobranca.FiltroCobrancaAtividade; import gcom.cobranca.bean.CobrancaCronogramaHelper; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesDiferenteDe; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Date; 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; public class ExibirAdicionarAcaoCobrancaCronogramaPopupAction extends GcomAction { /** * [UC00313] Manter Cronograma Cobran�a * * @author Fl�vio Cordeiro * * @return Descri��o do retorno */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("adicionarAcaoCobrancaCronogramaPopup"); CobrancaActionForm cobrancaActionForm = (CobrancaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); if (httpServletRequest.getParameter("limpar") != null) { sessao.removeAttribute("cobrancaAcaoEscolhida"); sessao.removeAttribute("colecaoCobrancaAtiviade"); cobrancaActionForm.setIdCobrancaAcao("-1"); } Collection colecaoAcaoCobrancaNovo = null; Collection colecaoAcaoCronogramaNaBase = new ArrayList(); Collection colecaoAcaoCobrancaEscolhida = null; CobrancaAcao cobrancaAcaoEscolhida = null; FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); if (sessao.getAttribute("acoesCobranca") != null) { colecaoAcaoCronogramaNaBase = (Collection) sessao .getAttribute("acoesCobranca"); } else if (sessao.getAttribute("colecaoCobrancaCronogramaHelper") != null) { colecaoAcaoCronogramaNaBase = (Collection) sessao .getAttribute("colecaoCobrancaCronogramaHelper"); } else { FiltroCobrancaAcaoCronograma filtroCobrancaAcaoCronograma = new FiltroCobrancaAcaoCronograma(); filtroCobrancaAcaoCronograma .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcao"); filtroCobrancaAcaoCronograma .adicionarCaminhoParaCarregamentoEntidade("cobrancaGrupoCronogramaMes"); filtroCobrancaAcaoCronograma .adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, cobrancaActionForm .getIdCobrancaGrupoCronogramaMes())); colecaoAcaoCronogramaNaBase = fachada.pesquisar( filtroCobrancaAcaoCronograma, CobrancaAcaoCronograma.class .getName()); } Iterator iterator = colecaoAcaoCronogramaNaBase.iterator(); filtroCobrancaAcao .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoPredecessora"); CobrancaAcaoCronograma cobrancaAcaoCronograma = null; CobrancaAcao cobrancaAcaoAux = null; while (iterator.hasNext()) { if (sessao.getAttribute("colecaoCobrancaCronogramaHelper") == null) { cobrancaAcaoCronograma = (CobrancaAcaoCronograma) iterator .next(); } else { if (sessao.getAttribute("acoesCobranca") != null) { cobrancaAcaoAux = (CobrancaAcao) iterator.next(); } else { cobrancaAcaoCronograma = ((CobrancaCronogramaHelper) iterator .next()).getCobrancaAcaoCronograma(); } } if (cobrancaAcaoAux != null) { filtroCobrancaAcao .adicionarParametro(new ParametroSimplesDiferenteDe( FiltroCobrancaAcao.ID, cobrancaAcaoAux.getId())); } else { filtroCobrancaAcao .adicionarParametro(new ParametroSimplesDiferenteDe( FiltroCobrancaAcao.ID, cobrancaAcaoCronograma .getCobrancaAcao().getId())); } } if (cobrancaActionForm.getIdCobrancaAcao() != null && !cobrancaActionForm.getIdCobrancaAcao().trim().equals("-1")) { filtroCobrancaAcao .adicionarParametro(new ParametroSimplesDiferenteDe( FiltroCobrancaAcao.ID, cobrancaActionForm .getIdCobrancaAcao())); } filtroCobrancaAcao.adicionarParametro(new ParametroSimples( FiltroCobrancaAcao.INDICADOR_CRONOGRAMA, CobrancaAcao.INDICADOR_CRONOGRAMA_ATIVO)); filtroCobrancaAcao.adicionarParametro(new ParametroSimples( FiltroCobrancaAcao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoAcaoCobrancaNovo = fachada.pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if ((colecaoAcaoCobrancaNovo.isEmpty() && httpServletRequest .getParameter("reload") == null) || (colecaoAcaoCobrancaNovo.isEmpty() && !httpServletRequest .getParameter("reload").equalsIgnoreCase("N"))) { throw new ActionServletException( "atencao.dependencias.nenhuma_acao_adicionar"); } FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroCobrancaAtividade .setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA)); Collection colecaoCobrancaAtividade = fachada.pesquisar( filtroCobrancaAtividade, CobrancaAtividade.class.getName()); sessao .setAttribute("colecaoCobrancaAtiviade", colecaoCobrancaAtividade); if (cobrancaActionForm.getIdCobrancaAcao() != null && !cobrancaActionForm.getIdCobrancaAcao().trim().equals("-1")) { filtroCobrancaAcao.limparListaParametros(); filtroCobrancaAcao .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoPredecessora"); filtroCobrancaAcao.adicionarParametro(new ParametroSimples( FiltroCobrancaAcao.ID, cobrancaActionForm .getIdCobrancaAcao())); colecaoAcaoCobrancaEscolhida = fachada.pesquisar( filtroCobrancaAcao, CobrancaAcao.class.getName()); cobrancaAcaoEscolhida = (CobrancaAcao) colecaoAcaoCobrancaEscolhida .iterator().next(); sessao.setAttribute("cobrancaAcaoEscolhida", cobrancaAcaoEscolhida); } if (httpServletRequest.getParameter("adicionar") != null) { Collection atividadesCobrancaObrigatoriedadeAtivo = (Collection) sessao .getAttribute("atividadesCobrancaObrigatoriedadeAtivo"); httpServletRequest.setAttribute("adicionar", "adicionar"); CobrancaCronogramaHelper cobrancaCronogramaHelper = new CobrancaCronogramaHelper(); if (cobrancaAcaoEscolhida == null) { cobrancaAcaoEscolhida = (CobrancaAcao) sessao .getAttribute("cobrancaAcaoEscolhida"); } if (cobrancaAcaoEscolhida != null) { Iterator iteratorColecaoNova = colecaoAcaoCobrancaNovo .iterator(); CobrancaAcao cobrancaNovoTesteRemover = null; Collection colecaoCobrancaAcaoReporNova = new ArrayList(); if (!colecaoAcaoCobrancaNovo.isEmpty()) { while (iteratorColecaoNova.hasNext()) { cobrancaNovoTesteRemover = (CobrancaAcao) iteratorColecaoNova .next(); if (cobrancaAcaoEscolhida != null && !cobrancaAcaoEscolhida.getId().equals( cobrancaNovoTesteRemover.getId())) { colecaoCobrancaAcaoReporNova .add(cobrancaNovoTesteRemover); } } } colecaoAcaoCobrancaNovo = colecaoCobrancaAcaoReporNova; CobrancaAtividade cobrancaAtividade = null; CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = null; Collection cobrancasAtividadesParaInsercao = new ArrayList(); CobrancaAcaoCronograma cobrancaAcaoCronogramaNovo = new CobrancaAcaoCronograma(); cobrancaAcaoCronogramaNovo .setCobrancaAcao(cobrancaAcaoEscolhida); cobrancaCronogramaHelper .setCobrancaAcaoCronograma(cobrancaAcaoCronogramaNovo); Collection colecaoAtividades = (Collection) sessao .getAttribute("colecaoCobrancaAtiviade"); Collection colecaoCobrancaHelperNaBase = (Collection) sessao .getAttribute("colecaoCobrancaCronogramaHelper"); Iterator iteratorAtividades = colecaoAtividades.iterator(); Iterator iteratorTesteSucessora = colecaoCobrancaHelperNaBase .iterator(); String idAcaoCobranca = ""; String dataPrevista = ""; // String anoMes = ""; // String mesAno = ""; int verificaDataPreenchida = 0; int contadorAtividades = 0; /** * * */ CobrancaCronogramaHelper cobrancaCronogramaHelperTesteSucessora = null; boolean predecessoraNaColecao = false; if (cobrancaAcaoEscolhida != null && cobrancaAcaoEscolhida.getCobrancaAcaoPredecessora() != null) { // Integer idPredecessora = null; while (iteratorTesteSucessora.hasNext()) { cobrancaCronogramaHelperTesteSucessora = (CobrancaCronogramaHelper) iteratorTesteSucessora .next(); if (cobrancaAcaoEscolhida.getCobrancaAcaoPredecessora() .getId().equals( cobrancaCronogramaHelperTesteSucessora .getCobrancaAcaoCronograma() .getCobrancaAcao().getId())) { predecessoraNaColecao = true; } else { // idPredecessora = // cobrancaCronogramaHelperTesteSucessora.getCobrancaAcaoCronograma() // .getCobrancaAcao().getId(); } } if (!predecessoraNaColecao) { FiltroCobrancaAcao filtroCobrancaAcaoErro = new FiltroCobrancaAcao(); filtroCobrancaAcaoErro .adicionarParametro(new ParametroSimples( FiltroCobrancaAcao.ID, cobrancaAcaoEscolhida .getCobrancaAcaoPredecessora() .getId())); Collection colecaoCobrancaAcaroErro = fachada .pesquisar(filtroCobrancaAcaoErro, CobrancaAcao.class.getName()); CobrancaAcao cobrancaAcao = null; if (!colecaoCobrancaAcaroErro.isEmpty()) { cobrancaAcao = (CobrancaAcao) Util .retonarObjetoDeColecao(colecaoCobrancaAcaroErro); throw new ActionServletException( "atencao.dependencias.adionar_predecessora", null, cobrancaAcao .getDescricaoCobrancaAcao()); } else { throw new ActionServletException( "atencao.dependencias.adionar_predecessora"); } } } if (cobrancaAcaoEscolhida.getIndicadorObrigatoriedade() .intValue() == 1) { while (iteratorAtividades.hasNext()) { contadorAtividades += 1; cobrancaAtividade = (CobrancaAtividade) iteratorAtividades .next(); // --------pega o valor de comandar.Ex: comandar2 idAcaoCobranca = (String) httpServletRequest .getParameter("comandar" + cobrancaAcaoEscolhida.getId() .toString() + "atividade" + cobrancaAtividade.getId().toString()); // -------- separa o id da string comandar dataPrevista = ""; dataPrevista = (String) httpServletRequest .getParameter("a" + cobrancaAcaoEscolhida.getId() .toString() + "n" + cobrancaAtividade.getId().toString()); if (dataPrevista.trim().equals("") && cobrancaAtividade .getIndicadorObrigatoriedade() == 1) { throw new ActionServletException( "atencao.cobranca.data_prevista_acao_obrigatoria"); } else { // ----seta os valores no objeto // CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = new CobrancaAcaoAtividadeCronograma(); cobrancaAcaoAtividadeCronograma .setCobrancaAtividade(cobrancaAtividade); cobrancaAcaoAtividadeCronograma .setCobrancaAcaoCronograma(cobrancaAcaoCronogramaNovo); cobrancaAcaoAtividadeCronograma .setDataPrevista(Util .converteStringParaDate(dataPrevista)); if (idAcaoCobranca != null && idAcaoCobranca.trim().equals("1")) { cobrancaAcaoAtividadeCronograma .setComando(Util .converteStringParaDateHora(dataPrevista + " " + Util .formatarHoraSemData(new Date()))); } else { cobrancaAcaoAtividadeCronograma .setComando(null); } cobrancasAtividadesParaInsercao .add(cobrancaAcaoAtividadeCronograma); } } cobrancaCronogramaHelper .setCobrancasAtividadesParaInsercao(cobrancasAtividadesParaInsercao); /** * */ colecaoCobrancaHelperNaBase.add(cobrancaCronogramaHelper); } else { verificaDataPreenchida = 0; while (iteratorAtividades.hasNext()) { contadorAtividades += 1; cobrancaAtividade = (CobrancaAtividade) iteratorAtividades .next(); // --------pega o valor de comandar.Ex: comandar2 idAcaoCobranca = (String) httpServletRequest .getParameter("comandar" + cobrancaAcaoEscolhida.getId() .toString() + "atividade" + cobrancaAtividade.getId().toString()); // -------- separa o id da string comandar dataPrevista = ""; dataPrevista = (String) httpServletRequest .getParameter("a" + cobrancaAcaoEscolhida.getId() .toString() + "n" + cobrancaAtividade.getId().toString()); cobrancaAcaoAtividadeCronograma = new CobrancaAcaoAtividadeCronograma(); cobrancaAcaoAtividadeCronograma .setCobrancaAtividade(cobrancaAtividade); cobrancaAcaoAtividadeCronograma .setCobrancaAcaoCronograma(cobrancaAcaoCronogramaNovo); if (!dataPrevista.trim().equals("") || cobrancaAtividade .getIndicadorObrigatoriedade() .equals( CobrancaAtividade.INDICADOR_OBRIGATORIEDADE_ATIVO)) { verificaDataPreenchida += 1; // ----seta os valores no objeto // CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma .setDataPrevista(Util .converteStringParaDate(dataPrevista)); if (idAcaoCobranca != null && idAcaoCobranca.trim().equals("1")) { cobrancaAcaoAtividadeCronograma .setComando(Util .converteStringParaDateHora(dataPrevista + " " + Util .formatarHoraSemData(new Date()))); } else { cobrancaAcaoAtividadeCronograma .setComando(null); } } else { cobrancaAcaoAtividadeCronograma .setDataPrevista(null); cobrancaAcaoAtividadeCronograma.setComando(null); } cobrancasAtividadesParaInsercao .add(cobrancaAcaoAtividadeCronograma); } /** * Caso o usuario informe a data prevista somente para * algumas atividades da acao, exibir a mensagem "� * necess�rio informar a data prevista para todas as * atividades da a��o." */ if ((verificaDataPreenchida > 0) && (verificaDataPreenchida < atividadesCobrancaObrigatoriedadeAtivo .size())) { throw new ActionServletException( "atencao.cobranca.data_prevista_algumas_atividades"); } cobrancaCronogramaHelper .setCobrancasAtividadesParaInsercao(cobrancasAtividadesParaInsercao); /** * */ colecaoCobrancaHelperNaBase.add(cobrancaCronogramaHelper); } sessao.removeAttribute("colecaoCobrancaCronogramaHelper"); // Organizar a cole��o Collections.sort((List) colecaoCobrancaHelperNaBase, new Comparator() { public int compare(Object a, Object b) { Short posicao1 = ((CobrancaCronogramaHelper) a) .getCobrancaAcaoCronograma() .getCobrancaAcao().getOrdemRealizacao(); Short posicao2 = ((CobrancaCronogramaHelper) b) .getCobrancaAcaoCronograma() .getCobrancaAcao().getOrdemRealizacao(); return posicao1.compareTo(posicao2); } }); sessao.setAttribute("colecaoCobrancaCronogramaHelper", colecaoCobrancaHelperNaBase); } } if (httpServletRequest.getParameter("adicionar") != null) { sessao.removeAttribute("cobrancaAcaoEscolhida"); } sessao.setAttribute("colecaoCobrancaAcaoNovo", colecaoAcaoCobrancaNovo); return retorno; } }