package gcom.gui.seguranca.acesso.transacao; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.seguranca.acesso.OperacaoOrdemExibicao; 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 java.util.Vector; 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; /** * * Permite exibir uma lista com as resolu��es de diretoria retornadas do * FiltrarManterTipoRetornoOrdemServicoReferidaAction ou ir para o * ExibirManterTipoRetornoOrdemServicoReferidaAction * * @author Francisco do Nascimento * @since 25/02/08 */ public class AtualizarOperacaoOrdemExibicaoAction extends GcomAction { /** * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o retorno ActionForward retorno; HttpSession sessao = httpServletRequest.getSession(false); Collection colOperOrdemExib = (Collection) sessao.getAttribute("colecaoOrdens"); Collection alterados = new Vector(); for (Iterator iter = colOperOrdemExib.iterator(); iter.hasNext();) { OperacaoOrdemExibicao ordemExib = (OperacaoOrdemExibicao) iter.next(); Integer idTabelaColuna = ordemExib.getTabelaColuna().getId(); String novaOrdem = httpServletRequest.getParameter("ordem" + idTabelaColuna); if (!ordemExib.getNumeroOrdem().equals(Integer.parseInt(novaOrdem))){ ordemExib.setNumeroOrdem(Integer.parseInt(novaOrdem)); ordemExib.setUltimaAlteracao(new Date()); alterados.add(ordemExib); } } String refreshOrdenar = httpServletRequest.getParameter("ordenar"); if (refreshOrdenar != null){ retorno = actionMapping.findForward("exibirManterOperacaoOrdemExibicao"); // Ordena a cole��o pelo valor de ordem Comparator object = new Comparator() { public int compare(Object a, Object b) { Integer ordem1 = ((OperacaoOrdemExibicao) a).getNumeroOrdem() ; Integer ordem2 = ((OperacaoOrdemExibicao) b).getNumeroOrdem() ; if (ordem1 == null){ ordem1 = new Integer(99999); } if (ordem2 == null){ ordem2 = new Integer(99999); } return ordem1.compareTo(ordem2); } }; List list = (List) colOperOrdemExib; Collections.sort(list, object); sessao.setAttribute("colecaoOrdens", colOperOrdemExib); } else { retorno = actionMapping.findForward("telaSucesso"); // atualizar no banco for (Iterator iter = alterados.iterator(); iter.hasNext();) { OperacaoOrdemExibicao operOrdem = (OperacaoOrdemExibicao) iter.next(); Fachada.getInstancia().inserirOuAtualizar(operOrdem); } montarPaginaSucesso(httpServletRequest, "Ordem de exibi��o alterada com sucesso.", "Manter outra tabela e coluna", "exibirFiltrarTabelaColunaAction.do?menu=sim"); } return retorno; } }