/* * * Copyright (c) 2013 - 2014 INT - National Institute of Technology & COPPE - Alberto Luiz Coimbra Institute - Graduate School and Research in Engineering. * See the file license.txt for copyright permission. * */ package actions; import java.util.ArrayList; import java.util.List; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import modelo.Parametros; import modelo.TecModel; import modelo.Tecido; import service.CapacTecViewAppService; import service.ParametrosAppService; import service.TecidoAppService; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; import util.SelectOneDataModel; /** * TecidoActions � uma classe relacionada � manipula��o de tela, ou seja, a intera��o do usus�rio * de fato dar-se-� atrav�s de objetos do tipo TecidoActions quando na tela de Tecido. * Objetos do tipo "actions", nome aqui adotado, tamb�m s�o popularmente conhecidos como managedbeans * em outras palavras beans gerenci�veis. * * @author marques.araujo * */ public class TecidoActions extends BaseActions { private static TecidoAppService tecidoService; private static CapacTecViewAppService capacTecViewService; private static ParametrosAppService parametrosService; private Tecido tecido; //variavel global private DataModel listaDeTecidos; //variavel global private Parametros parametrosCorrente; private SelectOneDataModel<Tecido> listaSelecaoDeTecidos; private SelectOneDataModel<String> comboTiposDeBusca; private String campoDeBusca; private String tipoDeBuscaSelecionada; private boolean buscaEfetuada = false; private DataModel listaDeModelos; private int pagina; public final String BUSCA_POR_CODIGO = "C�digo"; public final String BUSCA_POR_DESCRICAO = "Descri��o"; public TecidoActions() throws Exception { try { tecidoService = FabricaDeAppService.getAppService(TecidoAppService.class); capacTecViewService = FabricaDeAppService.getAppService(CapacTecViewAppService.class); parametrosService = FabricaDeAppService.getAppService(ParametrosAppService.class); } catch (Exception e) { e.printStackTrace(); } } /** * @author bruno.oliveira * <br /> * M�todo que limpa a vari�vel de lista e depois redireciona para p�gina list da tecidos.<br /> * � necess�rio apenas quando o cadastro tiver op��o de busca (como no caso de familia e modelo), pois * depois de realizar a busca sen�o houver novo get na lista de tecidos vai manter a lista resultante da busca. * * @return String */ public String preparaListagem() { listaDeTecidos = null; buscaEfetuada = false; return "listTecido"; } /** * Volta para a p�gina de lista de Recurso * * @return String */ public String cancela() { listaDeTecidos = null; buscaEfetuada = false; return "listTecido"; } public String cancelaModal() { parametrosCorrente = null; return "listTecido"; } /** * Insere na requisicao um novo recurso * Retorna "newTecido" e prepara para utilizar * a p�gina de inclusao(new) * * @return String */ public String preparaInclusao() { tecido = new Tecido(); return "newTecido"; } public String inclui() { try { tecidoService.inclui(tecido); listaDeTecidos = null; info("tecido.SUCESSO_INCLUSAO"); return "listTecido"; } catch (AplicacaoException e) { error(e.getMessage()); return "newTecido"; } } public String preparaAlteracao() { tecido = (Tecido) listaDeTecidos.getRowData(); return "editTecido"; } public boolean desabilitarBotao(){ return (parametrosCorrente.getPercentualDePerda()<=0); } /** * Este metodo substituiu o metodo alteracaoPercentualDePerdaDeParametros() * uma vez que foram utilizados validadores padroes. * @return String * @author marques.araujo */ public String alteracaoParametrosPercentualDePerda() { parametrosService.altera(parametrosCorrente); return "listTecido"; } /** * Este m�todo foi utilizado para enviar mensagens de sucesso * ou erro via servidor, porem ap�s a cria�ao de tags e classes * proprias para valida�ao este metodo nao foi mais utilizado. * * @return String * @author marques.araujo */ public String alteracaoPercentualDePerdaDeParametros() { //Este try{}catch{} foi utilizado para teste de mensagens de erro via servidor //A mensagem que obteremos com este try{} catch{} sera do tipo global mas o desejado //era que a mensagem ocorresse dentro do ModalPanel. try{ if(parametrosCorrente.getPercentualDePerda()>0){ info("parametros.SUCESSO_ALTERACAO_PERCENTUAL"); parametrosService.altera(parametrosCorrente); }else{ error("tecido.FALHA_ALTERACAO"); } }catch(Exception e){ error(e.getMessage()); } return "listTecido"; } public String altera() { try{ tecidoService.altera(tecido); info("tecido.SUCESSO_ALTERACAO"); }catch(AplicacaoException e){ error("tecido.FALHA_ALTERACAO"); } listaDeTecidos = null; return "listTecido"; } public void preparaExclusao() { tecido = (Tecido) listaDeTecidos.getRowData(); } public String exclui() { try { tecidoService.exclui(tecido); listaDeTecidos = null; info("tecido.SUCESSO_EXCLUSAO"); } catch (AplicacaoException e) { error(e.getMessage()); } return "listTecido"; } public String mostra() { tecido = (Tecido) listaDeTecidos.getRowData(); return "showTecido"; } /** * M�todo que busca um Recurso por c�digo/descri��o aproximados * redireciona para pagina list com a mensagem adequada: encontrado/nao encontrado * @return String * @author walanem */ public String buscaTecido(){ List<Tecido> tecidosEncontrados = null; if (campoDeBusca.trim().isEmpty()){ error("tecido.FORNECER_CAMPO_DE_BUSCA"); return "listTecido"; } else { listaDeTecidos = null; if (comboTiposDeBusca.getObjetoSelecionado().equals(BUSCA_POR_CODIGO)){ tecidosEncontrados = new ArrayList<Tecido>(tecidoService. recuperaListaDeTecidosPeloCodigoLike(campoDeBusca)); } else { tecidosEncontrados = new ArrayList<Tecido>(tecidoService. recuperaListaDeTecidosPorDescricao(campoDeBusca)); } if (tecidosEncontrados.isEmpty()){ error("tecido.NAO_ENCONTRADO"); listaDeTecidos = null; return "listTecido"; }else{ info("tecido.ENCONTRADO"); } } listaDeTecidos = new ListDataModel(tecidosEncontrados); buscaEfetuada = true; return "listTecido"; } public void imprimir(){ try{ List<Tecido> listaDeTecidos = tecidoService.recuperaListaDeTecidos(); tecidoService.gerarRelatorio(listaDeTecidos); } catch (AplicacaoException re){ error("tecido.TECIDOS_INEXISTENTES"); } } /** * Ao voltar da tela "mostrar disponibilidade maxima de tecido na matriz" * limpa a listaDeTecidos que estava sendo usada pois esta * carregava todos os capacTecViews de cada perioPM. * Fazendo listaDeTecidos = null, quando a tela for renderizada * vai usar getListaDeTecidos que obt�m ento a lista mais leve, * sem os capacTecViews. * * @return String */ public String voltaLimpando() { listaDeTecidos = null; return "listTecido"; } public String informaConsumoPorModelo() { tecido = (Tecido) listaDeTecidos.getRowData(); int pag = ((List<Tecido>)listaDeTecidos.getWrappedData()).indexOf(tecido); pagina = pag +1; listaDeTecidos = new ListDataModel(tecidoService. recuperaListaPaginadaDeTecidosComListaDeTecModels()); return "listTecModel"; } /** * Obtem listaDeTecidos trazendo os capacTecView de cada tecido para * usar na tela de master detail. * * Insere o objeto no request direciona para a pagina list de capacTecView. * * @return String * */ public String mostrarDisponibilidadeMaximaTecidoMatriz() { if(parametrosCorrente.isInicPlanejamento()){ tecido = (Tecido) listaDeTecidos.getRowData(); int pag = ((List<Tecido>)listaDeTecidos.getWrappedData()).indexOf(tecido); pagina = pag +1; try{ listaDeTecidos = new ListDataModel(capacTecViewService.recuperaListaPaginadaDeTecidosComListaDeCapacTecViews()); } catch(AplicacaoException e){ error(e.getMessage()); return "listTecido"; } return "listCapacTecView"; }else{ error("parametros.PLANEJAMENTO_NAO_INCIALIZADO"); return "listTecido"; } } /* * *********** Gets e Sets ***************** * */ public String getCampoDeBusca() { return campoDeBusca; } public void setCampoDeBusca(String campoDeBusca) { this.campoDeBusca = campoDeBusca; } public void setComboTiposDeBusca(SelectOneDataModel<String> comboTiposDeBusca) { this.comboTiposDeBusca = comboTiposDeBusca; } public SelectOneDataModel<String> getComboTiposDeBusca() { if (comboTiposDeBusca == null){ List<String> tiposDeBusca = new ArrayList<String>(2); tiposDeBusca.add(BUSCA_POR_CODIGO); tiposDeBusca.add(BUSCA_POR_DESCRICAO); comboTiposDeBusca = SelectOneDataModel. criaComObjetoSelecionadoSemTextoInicial(tiposDeBusca, BUSCA_POR_CODIGO); } return comboTiposDeBusca; } public void setBuscaEfetuada(boolean buscaEfetuada) { this.buscaEfetuada = buscaEfetuada; } public boolean isBuscaEfetuada() { return buscaEfetuada; } public void setTipoDeBuscaSelecionada(String tipoDeBuscaSelecionada) { this.tipoDeBuscaSelecionada = tipoDeBuscaSelecionada; } public String getTipoDeBuscaSelecionada() { return tipoDeBuscaSelecionada; } public Tecido getTecido() { return tecido; } public void setTecido(Tecido tecido) { this.tecido = tecido; } /** * Obtem Data Model listaDeTecidos com lista paginada atraves de recursoAppService * @return DataModel */ public DataModel getListaDeTecidos() { if (listaDeTecidos == null) { listaDeTecidos = new ListDataModel(tecidoService.recuperaListaPaginadaDeTecidos()); } return listaDeTecidos; } public void setListaDeTecidos(DataModel listaDeTecidos) { this.listaDeTecidos = listaDeTecidos; } public void setListaSelecaoDeTecidos(SelectOneDataModel<Tecido> listaSelecaoDeTecidos) { this.listaSelecaoDeTecidos = listaSelecaoDeTecidos; } public SelectOneDataModel<Tecido> getListaSelecaoDeTecidos() { return listaSelecaoDeTecidos; } public void setListaDeModelos(DataModel listaDeModelos) { this.listaDeModelos = listaDeModelos; } public DataModel getListaDeModelos() { return listaDeModelos; } public int getPagina() { return pagina; } public void setPagina(int pagina) { this.pagina = pagina; } public void setParametrosCorrente(Parametros parametrosCorrente) { this.parametrosCorrente = parametrosCorrente; } public Parametros getParametrosCorrente() { //Como temos apenas um registro no banco podemos usar o get(0) parametrosCorrente = parametrosService.recuperaListaDeParametros().get(0); return parametrosCorrente; } }