package gcom.util; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; /** * Tem por objetivo o gerenciamento das funcionalidades qualificadas como * processos, bem como o controle de links, hints e quantidade de p�ginas * envolvidas num dado processo * * @author Cesar */ public class GerenciadorPaginas { private LinkedList paginas; private String actionInicial; private String actionFinal; /** * Construtor da classe GuiGerenciadorPrecessos */ public GerenciadorPaginas() { paginas = new LinkedList(); } /** * Adds a feature to the Page attribute of the GuiGerenciadorPrecessos * object * * @param descricao * The feature to be added to the Page attribute * @param uriInicial * Descri��o do par�metro * @param uriFinal * Descri��o do par�metro * @param imagemAtiva * The feature to be added to the Page attribute * @param imagemInativa * The feature to be added to the Page attribute * @return Descri��o do retorno */ public Pagina adicionaPagina(String descricao, String uriInicial, String uriFinal, String imagemAtiva, String imagemInativa) { paginas.add(new Pagina(descricao, uriInicial, uriFinal, imagemAtiva, imagemInativa)); Pagina pagina = (Pagina) paginas.getLast(); pagina.setIndex(paginas.size()); return pagina; } /** * Retorna o valor de paginaCorrente * * @return O valor de paginaCorrente */ public Pagina getPaginaCorrente() { Pagina retorno = null; ListIterator listIterator = paginas.listIterator(); while (listIterator.hasNext()) { Pagina pagina = (Pagina) listIterator.next(); if (pagina.isPaginaCorrente()) { retorno = pagina; } } return retorno; } /** * Retorna o valor de paginaSeguinte * * @return O valor de paginaSeguinte */ public Pagina getPaginaSeguinte() { Pagina paginaCorrente = null; Pagina paginaSeguinte = null; paginaCorrente = getPaginaCorrente(); if (paginaCorrente == null) { paginaSeguinte = setPaginaCorrentePeloIndice(0); } else { paginaSeguinte = getPaginaPeloIndice(paginaCorrente.getIndex() + 1); } return paginaSeguinte; } /** * Retorna o valor de paginaAnterior * * @return O valor de paginaAnterior */ public Pagina getPaginaAnterior() { //boolean existePaginaCorrente = false; Pagina paginaCorrente = null; Pagina paginaAnterior = null; paginaCorrente = getPaginaCorrente(); if (paginaCorrente == null) { paginaAnterior = setPaginaCorrentePeloIndice(0); } else { paginaAnterior = getPaginaPeloIndice(paginaCorrente.getIndex() - 1); } return paginaAnterior; } /** * Construtor da classe setPaginaPeloIndice * * @param indice * Descri��o do par�metro * @return Descri��o do retorno */ public Pagina setPaginaCorrentePeloIndice(int indice) { Pagina paginaCorrenteNova = null; Pagina paginaCorrenteAtual = null; paginaCorrenteAtual = getPaginaCorrente(); if (paginaCorrenteAtual != null) { if (indice > paginaCorrenteAtual.getIndex()) { paginaCorrenteNova = getPaginaSeguinte(); paginaCorrenteAtual.setPaginaCorrente(false); paginaCorrenteAtual.setPaginaPreenchida(true); } else if (indice < paginaCorrenteAtual.getIndex()) { for (int i = indice; i < paginas.size(); i++) { paginaCorrenteAtual = ((Pagina) paginas.get(i)); paginaCorrenteAtual.setPaginaCorrente(false); paginaCorrenteAtual.setPaginaPreenchida(false); } paginaCorrenteNova = ((Pagina) paginas.get(indice - 1)); } else if (indice == paginaCorrenteAtual.getIndex()) { paginaCorrenteNova = paginaCorrenteAtual; } } else { paginaCorrenteNova = ((Pagina) paginas.get(indice - 1)); } paginaCorrenteNova.setPaginaCorrente(true); paginaCorrenteNova.setPaginaPreenchida(false); return paginaCorrenteNova; } /** * Retorna o valor de paginaPeloIndice * * @param indice * Descri��o do par�metro * @return O valor de paginaPeloIndice */ public Pagina getPaginaPeloIndice(int indice) { return (Pagina) this.paginas.get(indice - 1); } /** * Seta o valor de paginaInativa * * @param indice * O novo valor de paginaInativa */ public void setPaginaInativa(int indice) { Pagina pagina = ((Pagina) paginas.get(indice - 1)); pagina.setPaginaInativa(true); } /** * < <Descri��o do m�todo>> * * @return Descri��o do retorno */ public Collection getPaginas() { return paginas; } /** * < <Descri��o do m�todo>> * * @param request * Descri��o do par�metro * @param pagina * Descri��o do par�metro * @return Descri��o do retorno */ public String generateHint(HttpServletRequest request, Pagina pagina) { String hint = ""; //int indexAtributoPagina = 0; AtributoPagina atributoPagina = null; String descricaoAtributoPagina = null; String descricaoAtributoRequest = null; Map mapRequest = request.getParameterMap(); Iterator iterator = pagina.getAtributosPagina().iterator(); while (iterator.hasNext()) { atributoPagina = (AtributoPagina) iterator.next(); descricaoAtributoPagina = atributoPagina.getDescricao(); if (mapRequest.get(atributoPagina.getId()) != null) { descricaoAtributoRequest = ((String[]) mapRequest .get(atributoPagina.getId()))[0]; atributoPagina.setTamanho(new Integer(descricaoAtributoRequest .length())); hint += "<b>" + descricaoAtributoPagina + ":</b> " + descricaoAtributoRequest + "<br>"; } } hint = hint.substring(0, hint.length() - 4); return hint; } /** * < <Descri��o do m�todo>> * * @param indicePagina * Descri��o do par�metro */ public void clearHint(int indicePagina) { this.getPaginaPeloIndice(indicePagina); } /** * Retorna o valor de size * * @return O valor de size */ public Integer getSize() { return new Integer(this.paginas.size()); } /** * Retorna o valor de actionFinal * * @return O valor de actionFinal */ public String getActionFinal() { return actionFinal; } /** * Retorna o valor de actionInicial * * @return O valor de actionInicial */ public String getActionInicial() { return actionInicial; } /** * Seta o valor de actionFinal * * @param actionFinal * O novo valor de actionFinal */ public void setActionFinal(String actionFinal) { this.actionFinal = actionFinal; } /** * Seta o valor de actionInicial * * @param actionInicial * O novo valor de actionInicial */ public void setActionInicial(String actionInicial) { this.actionInicial = actionInicial; } }