/* * * 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.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import org.jboss.util.NotImplementedException; import modelo.CadPlan; import modelo.HP; import modelo.Modelo; import modelo.Parametros; import modelo.PerioPAP; import modelo.PerioPM; import service.CadPlanAppService; import service.HPAppService; import service.ModeloAppService; import service.ParametrosAppService; import service.PerioPAPAppService; import service.PerioPMAppService; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; import util.DataUtil; import util.SelectOneDataModel; public class HPActions extends BaseActions implements Serializable { // Services private static HPAppService hpService; private static PerioPMAppService periodoService; private static PerioPAPAppService perioPAPService; private static ParametrosAppService parametrosService; // Paginas public final String PAGINA_LIST = "listHP"; public final String PAGINA_EDIT = "editHP"; public final String ALTERA_PMP = "Altera��o de HP PMP"; public final String ALTERA_PAP = "Altera��o de HP PAP"; public final String ALTERA_PMP_DEMOD = "Altera��o de HP Demanda Modelo"; public final String ALTERA_PAP_DEFAM = "Altera��o de HP Demanda Familia"; // Componentes de Controle private SelectOneDataModel<String> comboPeriodoInicial; private SelectOneDataModel<String> comboPeriodoFinal; private SelectOneDataModel<String> comboPeriodoFinalPerioPAP; private SelectOneDataModel<String> comboPeriodoInicialPerioPAP; // Variaveis de Tela private HP hpCorrente; private PerioPM periodoInicialCorrente; private PerioPM periodoFinalCorrente; private PerioPAP periodoPAPInicialCorrente; private PerioPAP periodoPAPFinalCorrente; private Parametros parametroCorrente; private String statusPlanejamento; private int opcaoEscolhida; private String paginaCorrente; final static int OPCAO_ALTERACAO_PMP = 0; final static int OPCAO_ALTERACAO_PAP = 1; final static int OPCAO_ALTERACAO_DEMODPER = 2; final static int OPCAO_ALTERACAO_DEFAMPER = 3; public HPActions() throws Exception { try { hpService = FabricaDeAppService.getAppService(HPAppService.class); periodoService = FabricaDeAppService .getAppService(PerioPMAppService.class); perioPAPService = FabricaDeAppService .getAppService(PerioPAPAppService.class); parametrosService = FabricaDeAppService .getAppService(ParametrosAppService.class); } catch (Exception e) { throw e; } } /** * Verifica se usuario tem status para executar opera��o (� administrador ou * gestor) e chama o metodo do service * * @return */ public String iniciaPlanejamento() { if (sessaoUsuarioCorrente.isAdministrador() || sessaoUsuarioCorrente.isGestor()) { hpCorrente = getHpCorrente(); try { hpService.iniciaPlanejamento(); } catch (AplicacaoException e) { error(e.getMessage()); return PAGINA_LIST; } info("hp.SUCESSO_INICIO_PLANEJAMENTO"); statusPlanejamento = null; parametroCorrente = null; return PAGINA_LIST; } else { error("erro.FALTA_DE_PRIVILEGIO"); return PAGINA_LIST; } } public String preparaAlteracaoPerioPM() { if (sessaoUsuarioCorrente.isAdministrador() || sessaoUsuarioCorrente.isGestor()) { if (periodoService.recuperaListaDePerioPMs().isEmpty()) { error("perioPM.PERIODOS_INEXISTENTES"); return PAGINA_LIST; } return PAGINA_EDIT; } else { error("erro.FALTA_DE_PRIVILEGIO"); return PAGINA_LIST; } } public String preparaAlteracaoPerioPAP() { if (sessaoUsuarioCorrente.isAdministrador() || sessaoUsuarioCorrente.isGestor()) { if (perioPAPService.recuperaListaDePerioPAPs().isEmpty()) { error("perioPAP.PERIODOS_INEXISTENTES"); return PAGINA_LIST; } return PAGINA_EDIT; } else { error("erro.FALTA_DE_PRIVILEGIO"); return PAGINA_LIST; } } public String salvar() { if ((paginaCorrente == ALTERA_PMP || paginaCorrente == ALTERA_PMP_DEMOD) && !validacaoSelecaoPeriodos()) { error("perioPM.DATA_FINAL_ANTERIOR"); return PAGINA_EDIT; } if ((paginaCorrente == ALTERA_PAP || paginaCorrente == ALTERA_PAP_DEFAM) && !validacaoSelecaoPeriodosPAP()) { error("perioPAP.DATA_FINAL_ANTERIOR"); return PAGINA_EDIT; } if (opcaoEscolhida == OPCAO_ALTERACAO_PMP || opcaoEscolhida == OPCAO_ALTERACAO_DEMODPER) { hpCorrente.setPerioPMInicPMP(periodoInicialCorrente); hpCorrente.setPerioPMFinalPMP(periodoFinalCorrente); hpCorrente.setPerioPMInicDemMod(periodoInicialCorrente); hpCorrente.setPerioPMFinalDemMod(periodoFinalCorrente); } else { hpCorrente.setPerioPAPInicPAP(periodoPAPInicialCorrente); hpCorrente.setPerioPAPFinalPAP(periodoPAPFinalCorrente); hpCorrente.setPerioPAPInicDemFam(periodoPAPInicialCorrente); hpCorrente.setPerioPAPFinalDemFam(periodoPAPFinalCorrente); } try { if (hpCorrente.getId() == null) { hpService.inclui(hpCorrente); } else { hpService.altera(hpCorrente); } } catch (AplicacaoException e) { error(e.getMessage()); return PAGINA_EDIT; } info("hp.SUCESSO_ALTERACAO"); comboPeriodoInicial = null; comboPeriodoFinal = null; comboPeriodoInicialPerioPAP = null; comboPeriodoFinalPerioPAP = null; hpCorrente = null; return PAGINA_LIST; } public String cancelar() { return PAGINA_LIST; } public void geraRelatorioPdf() { throw new NotImplementedException(); } public String alteraIntervalos() { List<PerioPM> periodos = periodoService.recuperaListaDePerioPMs(); if (periodos.isEmpty()) { error("periodos.PERIODOS_INEXISTENTES"); } else { if (parametroCorrente.getNumIntervalosFixos() > periodos.size()) { error("parametros.INTERVALO_FIXO_INVALIDO"); return PAGINA_LIST; } parametrosService.altera(parametroCorrente); info("parametros.SUCESSO_ALTERACAO_INTERVALO"); } return PAGINA_LIST; } /** * Constroi e retorna uma lista com periodo+dataInicial+dataFinal para * mostrar no combobox da altera��o de HP * * @param periodos * @return */ public List<String> converterExibicaoPerioPM(List<PerioPM> periodos) { List<String> datasConvertidas = new ArrayList<String>(); String diaInicial; String mesInicial; String anoInicial; String diaFinal; String mesFinal; String anoFinal; for (PerioPM perioPM : periodos) { String periodoPM = Integer.toString(perioPM.getPeriodoPM()); diaInicial = Integer.toString(perioPM.getDataInicial().get( Calendar.DAY_OF_MONTH)); mesInicial = Integer.toString(perioPM.getDataInicial().get( Calendar.MONTH) + 1); anoInicial = Integer.toString(perioPM.getDataInicial().get( Calendar.YEAR)); diaFinal = Integer.toString(perioPM.getDataFinal().get( Calendar.DAY_OF_MONTH)); mesFinal = Integer.toString(perioPM.getDataFinal().get( Calendar.MONTH) + 1); anoFinal = Integer.toString(perioPM.getDataFinal().get( Calendar.YEAR)); if (diaInicial.length() < 2) { diaInicial = "0" + diaInicial; } if (diaFinal.length() < 2) { diaFinal = "0" + diaFinal; } if (mesInicial.length() < 2) { mesInicial = "0" + mesInicial; } if (mesFinal.length() < 2) { mesFinal = "0" + mesFinal; } String dataString = periodoPM + " - " + diaInicial + "/" + mesInicial + "/" + anoInicial + " a " + diaFinal + "/" + mesFinal + "/" + anoFinal; datasConvertidas.add(dataString); } return datasConvertidas; } /** * Constroi e retorna uma lista com periodo+dataInicial+dataFinal para * mostrar no combobox da altera��o de HP para PERIOPAP * * @param periodos * @return */ public List<String> converterExibicaoPerioPAP(List<PerioPAP> periodos) { List<String> datasConvertidas = new ArrayList<String>(); String diaInicial; String mesInicial; String anoInicial; String diaFinal; String mesFinal; String anoFinal; for (PerioPAP perioPAP : periodos) { try { perioPAP = perioPAPService.recuperaPerioPAPPorPeriodoPAP(perioPAP.getPeriodoPAP()); } catch (AplicacaoException e) { } String periodoPAP = Integer.toString(perioPAP.getPeriodoPAP()); diaInicial = Integer.toString(perioPAP.getDataInicial().get( Calendar.DAY_OF_MONTH)); mesInicial = Integer.toString(perioPAP.getDataInicial().get( Calendar.MONTH) + 1); anoInicial = Integer.toString(perioPAP.getDataInicial().get( Calendar.YEAR)); diaFinal = Integer.toString(perioPAP.getDataFinal().get( Calendar.DAY_OF_MONTH)); mesFinal = Integer.toString(perioPAP.getDataFinal().get( Calendar.MONTH) + 1); anoFinal = Integer.toString(perioPAP.getDataFinal().get( Calendar.YEAR)); if (diaInicial.length() < 2) { diaInicial = "0" + diaInicial; } if (diaFinal.length() < 2) { diaFinal = "0" + diaFinal; } if (mesInicial.length() < 2) { mesInicial = "0" + mesInicial; } if (mesFinal.length() < 2) { mesFinal = "0" + mesFinal; } String dataString = periodoPAP + " - " + diaInicial + "/" + mesInicial + "/" + anoInicial + " a " + diaFinal + "/" + mesFinal + "/" + anoFinal; datasConvertidas.add(dataString); } return datasConvertidas; } public int periodoPMEPAPDePerioPMStr(String perioPMStr){ String []strsDivididasEspaco = perioPMStr.split(" "); String periodo = strsDivididasEspaco[0]; return Integer.parseInt(periodo); } public boolean validacaoSelecaoPeriodos() { String selecao2 = comboPeriodoFinal.getObjetoSelecionado(); try { periodoInicialCorrente = periodoService .recuperaPerioPMPorPeriodoPM(1); periodoFinalCorrente = periodoService .recuperaPerioPMPorPeriodoPM(periodoPMEPAPDePerioPMStr(selecao2)); } catch (AplicacaoException e) { } if (periodoInicialCorrente.getPeriodoPM() >= periodoFinalCorrente .getPeriodoPM()) { return false; } return true; } public boolean validacaoSelecaoPeriodosPAP() { String selecao2 = comboPeriodoFinal.getObjetoSelecionado(); try { periodoPAPInicialCorrente = perioPAPService .recuperaPerioPAPPorPeriodoPAP(1); periodoPAPFinalCorrente = perioPAPService .recuperaPerioPAPPorPeriodoPAP(periodoPMEPAPDePerioPMStr(selecao2)); } catch (AplicacaoException e) { } if (periodoPAPInicialCorrente.getPeriodoPAP() >= periodoPAPFinalCorrente.getPeriodoPAP()) { return false; } return true; } // ================================== M�todos get() e set() // ================================== // public void setHpCorrente(HP hpCorrente) { this.hpCorrente = hpCorrente; } public HP getHpCorrente() { List<HP> lista = hpService.recuperaListaDeHP(); if (lista.isEmpty()) { return hpCorrente = new HP(); } hpCorrente = lista.get(0); //Recupera informacao dos campos transientes e //seta a informacao nos perioPAPs inicial e final. if (hpCorrente.getPerioPAPInicPAP() != null) { try { periodoPAPInicialCorrente = perioPAPService .recuperaPerioPAPPorPeriodoPAP(hpCorrente.getPerioPAPInicPAP() .getPeriodoPAP()); } catch (AplicacaoException e) { e.printStackTrace(); } hpCorrente.setPerioPAPInicPAP(periodoPAPInicialCorrente); hpCorrente.setPerioPAPInicDemFam(periodoPAPInicialCorrente); } if (hpCorrente.getPerioPAPFinalPAP() != null) { try { periodoPAPFinalCorrente = perioPAPService .recuperaPerioPAPPorPeriodoPAP(hpCorrente.getPerioPAPFinalPAP() .getPeriodoPAP()); } catch (AplicacaoException e) { e.printStackTrace(); } hpCorrente.setPerioPAPFinalPAP(periodoPAPFinalCorrente); hpCorrente.setPerioPAPFinalDemFam(periodoPAPFinalCorrente); } return hpCorrente; } public PerioPM getPeriodoInicialCorrente() { if (periodoInicialCorrente == null) { periodoInicialCorrente = new PerioPM(); } return periodoInicialCorrente; } public void setPeriodoInicialCorrente(PerioPM periodoInicialCorrente) { this.periodoInicialCorrente = periodoInicialCorrente; } public PerioPM getPeriodoFinalCorrente() { if (periodoFinalCorrente == null) { periodoFinalCorrente = new PerioPM(); } return periodoFinalCorrente; } public void setPeriodoFinalCorrente(PerioPM periodoFinalCorrente) { this.periodoFinalCorrente = periodoFinalCorrente; } /** * @return the periodoPAPInicialCorrente */ public PerioPAP getPeriodoPAPInicialCorrente() { return periodoPAPInicialCorrente; } /** * @param periodoPAPInicialCorrente * the periodoPAPInicialCorrente to set */ public void setPeriodoPAPInicialCorrente(PerioPAP periodoPAPInicialCorrente) { this.periodoPAPInicialCorrente = periodoPAPInicialCorrente; } /** * @return the periodoPAPFinalCorrente */ public PerioPAP getPeriodoPAPFinalCorrente() { return periodoPAPFinalCorrente; } /** * @param periodoPAPFinalCorrente * the periodoPAPFinalCorrente to set */ public void setPeriodoPAPFinalCorrente(PerioPAP periodoPAPFinalCorrente) { this.periodoPAPFinalCorrente = periodoPAPFinalCorrente; } public void setParametroCorrente(Parametros parametroCorrente) { this.parametroCorrente = parametroCorrente; } public Parametros getParametroCorrente() { if (parametroCorrente == null) { parametroCorrente = new Parametros(); parametroCorrente = parametrosService.recuperaListaDeParametros() .get(0); } return parametroCorrente; } public void setOpcaoEscolhida(int opcaEscolhida) { this.opcaoEscolhida = opcaEscolhida; } public int getOpcaoEscolhida() { return opcaoEscolhida; } public SelectOneDataModel<String> getComboPeriodoInicial() { if (comboPeriodoInicial == null) { if(paginaCorrente == ALTERA_PAP || paginaCorrente == ALTERA_PAP_DEFAM){ comboPeriodoInicial = SelectOneDataModel .criaSemTextoInicial(this .converterExibicaoPerioPAP(perioPAPService .recuperaListaDePerioPAPs())); } else{ comboPeriodoInicial = SelectOneDataModel.criaSemTextoInicial(this .converterExibicaoPerioPM(periodoService .recuperaListaDePerioPMs())); } } return comboPeriodoInicial; } public SelectOneDataModel<String> getComboPeriodoFinal() { if (comboPeriodoFinal == null) { if (paginaCorrente == ALTERA_PAP || paginaCorrente == ALTERA_PAP_DEFAM) { comboPeriodoFinal = SelectOneDataModel.criaSemTextoInicial(this .converterExibicaoPerioPAP(perioPAPService .recuperaListaDePerioPAPs())); } else { comboPeriodoFinal = SelectOneDataModel.criaSemTextoInicial(this .converterExibicaoPerioPM(periodoService .recuperaListaDePerioPMs())); } } return comboPeriodoFinal; } public SelectOneDataModel<String> getComboPeriodoInicialPerioPAP() { if (comboPeriodoInicialPerioPAP == null) { comboPeriodoInicialPerioPAP = SelectOneDataModel .criaSemTextoInicial(this .converterExibicaoPerioPAP(perioPAPService .recuperaListaDePerioPAPs())); } return comboPeriodoInicialPerioPAP; } public SelectOneDataModel<String> getComboPeriodoFinalPerioPAP() { if (comboPeriodoFinalPerioPAP == null) { comboPeriodoFinalPerioPAP = SelectOneDataModel .criaSemTextoInicial(this .converterExibicaoPerioPAP(perioPAPService .recuperaListaDePerioPAPs())); } return comboPeriodoFinalPerioPAP; } public void setComboPeriodoInicial( SelectOneDataModel<String> comboPeriodoInicial) { this.comboPeriodoInicial = comboPeriodoInicial; } public void setComboPeriodoFinal( SelectOneDataModel<String> comboPeriodoFinal) { this.comboPeriodoFinal = comboPeriodoFinal; } public void setPaginaCorrente(String paginaCorrente) { this.paginaCorrente = paginaCorrente; } public String getPaginaCorrente() { switch (opcaoEscolhida) { case 0: paginaCorrente = "Altera��o de HP PMP"; break; case 1: paginaCorrente = "Altera��o de HP PAP"; break; case 2: paginaCorrente = "Altera��o de HP Demanda Modelo"; break; case 3: paginaCorrente = "Altera��o de HP Demanda Familia"; break; default: break; } return paginaCorrente; } public void setStatusPlanejamento(String statusPlanejamento) { this.statusPlanejamento = statusPlanejamento; } public String getStatusPlanejamento() { if (statusPlanejamento == null) { statusPlanejamento = (parametroCorrente.isInicPlanejamento() ? "Planejamento inicializado" : "Planejamento n�o inicializado"); } return statusPlanejamento; } /** * @return the aLTERA_PAP */ public String getALTERA_PAP() { return ALTERA_PAP; } }