package gcom.gui.cobranca.parcelamento; import gcom.cobranca.parcelamento.ParcelamentoFaixaValor; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.Util; import java.math.BigDecimal; 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 AdicionarPercentualFaixaValorPopupAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("inserirPrestacoesParcelamentoPerfilPercentualFaixaValorPopup"); //Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); //Inst�ncia do formul�rio que est� sendo utilizado InserirPrestacoesParcelamentoPerfilActionForm inserirPrestacoesParcelamentoPerfilActionForm = (InserirPrestacoesParcelamentoPerfilActionForm) actionForm; //Par�metros recebidos para adicionar um Percentual Por Faixa de Valor String valorMaximo = inserirPrestacoesParcelamentoPerfilActionForm.getValorMaxPercFaixaValor(); String percentual = inserirPrestacoesParcelamentoPerfilActionForm.getPercentualPercFaixaValor(); Collection collectionParcelamentoFaixaValor = null; ParcelamentoFaixaValor parcelamentoFaixaValor = new ParcelamentoFaixaValor(); if (sessao.getAttribute("collectionParcelamentoFaixaValor") != null) { collectionParcelamentoFaixaValor = (Collection) sessao .getAttribute("collectionParcelamentoFaixaValor"); } else { collectionParcelamentoFaixaValor = new ArrayList(); } //Valida��o dos campos recebidos if (valorMaximo == null || valorMaximo.equalsIgnoreCase("")){ throw new ActionServletException( "atencao.campo_texto.obrigatorio", null, "Valor M�ximo"); } parcelamentoFaixaValor.setValorFaixa(Util.formatarMoedaRealparaBigDecimal(valorMaximo)); if (percentual == null || percentual.equalsIgnoreCase("")){ throw new ActionServletException( "atencao.campo_texto.obrigatorio", null, "Percentual"); } if (collectionParcelamentoFaixaValor != null && !collectionParcelamentoFaixaValor.isEmpty()){ // se cole��o n�o estiver vazia // verificar se Valor M�ximo ja foi informada ParcelamentoFaixaValor parcelamentoFaixaValorAntigo = null; Iterator iterator = collectionParcelamentoFaixaValor.iterator(); while (iterator.hasNext()) { parcelamentoFaixaValorAntigo = (ParcelamentoFaixaValor) iterator.next(); if ((Util.formatarMoedaRealparaBigDecimal(valorMaximo)).equals (parcelamentoFaixaValorAntigo.getValorFaixa())){ //Limpa o formul�rio que adiciona Percentual Por Faixa de Valor inserirPrestacoesParcelamentoPerfilActionForm.setValorMaxPercFaixaValor(""); inserirPrestacoesParcelamentoPerfilActionForm.setPercentualPercFaixaValor(""); // Valor M�ximo j� informado. throw new ActionServletException( "atencao.valor_maximo_ja_informado"); } } } parcelamentoFaixaValor.setPercentualFaixa(Util.formatarMoedaRealparaBigDecimal(percentual)); parcelamentoFaixaValor.setUltimaAlteracao(new Date()); collectionParcelamentoFaixaValor.add(parcelamentoFaixaValor); //Ordena a cole��o pelo valor m�ximo Collections.sort((List) collectionParcelamentoFaixaValor, new Comparator() { public int compare(Object a, Object b) { BigDecimal valorMax1 = new BigDecimal(((ParcelamentoFaixaValor) a).getValorFaixa().toString()) ; BigDecimal valorMax2 = new BigDecimal(((ParcelamentoFaixaValor) b).getValorFaixa().toString()) ; return valorMax1.compareTo(valorMax2); } }); sessao.setAttribute("collectionParcelamentoFaixaValor",collectionParcelamentoFaixaValor); if (collectionParcelamentoFaixaValor == null || collectionParcelamentoFaixaValor.size() == 0){ sessao.setAttribute("collectionParcelamentoFaixaValorVazia","1"); }else{ sessao.setAttribute("collectionParcelamentoFaixaValorVazia","2"); } //Limpa o formul�rio que adiciona Percentual Por Faixa de Valor inserirPrestacoesParcelamentoPerfilActionForm.setValorMaxPercFaixaValor(""); inserirPrestacoesParcelamentoPerfilActionForm.setPercentualPercFaixaValor(""); return retorno; } }