package gcom.gui.faturamento; import gcom.fachada.Fachada; import gcom.faturamento.FaturamentoAtivCronRota; import gcom.faturamento.FaturamentoAtivCronRotaPK; import gcom.faturamento.FaturamentoAtividadeCronograma; import gcom.faturamento.FiltroFaturamentoAtivCronRota; import gcom.gui.GcomAction; import gcom.micromedicao.Rota; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.text.ParseException; import java.text.SimpleDateFormat; 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 java.util.Vector; 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 ExibirAtualizarComandoAtividadeFaturamentoDataVencimentoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("atualizarComandoAtividadeFaturamentoDataVencimento"); // Carrega a instancia da fachada Fachada fachada = Fachada.getInstancia(); // Carrega o objeto sessao HttpSession sessao = httpServletRequest.getSession(false); // Inst�ncia do formul�rio que est� sendo utilizado InserirComandoAtividadeFaturamentoActionForm inserirComandoAtividadeFaturamentoActionForm = (InserirComandoAtividadeFaturamentoActionForm) actionForm; Collection colecaoFaturamentoAtividadeCronogramaRota = new Vector(); Collection colecaoRotasSelecionadasUsuario = new Vector(); Collection colecaoFaturamentoAtividadeCronogramaRotaSelecionadasUsuario = new ArrayList(); Collection colecaoFaturamentoAtividadeCronogramaRotaUniao = new ArrayList(); // Faturamento Atividade Cronograma selecionado FaturamentoAtividadeCronograma faturamentoAtividadeCronograma = (FaturamentoAtividadeCronograma) sessao .getAttribute("faturamentoAtividadeCronograma"); SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); // Calendar dataVencimentoGrupoBase = null; String dataVencimentoGrupoBaseComparar = null; String dataVencimentoGrupoJSP = null; Date dataVencimentoGrupoJSPObjeto = null; if (sessao.getAttribute("exibirCampoVencimentoGrupo") != null) { /* * dataVencimentoGrupoBase = (Calendar) sessao * .getAttribute("exibirCampoVencimentoGrupo"); */ dataVencimentoGrupoBaseComparar = (String) sessao .getAttribute("exibirCampoVencimentoGrupo"); dataVencimentoGrupoJSP = inserirComandoAtividadeFaturamentoActionForm .getVencimentoGrupo(); try { dataVencimentoGrupoJSPObjeto = formatoData .parse(dataVencimentoGrupoJSP); } catch (ParseException ex) { dataVencimentoGrupoJSPObjeto = null; } httpServletRequest.setAttribute("dataVencimentoGrupoFormulario", dataVencimentoGrupoJSP); } // Gera uma cole��o de rotas a partir da cole��o // colecaoFaturamentoAtividadeCronogramaRota // [SB0004] Determinar Data de Vencimento para Rota // Rotas selecionadas no processo 01 if (sessao.getAttribute("colecaoFaturamentoAtividadeCronogramaRota") != null) { colecaoFaturamentoAtividadeCronogramaRota = (Collection) sessao .getAttribute("colecaoFaturamentoAtividadeCronogramaRota"); // Verifica se a data de vencimento do grupo foi alterada if (sessao.getAttribute("exibirCampoVencimentoGrupo") != null) { Iterator colecaoFaturamentoAtividadeCronogramaRotaIterator = colecaoFaturamentoAtividadeCronogramaRota .iterator(); if (!dataVencimentoGrupoJSP .equalsIgnoreCase(dataVencimentoGrupoBaseComparar)) { // A data de vencimento da rota ser� a data de vencimento do // grupo while (colecaoFaturamentoAtividadeCronogramaRotaIterator .hasNext()) { FaturamentoAtivCronRota faturamentoAtividadeCronogramaRota = (FaturamentoAtivCronRota) colecaoFaturamentoAtividadeCronogramaRotaIterator .next(); faturamentoAtividadeCronogramaRota .setDataContaVencimento(dataVencimentoGrupoJSPObjeto); } } else { FiltroFaturamentoAtivCronRota filtroFaturamentoAtivCronRota = new FiltroFaturamentoAtivCronRota(); filtroFaturamentoAtivCronRota .setCampoOrderBy( FiltroFaturamentoAtivCronRota.FATURAMENTO_GRUPO_ID, FiltroFaturamentoAtivCronRota.GERENCIA_REGIONAL_NOME_ABREVIADO, FiltroFaturamentoAtivCronRota.LOCALIDADE_DESCRICAO, FiltroFaturamentoAtivCronRota.SETOR_COMERCIAL_CODIGO, FiltroFaturamentoAtivCronRota.COMP_ID_ROTA_ID); filtroFaturamentoAtivCronRota.adicionarCaminhoParaCarregamentoEntidade(FiltroFaturamentoAtivCronRota.UNIDADE_NEGOCIO); Collection colecaoDataRota = null; FaturamentoAtivCronRota faturamentoAtivCronRota = new FaturamentoAtivCronRota(); // A data de vencimento para a rota ser� a da rota grupo while (colecaoFaturamentoAtividadeCronogramaRotaIterator .hasNext()) { FaturamentoAtivCronRota faturamentoAtividadeCronogramaRota = (FaturamentoAtivCronRota) colecaoFaturamentoAtividadeCronogramaRotaIterator .next(); filtroFaturamentoAtivCronRota .adicionarParametro(new ParametroSimples( FiltroFaturamentoAtivCronRota.COMP_ID_FATURAMENTO_ATIVIDADE_CRONOGRAMA_ID, faturamentoAtividadeCronogramaRota .getFaturamentoAtividadeCronograma() .getId())); filtroFaturamentoAtivCronRota .adicionarParametro(new ParametroSimples( FiltroFaturamentoAtivCronRota.COMP_ID_ROTA_ID, faturamentoAtividadeCronogramaRota .getRota().getId())); colecaoDataRota = fachada.pesquisar( filtroFaturamentoAtivCronRota, FaturamentoAtivCronRota.class.getName()); faturamentoAtivCronRota = (FaturamentoAtivCronRota) Util .retonarObjetoDeColecao(colecaoDataRota); filtroFaturamentoAtivCronRota.limparListaParametros(); if (faturamentoAtivCronRota.getDataContaVencimento() != null) { faturamentoAtividadeCronogramaRota .setDataContaVencimento(faturamentoAtivCronRota .getDataContaVencimento()); } else { faturamentoAtividadeCronogramaRota .setDataContaVencimento(dataVencimentoGrupoJSPObjeto); } } } } } // Cole��o de rotas selecionada pelo usu�rio if (sessao.getAttribute("colecaoRotasSelecionadasUsuario") != null) { colecaoRotasSelecionadasUsuario = (Collection) sessao .getAttribute("colecaoRotasSelecionadasUsuario"); if (!colecaoRotasSelecionadasUsuario.isEmpty()) { Iterator colecaoRotasSelecionadasUsuarioIterator = colecaoRotasSelecionadasUsuario .iterator(); Rota rota; FaturamentoAtivCronRotaPK faturamentoAtividadeCronogramaRotaPK; FaturamentoAtivCronRota faturamentoAtividadeCronogramaRota; while (colecaoRotasSelecionadasUsuarioIterator.hasNext()) { rota = (Rota) colecaoRotasSelecionadasUsuarioIterator.next(); faturamentoAtividadeCronogramaRotaPK = new FaturamentoAtivCronRotaPK(); faturamentoAtividadeCronogramaRotaPK .setFaturamentoAtividadeCronogramaId(faturamentoAtividadeCronograma .getId()); faturamentoAtividadeCronogramaRotaPK .setRotaId(rota.getId()); faturamentoAtividadeCronogramaRota = new FaturamentoAtivCronRota(); faturamentoAtividadeCronogramaRota .setComp_id(faturamentoAtividadeCronogramaRotaPK); faturamentoAtividadeCronogramaRota .setFaturamentoAtividadeCronograma(faturamentoAtividadeCronograma); faturamentoAtividadeCronogramaRota.setRota(rota); if (sessao.getAttribute("exibirCampoVencimentoGrupo") != null) { faturamentoAtividadeCronogramaRota .setDataContaVencimento(dataVencimentoGrupoJSPObjeto); } colecaoFaturamentoAtividadeCronogramaRotaSelecionadasUsuario .add(faturamentoAtividadeCronogramaRota); } } } // Uni�o das cole��es geradas nos processos 1 e 2 (Verifica exist�ncia // de registros repetidos). FaturamentoAtivCronRota faturamentoAtividadeCronogramaRota; Iterator colecaoRegistroAtual = colecaoFaturamentoAtividadeCronogramaRota .iterator(); Iterator colecaoRegistroSelecaoUsuario = colecaoFaturamentoAtividadeCronogramaRotaSelecionadasUsuario .iterator(); while (colecaoRegistroAtual.hasNext()) { faturamentoAtividadeCronogramaRota = (FaturamentoAtivCronRota) colecaoRegistroAtual .next(); if (!colecaoFaturamentoAtividadeCronogramaRotaUniao .contains(faturamentoAtividadeCronogramaRota)) { colecaoFaturamentoAtividadeCronogramaRotaUniao .add(faturamentoAtividadeCronogramaRota); } } while (colecaoRegistroSelecaoUsuario.hasNext()) { faturamentoAtividadeCronogramaRota = (FaturamentoAtivCronRota) colecaoRegistroSelecaoUsuario .next(); if (!colecaoFaturamentoAtividadeCronogramaRotaUniao .contains(faturamentoAtividadeCronogramaRota)) { colecaoFaturamentoAtividadeCronogramaRotaUniao .add(faturamentoAtividadeCronogramaRota); } } Collections.sort((List) colecaoFaturamentoAtividadeCronogramaRotaUniao, new Comparator() { public int compare(Object a, Object b) { String posicao1 = ((FaturamentoAtivCronRota) a) .getRota().getFaturamentoGrupo().getId().toString() + ((FaturamentoAtivCronRota) a) .getRota().getSetorComercial() .getLocalidade().getGerenciaRegional() .getNomeAbreviado() + ((FaturamentoAtivCronRota) a) .getRota().getSetorComercial() .getLocalidade().getDescricao() + ((FaturamentoAtivCronRota) a) .getRota().getSetorComercial().getCodigo() + ((FaturamentoAtivCronRota) a) .getRota().getId(); String posicao2 = ((FaturamentoAtivCronRota) b) .getRota().getFaturamentoGrupo().getId().toString() + ((FaturamentoAtivCronRota) b) .getRota().getSetorComercial() .getLocalidade().getGerenciaRegional() .getNomeAbreviado() + ((FaturamentoAtivCronRota) b) .getRota().getSetorComercial() .getLocalidade().getDescricao() + ((FaturamentoAtivCronRota) b) .getRota().getSetorComercial().getCodigo() + ((FaturamentoAtivCronRota) b) .getRota().getId(); return posicao1.compareTo(posicao2); } }); sessao.setAttribute("colecaoFaturamentoAtividadeCronogramaRotaUniao", colecaoFaturamentoAtividadeCronogramaRotaUniao); return retorno; } }