package gcom.gui.seguranca.acesso.transacao;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.FiltroOperacao;
import gcom.seguranca.acesso.FiltroOperacaoOrdemExibicao;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoOrdemExibicao;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
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 Thiago Ten�rio
* @since 31/10/2006
*/
public class ExibirManterOperacaoOrdemExibicaoAction extends GcomAction {
/**
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("manterOperacaoOrdemExibicao");
HttpSession sessao = httpServletRequest.getSession(false);
String idOperacao = (String) httpServletRequest.getParameter("idOperacao");
boolean novaOperacao = false;
if (idOperacao == null) {
idOperacao = (String) sessao.getAttribute("idOperacao");
} else {
novaOperacao = true;
sessao.setAttribute("idOperacao", idOperacao);
}
Collection colOperOrdemExib = new Vector();
if (idOperacao != null){
colOperOrdemExib = (Collection) sessao.getAttribute("colecaoOrdens");
if (novaOperacao){
FiltroOperacaoOrdemExibicao filtro = new FiltroOperacaoOrdemExibicao();
filtro.adicionarParametro(new ParametroSimples(
FiltroOperacaoOrdemExibicao.OPERACAO_ID, idOperacao));
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroOperacaoOrdemExibicao.TABELA_COLUNA);
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroOperacaoOrdemExibicao.TABELA_COLUNA_TABELA);
colOperOrdemExib = Fachada.getInstancia().pesquisar(filtro,
OperacaoOrdemExibicao.class.getSimpleName());
FiltroOperacao filtroOper = new FiltroOperacao();
filtroOper.adicionarParametro(new ParametroSimples(
FiltroOperacao.ID, idOperacao));
Collection colOperacoes = Fachada.getInstancia().pesquisar(filtroOper,
Operacao.class.getSimpleName());
Operacao operacao = (Operacao) Util.retonarObjetoDeColecao(colOperacoes);
if (operacao != null){
sessao.setAttribute("operacao", operacao);
} else {
throw new ActionServletException("atencao.operacaoOrdemExibicao.nao.existente");
}
}
}
// 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);
return retorno;
}
}