package gcom.gui.micromedicao; import gcom.cobranca.CobrancaAcao; import gcom.cobranca.CobrancaCriterio; import gcom.cobranca.CobrancaGrupo; import gcom.cobranca.FiltroCobrancaAcao; import gcom.cobranca.FiltroCobrancaCriterio; import gcom.cobranca.RotaAcaoCriterio; 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 java.util.ArrayList; import java.util.Collection; import java.util.Iterator; 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; /** * Action form de Adicionar Crit�rio de Cobran�a da Rota * * @author Vivianne Sousa * @created 25/04/06 */ public class AdicionarCriterioCobrancaRotaAction extends GcomAction { /** * Este caso de uso permite a inclus�o de um Crit�rio de Cobran�a da Rota * * [UC0038] Inserir Rota * @author Vivianne Sousa * @date 25/04/2006 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("inserirCriterioCobrancaRota"); AdicionarCriterioCobrancaRotaActionForm adicionarCriterioCobrancaRotaActionForm = (AdicionarCriterioCobrancaRotaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); //obtendo uma instancia da sessao HttpSession sessao = httpServletRequest.getSession(false); String idCobrancaAcao = adicionarCriterioCobrancaRotaActionForm.getCobrancaAcao(); String idCobrancaCriterio = adicionarCriterioCobrancaRotaActionForm.getIdCobrancaCriterio(); Collection collectionRotaAcaoCriterio = null; if (sessao.getAttribute("collectionRotaAcaoCriterio") != null) { collectionRotaAcaoCriterio = (Collection) sessao .getAttribute("collectionRotaAcaoCriterio"); } else { collectionRotaAcaoCriterio = new ArrayList(); } validacaoFinal(collectionRotaAcaoCriterio,idCobrancaAcao,idCobrancaCriterio,fachada); //inst�ncia uma rotaAcaoCriterioNova/ RotaAcaoCriterio rotaAcaoCriterioNova = new RotaAcaoCriterio(); // testa se a a��o de cobran�a ja foi selecionada if (idCobrancaAcao != null && !idCobrancaAcao.equalsIgnoreCase("")) { FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples (FiltroCobrancaAcao.ID,idCobrancaAcao)); Collection<CobrancaAcao> collectionCobrancaAcao = fachada.pesquisar( filtroCobrancaAcao, CobrancaAcao.class.getName()); CobrancaAcao cobrancaAcao = (CobrancaAcao)Util.retonarObjetoDeColecao(collectionCobrancaAcao); //cobrancaAcao.setId(new Integer(idCobrancaAcao)); rotaAcaoCriterioNova.setCobrancaAcao(cobrancaAcao); } // testa se o crit�rio de cobran�a ja foi pesquisado if (idCobrancaCriterio != null && !idCobrancaCriterio.equalsIgnoreCase("")) { FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples (FiltroCobrancaCriterio.ID,idCobrancaCriterio)); Collection<CobrancaCriterio> collectionCobrancaCriterio = fachada.pesquisar( filtroCobrancaCriterio, CobrancaCriterio.class.getName()); CobrancaCriterio cobrancaCriterio = (CobrancaCriterio)Util.retonarObjetoDeColecao(collectionCobrancaCriterio); rotaAcaoCriterioNova.setCobrancaCriterio(cobrancaCriterio); } collectionRotaAcaoCriterio.add(rotaAcaoCriterioNova); //c�digo p verificar se j� foram adicionadas todos os crit�rios de cobran�a da rota //se ainda falta adicionar HABILITA o bot�o adicionar //sen� DESABILITA o bot�o adicionar FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); Collection<CobrancaGrupo> collectionCobrancaAcao = fachada.pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (collectionRotaAcaoCriterio.size() != collectionCobrancaAcao.size()){ httpServletRequest.setAttribute("adicionar","habilitado"); }else{ httpServletRequest.setAttribute("adicionar","desabilitado"); } //manda para a sess�o a cole��o de RotaAcaoCriterio sessao.setAttribute("collectionRotaAcaoCriterio", collectionRotaAcaoCriterio); httpServletRequest.setAttribute("reloadPage", "OK"); //Definindo o caso de uso que receber� o retorno if (sessao.getAttribute("UseCase").equals("INSERIRROTA")){ httpServletRequest.setAttribute("reloadPageURL", "INSERIRROTA"); } else if (sessao.getAttribute("UseCase").equals("ATUALIZARROTA")) { httpServletRequest.setAttribute("reloadPageURL", "ATUALIZARROTA"); } sessao.removeAttribute("adicionarCriterioCobrancaRotaActionForm"); sessao.removeAttribute("idCobrancaAcao"); return retorno; } private void validacaoFinal (Collection collectionRotaAcaoCriterio, String idCobrancaAcao,String idCobrancaCriterio, Fachada fachada){ // a��o de cobran�a � obrigat�rio. if ((idCobrancaAcao == null) || (idCobrancaAcao.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))) { throw new ActionServletException( "atencao.acao_cobranca_nao_informado"); } // crit�rio de cobran�a � obrigat�rio. if (idCobrancaCriterio == null || idCobrancaCriterio.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.criterio_cobranca_nao_informado"); } verificaExistenciaCodCobrancaCriterio( idCobrancaCriterio, fachada); // testa se a a��o de cobran�a ja foi selecionada if (idCobrancaAcao != null && !idCobrancaAcao.equalsIgnoreCase("")) { //[FS0009]verifica a��o de cobran�a ja existente if (collectionRotaAcaoCriterio != null && !collectionRotaAcaoCriterio.isEmpty()){ RotaAcaoCriterio rotaAcaoCriterio = null; Iterator iterator = collectionRotaAcaoCriterio.iterator(); while (iterator.hasNext()) { rotaAcaoCriterio = (RotaAcaoCriterio) iterator.next(); if (rotaAcaoCriterio.getCobrancaAcao().getId().equals(new Integer(idCobrancaAcao))){ //Esta A��o de Cobran�a ja foi informada throw new ActionServletException( "atencao.acao_cobranca.ja_informada"); } } } } } private void verificaExistenciaCodCobrancaCriterio(String idDigitadoEnterCobrancaCriterio, Fachada fachada) { //Verifica se o c�digo da CobrancaCriterio foi digitado if (idDigitadoEnterCobrancaCriterio != null && !idDigitadoEnterCobrancaCriterio.trim().equals("") && Integer.parseInt(idDigitadoEnterCobrancaCriterio) > 0) { //Recupera a CobrancaCriterio informada pelo usu�rio FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples( FiltroCobrancaCriterio.ID, new Integer( idDigitadoEnterCobrancaCriterio))); Collection<CobrancaCriterio> cobrancaCriterios = fachada.pesquisar( filtroCobrancaCriterio, CobrancaCriterio.class.getName()); if (cobrancaCriterios == null || cobrancaCriterios.isEmpty()) { //Crit�rio de Cobran�a inexistente. throw new ActionServletException( "atencao.pesquisa_inexistente", null, "Crit�rio de Cobran�a"); } } } }