/* * * 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 java.util.List; import modelo.PerioPAP; import service.PerioPAPAppService; import service.PerioPMAppService; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; /** * * 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: * Executa a verificacao se os periodos paps existem, e agrupa-os de 2 em 2, para periodo pm. * * @author felipe.arruda * */ public class CargaEstudoAgrupaPeriodo extends CargaBase{ private static PerioPMAppService perioPMService; private static PerioPAPAppService perioPAPService; public CargaEstudoAgrupaPeriodo(){ try { perioPMService = FabricaDeAppService.getAppService(PerioPMAppService.class); perioPAPService = FabricaDeAppService.getAppService(PerioPAPAppService.class); } catch (Exception e) { e.printStackTrace(); } } /** * Executa a verificacao se os periodos paps existem, e agrupa-os de 2 em 2, para periodo pm. */ @Override public boolean executar() throws AplicacaoException { this.verificaPeriodosPAP(); this.agruparPeriodosPAP2a2(); return true; } /** * * metodo de auxilio que retorna true ou false se a lista de periodos pap for vazia ou n�o * True se n�o for vazia e false se for vazia. * @return */ public void verificaPeriodosPAP() throws AplicacaoException{ List<PerioPAP> ListaDePeriodosPAP = perioPAPService.recuperaListaDePerioPAPs(); if(ListaDePeriodosPAP.isEmpty()){ throw new AplicacaoException("Periodos PAP inexistentes."); } } /** * Agrupa periodo PAP de 2 em 2 perioPMs. * Verifica antes de o numero de perioPMs � divisivel por 2. * Se n�o, for joga exception * @throws AplicacaoException */ public void agruparPeriodosPAP2a2() throws AplicacaoException{ int numPerioPMs = perioPMService.recuperaListaDePerioPMs().size(); if(numPerioPMs % 2 != 0){ throw new AplicacaoException("Numero de periodos PM n�o compativel com agregador."); } perioPAPService.agrupaPerioPAPs(2); } }