/* * * 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.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.faces.event.ValueChangeEvent; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import javax.faces.model.SelectItem; import modelo.Modelo; import modelo.Parametros; import modelo.TecModel; import modelo.Tecido; import service.ModeloAppService; import service.ParametrosAppService; import service.TecModelAppService; import service.TecidoAppService; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; import util.SelectOneDataModel; /** * TecModelActions � 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 TecModelActions quando na tela de TecModel. * Objetos do tipo "actions", nome aqui adotado, tamb�m s�o popularmente conhecidos como managebeans * em outras palavras beans gerenci�veis. * * @author marques.araujo * */ public class TecModelActions extends BaseActions implements Serializable{ private static final long serialVersionUID = 1L; // Services private static TecModelAppService tecModelService; private static TecidoAppService tecidoService; private static ModeloAppService modeloService; private static ParametrosAppService parametrosService; // Paginas public final String PAGINA_LIST = "listTecModel"; public final String PAGINA_NEW = "newTecModel"; public final String PAGINA_SHOW = "showTecModel"; public final String PAGINA_EDIT = "editTecModel"; // Variaveis de Tela private TecModel tecModelCorrente; private Tecido tecidoCorrente; private Parametros parametrosCorrente; private DataModel listaDeTecidos; private Double aux = 0.0; private SelectOneDataModel<Modelo> comboModelos; private SelectOneDataModel<String> comboTiposDeBusca; private String campoDeBusca; private boolean buscaEfetuada = false; public final String BUSCA_POR_CODIGO = "C�digo"; public final String BUSCA_POR_DESCRICAO = "Descri��o"; private int pagina; public TecModelActions() throws Exception { try { modeloService = FabricaDeAppService.getAppService(ModeloAppService.class); tecModelService = FabricaDeAppService.getAppService(TecModelAppService.class); tecidoService = FabricaDeAppService.getAppService(TecidoAppService.class); parametrosService = FabricaDeAppService.getAppService(ParametrosAppService.class); } catch (Exception e) { throw e; } pagina = ((TecidoActions) getManagedBean("tecidoActions")).getPagina(); } /** * Antes de incluir RecModel, verifica se tem modelos cadastrados e recursos * cadastrados, e mostra as mensagens de erro se elas existirem * e instancia RecModel se nao houver excecao * retorna para a pagina new em caso de sucesso, caso contrario retorna para pagina list. * @return String * */ public String preparaInclusao() { try{ modeloService.recuperaListaDeModelos(); } catch(AplicacaoException ae){ error(ae.getMessage()); return PAGINA_LIST; } try{ tecidoService.recuperaListaDeTecidos(); } catch(AplicacaoException ae){ error(ae.getMessage()); return PAGINA_LIST; } tecModelCorrente = new TecModel(); tecidoCorrente = (Tecido) listaDeTecidos.getRowData(); tecModelCorrente.setTecido(tecidoCorrente); return PAGINA_NEW; } public void setaTRDefaultDoModeloSelecionado(ValueChangeEvent event){ Modelo modeloCorrente = recuperaModeloDoCombodeModelo(event.getNewValue().toString()); tecModelCorrente.setTempoDefasagemUsoTec(modeloCorrente.getTr()); } public String inclui(){ tecModelCorrente.setModelo(comboModelos.getObjetoSelecionado()); try{ tecModelService.inclui(tecModelCorrente); } catch (AplicacaoException ex) { error(ex.getMessage()); return PAGINA_NEW; } info("tecModel.SUCESSO_INCLUSAO"); listaDeTecidos = null; return PAGINA_LIST; } public String preparaAlteracao(){ return PAGINA_EDIT; } public String altera() { tecModelService.altera(tecModelCorrente); info("tecModel.SUCESSO_ALTERACAO"); buscaEfetuada = false; listaDeTecidos = null; return PAGINA_LIST; } public String mostra(){ tecModelCorrente = (TecModel) listaDeTecidos.getRowData(); return PAGINA_SHOW; } public String exclui(){ try { tecModelService.exclui(tecModelCorrente); } catch (AplicacaoException e) { } info("tecModel.SUCESSO_EXCLUSAO"); buscaEfetuada = false; listaDeTecidos = null; return PAGINA_LIST; } public String cancela() { listaDeTecidos = null; buscaEfetuada = false; return PAGINA_LIST; } /** * Metodo que percorre a lista de modelos do combo de modelos e * verifica qual deles tem o valor igual ao valorSelecionado. * Entao retorna o modelo do combo que bateu com o resultado. * @param valorSelecionado * @return */ public Modelo recuperaModeloDoCombodeModelo(String valorSelecionado){ for(SelectItem item : comboModelos.getListaSelecao()){ if (item.getLabel().equals(valorSelecionado)) { return (Modelo) item.getValue(); } } return null; } // ============ M�todos get() e set() ================= // public TecModel getTecModelCorrente() { System.out.println(tecModelCorrente); return tecModelCorrente; } public void setTecModelCorrente(TecModel tecModelCorrente) { this.tecModelCorrente = tecModelCorrente; } public void setTecidoCorrente(Tecido tecidoCorrente) { this.tecidoCorrente = tecidoCorrente; } public Tecido getTecidoCorrente() { return tecidoCorrente; } public DataModel getListaDeTecidos() { if (listaDeTecidos == null){ listaDeTecidos = new ListDataModel(tecidoService. recuperaListaPaginadaDeTecidosComListaDeTecModels()); } return listaDeTecidos; } public void setListaDeTecidos(DataModel listaDeTecidos) { this.listaDeTecidos = listaDeTecidos; } /** * Este m�todo � respons�vel por retornar uma lista de Modelos. * @return SelectOneDataModel<Modelo> * */ public SelectOneDataModel<Modelo> getComboModelos() { if (comboModelos == null){ try{ comboModelos = SelectOneDataModel. criaSemTextoInicial(modeloService.recuperaListaDeModelos()); } catch(AplicacaoException ae){ error(ae.getMessage()); } } return comboModelos; } public void setComboModelos(SelectOneDataModel<Modelo> comboModelos) { this.comboModelos = comboModelos; } 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; } /** * Exatamente igual ao metodo no cadastro de modelos * talvez seja interessante refatorar para colocar num lugar s� * para utiliza�ao de todos que usem combobox. * */ public void setBuscaEfetuada(boolean buscaEfetuada) { this.buscaEfetuada = buscaEfetuada; } /** * Exatamente igual ao metodo no cadastro de modelos * talvez seja interessante refatorar para colocar num lugar s� * para utiliza�ao de todos que usem combobox * */ public boolean isBuscaEfetuada() { return buscaEfetuada; } public int getPagina() { return pagina; } public void setPagina(int pagina) { this.pagina = pagina; } /** * Este metodo � respons�vel pelo c�lculo do consumo por lote em quilograma. * @author marques.araujo * @param ValueChangeEvent evento * @return void * */ public void calculaConsumoPorLoteKgListener (ValueChangeEvent evento){ Double newValue = (Double)evento.getNewValue(); Double percentual = parametrosService.recuperaListaDeParametros().get(0).getPercentualDePerda(); Double consumoMt = tecModelCorrente.getConsumoPorLoteMt(); Double fatorDeRendimento = tecModelCorrente.getTecido().getFatorDeRendimento();// tecidoCorrente.getFatorDeRendimento(); if(!tecModelCorrente.getConsumoPorLoteMt().equals((Double)evento.getNewValue())){ tecModelCorrente.setConsumoPorLoteKg(((Double)evento.getNewValue()*(percentual/100 + 1))/tecModelCorrente.getTecido().getFatorDeRendimento()); } } public Double getAux() { return aux; } public void setAux(Double aux) { this.aux = aux; } /** * Este m�todo � usado para impress�o, caso n�o haja modelos associados * a tecidos uma mensagem de alerta sera enviada ao usu�rio. * @author marques.araujo * @return void */ public void imprimir(){ try{ if(tecidoService.recuperaListaDeTecidosQueTenhamApenasTecModels().isEmpty()){ throw new AplicacaoException("tecido.TECIDOS_SEM_MODELOS"); } tecidoService.gerarRelatorioAgregado(tecidoService.recuperaListaDeTecidosComTecModels()); } catch (AplicacaoException re){ if(re.getMessage().equals("tecido.TECIDOS_SEM_MODELOS")){ error("tecido.TECIDOS_SEM_MODELOS"); }else{ error("tecido.TECIDOS_INEXISTENTES"); } } } }