/* * * 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.Date; import java.util.GregorianCalendar; import java.util.List; import javax.faces.event.ValueChangeEvent; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import modelo.Familia; import modelo.Modelo; import modelo.ModeloDecorado; import modelo.Parametros; import modelo.PerioPM; import service.CadPlanAppService; import service.FamiliaAppService; import service.ModeloAppService; import service.ParametrosAppService; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; import util.DataUtil; import util.SelectOneDataModel; public class ModeloActions extends BaseActions implements Serializable { // Services private static ModeloAppService modeloService; private static CadPlanAppService cadPlanService; private static FamiliaAppService familiaService; private static ParametrosAppService parametrosService; // Paginas public final String PAGINA_NEW = "newModelo"; public final String PAGINA_LIST = "listModelo"; public final String PAGINA_SHOW = "showModelo"; public final String PAGINA_EDIT = "editModelo"; // Componentes de Controle private DataModel listaModelos; private SelectOneDataModel<Familia> comboFamilias; private SelectOneDataModel<String> comboTiposDeBusca; private SelectOneDataModel<String> radioFlags; // Variaveis de Tela private Modelo modeloCorrente; private List<ModeloDecorado> modelosDecorados; private String flagSelecionado; private String campoDeBusca; private String tipoDeBuscaSelecionada; private boolean buscaEfetuada = false; public final String BUSCA_POR_CODIGO = "C�digo"; public final String BUSCA_POR_DESCRICAO = "Descri��o"; public List<String> tiposDeFlag = new ArrayList<String>(2); private Date dataEstqInic; private Parametros parametroCorrente; public ModeloActions() throws Exception { try { familiaService = FabricaDeAppService.getAppService(FamiliaAppService.class); modeloService = FabricaDeAppService.getAppService(ModeloAppService.class); cadPlanService = FabricaDeAppService.getAppService(CadPlanAppService.class); parametrosService = FabricaDeAppService .getAppService(ParametrosAppService.class); } catch (Exception e) { throw e; } parametroCorrente = parametrosService.recuperaListaDeParametros().get(0); tiposDeFlag.add(Modelo.FLAG_FIXO); tiposDeFlag.add(Modelo.FLAG_LIVRE); } public String preparaInclusao() { if (familiaService.recuperaListaDeFamilias().isEmpty()){ error("familia.FAMILIAS_INEXISTENTES"); return PAGINA_LIST; } modeloCorrente = new Modelo(); return PAGINA_NEW; } /** * @author bruno.oliveira * <br /> * M�todo que limpa a vari�vel de lista e depois redireciona para p�gina list dos modelos.<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 modelos vai manter a lista resultante da busca. * * @return String */ public String preparaListagem() { listaModelos = null; buscaEfetuada = false; return PAGINA_LIST; } public String inclui(){ if (radioFlags.getObjetoSelecionado().equals(Modelo.FLAG_LIVRE)){ modeloCorrente.setFlagProducaoModel(true); } else { modeloCorrente.setFlagProducaoModel(false); } modeloCorrente.setFamilia(comboFamilias.getObjetoSelecionado()); try{ modeloService.inclui(modeloCorrente); } catch (AplicacaoException ex) { error(ex.getMessage()); return PAGINA_NEW; } info("modelo.SUCESSO_INCLUSAO"); listaModelos = null; return PAGINA_LIST; } public String preparaAlteracao(){ modeloCorrente = (Modelo) listaModelos.getRowData(); //verifica se tem cadplans cadastrados, se tiver nao pode alterar o modelo. if(cadPlanService.recuperaListaDeCadPlan().size()> 0){ error("modelo.CADPLAN_CADASTRADOS"); return PAGINA_LIST; } comboFamilias = SelectOneDataModel.criaComObjetoSelecionado(familiaService.recuperaListaPaginadaDeFamilias(), modeloCorrente.getFamilia()); radioFlags = SelectOneDataModel.criaComObjetoSelecionadoSemTextoInicial(tiposDeFlag, modeloCorrente.getFlagProducaoModel() ? Modelo.FLAG_LIVRE : Modelo.FLAG_FIXO); return PAGINA_EDIT; } /** * Altera o valor do Estoque em falta do modelo sendo editado para o * valor relativo ao PMP vigente. * (APENAS NA TELA DE EDICAO) * Funciona por ajax. * @param event */ public void alteracaoCalcularEstqEmFaltaPorPMP() { System.out.println("bla"); try{ modeloCorrente = modeloService.atualizaEstoqueEmFaltaDeModeloPorPMP(modeloCorrente); } catch (AplicacaoException ex){ } } public String altera() { if (radioFlags.getObjetoSelecionado().equals(Modelo.FLAG_LIVRE)){ modeloCorrente.setFlagProducaoModel(true); } else { modeloCorrente.setFlagProducaoModel(false); } modeloCorrente.setFamilia(comboFamilias.getObjetoSelecionado()); try { modeloService.altera(modeloCorrente); } catch (AplicacaoException e) { error(e.getMessage()); return PAGINA_LIST; } info("modelo.SUCESSO_ALTERACAO"); buscaEfetuada = false; listaModelos = null; return PAGINA_LIST; } public String alteraDataEstqInic() { parametroCorrente.setDataEstqInic(DataUtil.dateToCalendar(dataEstqInic)); parametrosService.altera(parametroCorrente); info("parametros.SUCESSO_ALTERACAO_DATAESTQINIC"); return PAGINA_LIST; } public String mostra(){ modeloCorrente = (Modelo) listaModelos.getRowData(); radioFlags = SelectOneDataModel.criaComObjetoSelecionadoSemTextoInicial(tiposDeFlag, modeloCorrente.getFlagProducaoModel() ? Modelo.FLAG_LIVRE : Modelo.FLAG_FIXO); return PAGINA_SHOW; } public void preparaExclusao(){ modeloCorrente = (Modelo) listaModelos.getRowData(); } public String exclui(){ try { modeloService.exclui(modeloCorrente); } catch (AplicacaoException ex) { error(ex.getMessage()); return PAGINA_LIST; } info("modelo.SUCESSO_EXCLUSAO"); listaModelos = null; buscaEfetuada = false; return PAGINA_LIST; } public String cancelar() { listaModelos = null; buscaEfetuada = false; return PAGINA_LIST; } public void geraRelatorioPdf(){ List<Modelo> listaModelos = null; try{ listaModelos = modeloService.recuperaListaDeModelosComFamilias(); if(listaModelos.isEmpty()){ error("modelo.MODELOS_INEXISTENTES"); }else{ modeloService.gerarRelatorio(modeloService.recuperaListaDeModelosComFamilias()); } } catch (AplicacaoException re){ re.getMessage(); } } /** * M�todo que busca um Modelo por c�digo/descri��o aproximados * redireciona para pagina list com a mensagem adequada: encontrado/nao encontrado * * @author walanem */ public String buscaModelo(){ List<Modelo> modelosEncontrados = null; if (campoDeBusca.trim().isEmpty()){ error("modelo.FORNECER_CAMPO_DE_BUSCA"); return PAGINA_LIST; } else { listaModelos = null; if (comboTiposDeBusca.getObjetoSelecionado().equals(BUSCA_POR_CODIGO)){ modelosEncontrados = new ArrayList<Modelo>(modeloService.recuperaModeloPorCodigoLike(campoDeBusca)); } else { modelosEncontrados = new ArrayList<Modelo>(modeloService.recuperaModeloPorDescricao(campoDeBusca)); } if (modelosEncontrados.isEmpty()){ error("modelo.NAO_ENCONTRADO"); listaModelos = null; return PAGINA_LIST; }else{ info("modelo.ENCONTRADOS"); } } listaModelos = new ListDataModel(modelosEncontrados); buscaEfetuada = true; return PAGINA_LIST; } // ================================== M�todos get() e set() ================================== // public Modelo getModeloCorrente() { return modeloCorrente; } public void setModeloCorrente(Modelo modeloCorrente) { this.modeloCorrente = modeloCorrente; } public DataModel getListaModelos() { if (listaModelos == null){ listaModelos = new ListDataModel(modeloService.recuperaListaPaginadaDeModelosComFamilias()); } return listaModelos; } public void setListaModelos(DataModel listaModelos) { this.listaModelos = listaModelos; } /** * M�todo que cria a Combobox que lista as fam�lias cadastradas no sistema. * * @author walanem */ public SelectOneDataModel<Familia> getComboFamilias() { if (comboFamilias == null){ comboFamilias = SelectOneDataModel.criaSemTextoInicial(familiaService.recuperaListaPaginadaDeFamilias()); } return comboFamilias; } public void setComboFamilias(SelectOneDataModel<Familia> comboFamilias) { this.comboFamilias = comboFamilias; } /** * M�todo que cria os RadioButtons relativos ao Flag de Producao do Modelo * * @author walanem */ public SelectOneDataModel<String> getRadioFlags() { if (radioFlags == null){ radioFlags = SelectOneDataModel.criaComObjetoSelecionadoSemTextoInicial(tiposDeFlag, Modelo.FLAG_LIVRE); } return radioFlags; } public void setRadioFlags(SelectOneDataModel<String> radioFlags) { this.radioFlags = radioFlags; } public String getFlagSelecionado() { return flagSelecionado; } public void setFlagSelecionado(String flagSelecionado) { this.flagSelecionado = flagSelecionado; } public String getCampoDeBusca() { return campoDeBusca; } public void setCampoDeBusca(String campoDeBusca) { this.campoDeBusca = campoDeBusca; } public void setComboTiposDeBusca(SelectOneDataModel<String> comboTiposDeBusca) { this.comboTiposDeBusca = comboTiposDeBusca; } /** * M�todo que cria a ComboBox relativos as formas de busca de um Modelo * * @author walanem */ 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 Parametros getParametroCorrente() { if (parametroCorrente == null) { parametroCorrente = new Parametros(); parametroCorrente = parametrosService.recuperaListaDeParametros() .get(0); } return parametroCorrente; } public void setParametroCorrente(Parametros parametroCorrente) { this.parametroCorrente = parametroCorrente; } public Date getDataEstqInic() { if (dataEstqInic == null){ if (parametroCorrente == null){ dataEstqInic = new GregorianCalendar().getTime(); } else{ dataEstqInic = parametroCorrente.getDataEstqInic().getTime(); } } return dataEstqInic; } public void setDataEstqInic(Date dataEstqInic) { this.dataEstqInic = dataEstqInic; } public String getTipoDeBuscaSelecionada() { return tipoDeBuscaSelecionada; } public void setModelosDecorados(List<ModeloDecorado> modelosDecorados) { this.modelosDecorados = modelosDecorados; } public List<ModeloDecorado> getModelosDecorados() { return modelosDecorados; } }