/* * * 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 carga; import modelo.DeModPer; import modelo.PerioPM; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import service.DeModPerAppService; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; import DAO.PerioPMDAO; import DAO.Impl.PerioPMDAOImpl; import DAO.controle.FabricaDeDao; import DAO.exception.ObjetoNaoEncontradoException; /** * * Sobre a Carga: * � uma Carga do sistema, portanto deve herdar de CargaBase e * implementar o m�todo executar(). * Nesse m�todo executar � que � chamado os outros m�todos que s�o * as et�pas dessa carga. * Portanto se � necessario rodar um m�todo depois do outro, eles devem ser chamados * na ordem correta. Ex: * incluiHP() vem antes de inicializaHP(), portanto no m�todo executar() eles devem ser chamados nessa ordem. * * Terminado de executar todas as etapas � preciso retornar true. * Se houver algum problema(exce��o) na execu��o de um das etapas, essa exce��o deve ser lancada * * Essa Carga: * Prepara os periodos para as alteracoes; * Altera as demandas do ultimo periodo para ficarem iguais das demandas do periodo anterior * * @author felipe.arruda * */ public class CargaEstudoAlteraDemandaDePeriodo extends CargaBase{ private static PerioPMDAO perioPMDAO; private static DeModPerAppService deModPerService; private PerioPM perioPM; private PerioPM perioPMAnterior; public CargaEstudoAlteraDemandaDePeriodo() { try { perioPMDAO = FabricaDeDao.getDao(PerioPMDAOImpl.class); deModPerService = FabricaDeAppService.getAppService(DeModPerAppService.class); } catch (Exception e) { e.printStackTrace(); } } /** * Prepara os periodos para as alteracoes; * Altera as demandas do ultimo periodo para ficarem iguais das demandas do periodo anterior */ @Override public boolean executar() throws AplicacaoException { this.preparaPeriodos(); this.alterarDemandasUltimoPeriodo(); return true; } public void preparaPeriodos() throws AplicacaoException{ try{ //pega o ultimo periodo da lista de periopms int periodoPMFinal = perioPMDAO.recuperaListaDePerioPMs().size(); perioPM = perioPMDAO.recuperaPerioPMPorPeriodoPM(periodoPMFinal); //recupera o ultimo periodo junto com os demodpers. perioPM = perioPMDAO.recuperaPerioPMComDeModPers(perioPM); //recupera informacoes sobre o periodo anterior perioPMAnterior = perioPMDAO.recuperaPerioPMPorPeriodoPM(periodoPMFinal-1); perioPMAnterior = perioPMDAO.recuperaPerioPMComDeModPers(perioPMAnterior); }catch (ObjetoNaoEncontradoException e) { throw new AplicacaoException(e); } } /** * Altera as demandas do ultimo periodo para ficarem iguais das demandas do periodo anterior */ public void alterarDemandasUltimoPeriodo(){ //percorre a lista de demod for(int i=0;i<perioPM.getDeModPers().size();i++){ DeModPer atual = perioPM.getDeModPers().get(i); DeModPer anterior = perioPMAnterior.getDeModPers().get(i); //coloca os pedidos do modelo atual como sendo do mesmo modelo, mas do periodo anterior. atual.setPedidosModelo(anterior.getPedidosModelo()); //coloca os vendas do modelo atual como sendo do mesmo modelo, mas do periodo anterior. atual.setVendasProjetadasModelo(anterior.getVendasProjetadasModelo()); deModPerService.altera(atual); } } }