package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.FiltroUnidadeRepavimentadoraCustoPavimentoCalcada; import gcom.atendimentopublico.ordemservico.FiltroUnidadeRepavimentadoraCustoPavimentoRua; import gcom.cadastro.unidade.UnidadeRepavimentadoraCustoPavimentoCalcada; import gcom.cadastro.unidade.UnidadeRepavimentadoraCustoPavimentoRua; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.Collection; 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; /** * [UC1106] Inserir Custo de Pavimento por Repavimentadora * * @author Hugo Leonardo * @date 21/12/2010 */ public class InserirCustoPavimentoPorRepavimentadoraAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO); ExibirInserirCustoPavimentoPorRepavimentadoraActionForm form = (ExibirInserirCustoPavimentoPorRepavimentadoraActionForm) actionForm; List colecaoUnidadeRepavimentadoraCustoPavimentoRua = (List) sessao.getAttribute("colecaoUnidadeRepavimentadoraCustoPavimentoRua"); List colecaoUnidadeRepavimentadoraCustoPavimentoCalcada = (List) sessao.getAttribute("colecaoUnidadeRepavimentadoraCustoPavimentoCalcada"); UnidadeRepavimentadoraCustoPavimentoRua unidadeRepavimentadoraCustoPavimentoRua = null; UnidadeRepavimentadoraCustoPavimentoCalcada unidadeRepavimentadoraCustoPavimentoCalcada = null; if(!Util.verificarNaoVazio(form.getIdUnidadeRepavimentadora())){ throw new ActionServletException("atencao.unidade_repavimentadora_nao_informada"); } if( (colecaoUnidadeRepavimentadoraCustoPavimentoRua == null || (colecaoUnidadeRepavimentadoraCustoPavimentoRua.size() == 0)) && (colecaoUnidadeRepavimentadoraCustoPavimentoCalcada == null || (colecaoUnidadeRepavimentadoraCustoPavimentoCalcada.size() == 0)) ){ throw new ActionServletException("atencao.informe.custo_pavimento_por_repavimentadora"); } Iterator iterator = null; // Inserir Custo Pavimento Rua if(colecaoUnidadeRepavimentadoraCustoPavimentoRua != null && (colecaoUnidadeRepavimentadoraCustoPavimentoRua.size() > 0)){ iterator = colecaoUnidadeRepavimentadoraCustoPavimentoRua.iterator(); while (iterator.hasNext()) { unidadeRepavimentadoraCustoPavimentoRua = (UnidadeRepavimentadoraCustoPavimentoRua) iterator.next(); // [SB0001] Verificar exist�ncia de custo de pavimento de rua vigente FiltroUnidadeRepavimentadoraCustoPavimentoRua filtroCustoPavimentoRua = new FiltroUnidadeRepavimentadoraCustoPavimentoRua(); filtroCustoPavimentoRua.adicionarParametro(new ParametroSimples( FiltroUnidadeRepavimentadoraCustoPavimentoRua.UNIDADE_REPAVIMENTADORA_ID, form.getIdUnidadeRepavimentadora())); Collection<UnidadeRepavimentadoraCustoPavimentoRua> colecaoCustoPavimentoRua = Fachada.getInstancia().pesquisar( filtroCustoPavimentoRua, UnidadeRepavimentadoraCustoPavimentoRua.class.getName()); if(!Util.isVazioOrNulo(colecaoCustoPavimentoRua)){ UnidadeRepavimentadoraCustoPavimentoRua unidRepPavRua = null; Iterator it = colecaoCustoPavimentoRua.iterator(); while(it.hasNext()){ unidRepPavRua = (UnidadeRepavimentadoraCustoPavimentoRua) it.next(); if(unidRepPavRua.getPavimentoRua().getId().equals(unidadeRepavimentadoraCustoPavimentoRua.getPavimentoRua().getId()) && Util.compararData(unidRepPavRua.getDataVigenciaInicial(), unidadeRepavimentadoraCustoPavimentoRua.getDataVigenciaInicial()) == -1 && unidRepPavRua.getDataVigenciaFinal() == null){ unidRepPavRua.setDataVigenciaFinal(Util.formatarDataFinal( Util.subtrairNumeroDiasDeUmaData(unidadeRepavimentadoraCustoPavimentoRua.getDataVigenciaInicial(), 1)) ); unidRepPavRua.setUltimaAlteracao(new Date()); fachada.atualizar(unidRepPavRua); } } } // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_INSERIR_CUSTO_PAVIMENTO, unidadeRepavimentadoraCustoPavimentoRua.getId(), unidadeRepavimentadoraCustoPavimentoRua.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(unidadeRepavimentadoraCustoPavimentoRua); fachada.inserir(unidadeRepavimentadoraCustoPavimentoRua); } } // Inserir Custo Pavimento Calcada if(colecaoUnidadeRepavimentadoraCustoPavimentoCalcada != null && (colecaoUnidadeRepavimentadoraCustoPavimentoCalcada.size() > 0)){ iterator = colecaoUnidadeRepavimentadoraCustoPavimentoCalcada.iterator(); while (iterator.hasNext()) { unidadeRepavimentadoraCustoPavimentoCalcada = (UnidadeRepavimentadoraCustoPavimentoCalcada) iterator.next(); // [SB0002] Verificar exist�ncia de custo de pavimento de cal�ada vigente. FiltroUnidadeRepavimentadoraCustoPavimentoCalcada filtroCustoPavimentoCalcada = new FiltroUnidadeRepavimentadoraCustoPavimentoCalcada(); filtroCustoPavimentoCalcada.adicionarParametro(new ParametroSimples( FiltroUnidadeRepavimentadoraCustoPavimentoCalcada.UNIDADE_REPAVIMENTADORA_ID, form.getIdUnidadeRepavimentadora())); Collection<UnidadeRepavimentadoraCustoPavimentoCalcada> colecaoCustoPavimentoCalcada = Fachada.getInstancia().pesquisar( filtroCustoPavimentoCalcada, UnidadeRepavimentadoraCustoPavimentoCalcada.class.getName()); if(!Util.isVazioOrNulo(colecaoCustoPavimentoCalcada)){ UnidadeRepavimentadoraCustoPavimentoCalcada unidRepPavCalcada = null; Iterator it = colecaoCustoPavimentoCalcada.iterator(); while(it.hasNext()){ unidRepPavCalcada = (UnidadeRepavimentadoraCustoPavimentoCalcada) it.next(); if(unidRepPavCalcada.getPavimentoCalcada().getId().equals(unidadeRepavimentadoraCustoPavimentoCalcada.getPavimentoCalcada().getId()) && Util.compararData(unidRepPavCalcada.getDataVigenciaInicial(), unidadeRepavimentadoraCustoPavimentoCalcada.getDataVigenciaInicial()) == -1 && unidRepPavCalcada.getDataVigenciaFinal() == null){ unidRepPavCalcada.setDataVigenciaFinal(Util.formatarDataFinal( Util.subtrairNumeroDiasDeUmaData(unidadeRepavimentadoraCustoPavimentoCalcada.getDataVigenciaInicial(), 1)) ); unidRepPavCalcada.setUltimaAlteracao(new Date()); fachada.atualizar(unidRepPavCalcada); } } } fachada.inserir(unidadeRepavimentadoraCustoPavimentoCalcada); } } // Monta a p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Custo do pavimento por repavimentadora inserido com sucesso ", "Inserir outro Custo do pavimento por repavimentadora", "exibirInserirCustoPavimentoPorRepavimentadoraAction.do?menu=sim"); sessao.removeAttribute("colecaoUnidadeRepavimentadoraCustoPavimentoRua"); sessao.removeAttribute("colecaoUnidadeRepavimentadoraCustoPavimentoCalcada"); sessao.removeAttribute("colecaoUnidadeRepavimentadora"); sessao.removeAttribute("colecaoPavimentoRua"); sessao.removeAttribute("colecaoPavimentoCalcada"); return retorno; } }