package gcom.gui.micromedicao;
import gcom.cobranca.CobrancaAcao;
import gcom.cobranca.CobrancaCriterio;
import gcom.cobranca.FiltroCobrancaAcao;
import gcom.cobranca.FiltroCobrancaCriterio;
import gcom.cobranca.RotaAcaoCriterio;
import gcom.fachada.Fachada;
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.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;
/**
*
* Action de exibir adicionar crit�rio de cobran�a da rota
*
* @author Vivianne Sousa
* @created 25/04/2006
*/
public class ExibirAdicionarCriterioCobrancaRotaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
HttpSession sessao = httpServletRequest.getSession(false);
// Inicializando Variaveis
ActionForward retorno = actionMapping
.findForward("adicionarCriterioCobrancaRota");
Fachada fachada = Fachada.getInstancia();
AdicionarCriterioCobrancaRotaActionForm adicionarCriterioCobrancaRotaActionForm = (AdicionarCriterioCobrancaRotaActionForm) actionForm;
//Pesquisando grupo de cobran�a
FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao();
filtroCobrancaAcao.adicionarParametro(new ParametroSimples(
FiltroCobrancaAcao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<CobrancaAcao> collectionCobrancaAcao = fachada.pesquisar(
filtroCobrancaAcao, CobrancaAcao.class.getName());
//Cole��o de A��o Crit�rios j� escolhido na se��o
Collection<RotaAcaoCriterio> collectionRotaAcaoCriterio = null;
if (sessao.getAttribute("collectionRotaAcaoCriterio") != null) {
collectionRotaAcaoCriterio = (Collection) sessao
.getAttribute("collectionRotaAcaoCriterio");
} else {
collectionRotaAcaoCriterio = new ArrayList<RotaAcaoCriterio>();
}
List<CobrancaAcao> acoesParaRemover = new ArrayList<CobrancaAcao>();
//Remove dos criterios da pesquisa os ja escolhidos que est�o na colecao da sessao
for (CobrancaAcao acao : collectionCobrancaAcao) {
for (RotaAcaoCriterio criterio : collectionRotaAcaoCriterio) {
if (criterio.getCobrancaAcao().getId().equals(acao.getId())) {
acoesParaRemover.add(acao);
break;
}
}
}
collectionCobrancaAcao.removeAll(acoesParaRemover);
sessao.setAttribute("collectionCobrancaAcao", collectionCobrancaAcao);
// Fim de pesquisando grupo de cobran�a/
if (sessao.getAttribute("idCobrancaAcao") != null && !sessao.getAttribute("idCobrancaAcao").equals("")){
adicionarCriterioCobrancaRotaActionForm.setCobrancaAcao((String)sessao.getAttribute("idCobrancaAcao"));
}
if (httpServletRequest.getParameter("desfazer") != null
&& httpServletRequest.getParameter("desfazer")
.equalsIgnoreCase("S")) {
// limpar tela
adicionarCriterioCobrancaRotaActionForm.setCobrancaAcao(""
+ ConstantesSistema.NUMERO_NAO_INFORMADO);
adicionarCriterioCobrancaRotaActionForm.setIdCobrancaCriterio("");
adicionarCriterioCobrancaRotaActionForm
.setDescricaoCobrancaCriterio("");
}
// -------Parte que trata do c�digo quando o usu�rio tecla enter
if (adicionarCriterioCobrancaRotaActionForm != null){
String idDigitadoEnterCobrancaCriterio = adicionarCriterioCobrancaRotaActionForm.getIdCobrancaCriterio();
verificaExistenciaCodCobrancaCriterio(idDigitadoEnterCobrancaCriterio,
adicionarCriterioCobrancaRotaActionForm, httpServletRequest,
fachada);
}
// -------Fim de parte que trata do c�digo quando o usu�rio tecla enter
sessao.removeAttribute("caminhoRetornoTelaPesquisa");
if (httpServletRequest.getParameter("tipoConsulta") != null
&& !httpServletRequest.getParameter("tipoConsulta").equals("")) {
// se for os parametros de enviarDadosParametros ser�o mandados para
// a pagina criterio_cobranca_rota_adicionar_popup.jsp
adicionarCriterioCobrancaRotaActionForm
.setIdCobrancaCriterio(httpServletRequest
.getParameter("idCampoEnviarDados"));
adicionarCriterioCobrancaRotaActionForm
.setDescricaoCobrancaCriterio(httpServletRequest
.getParameter("descricaoCampoEnviarDados"));
//sessao.setAttribute("AdicionarCriterioCobrancaRotaActionForm",adicionarCriterioCobrancaRotaActionForm);
}
return retorno;
}
private void verificaExistenciaCodCobrancaCriterio(
String idDigitadoEnterCobrancaCriterio,
AdicionarCriterioCobrancaRotaActionForm adicionarCriterioCobrancaRotaActionForm,
HttpServletRequest httpServletRequest, 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()) {
// a CobrancaCriterio foi encontrada
CobrancaCriterio cobrancaCriterioEncontrada = (CobrancaCriterio) Util
.retonarObjetoDeColecao(cobrancaCriterios);
adicionarCriterioCobrancaRotaActionForm
.setIdCobrancaCriterio(""
+ (cobrancaCriterioEncontrada.getId()));
adicionarCriterioCobrancaRotaActionForm
.setDescricaoCobrancaCriterio(cobrancaCriterioEncontrada
.getDescricaoCobrancaCriterio());
httpServletRequest.setAttribute(
"idCobrancaCriterioNaoEncontrado", "true");
} else {
// a CobrancaCriterio n�o foi encontrada
adicionarCriterioCobrancaRotaActionForm
.setIdCobrancaCriterio("");
httpServletRequest.setAttribute(
"idCobrancaCriterioNaoEncontrado", "exception");
adicionarCriterioCobrancaRotaActionForm
.setDescricaoCobrancaCriterio("CRIT�RIO DE COBRAN�A INEXISTENTE");
}
}
}
}