/*
*
* 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.ArrayList;
//import java.util.List;
import java.util.List;
import modelo.HP;
import modelo.PerioPAP;
import modelo.PerioPM;
import service.HPAppService;
import service.PerioPAPAppService;
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:
* Define um novo HP, visto que o periodo foi defasado.
* recupera os primeiros e os outimos perioPMs e perioPAPs
* e define o novo hp para eles.
* Depois inicializa esse hp
*
* @author felipe.arruda e bruno.oliveira
*
*/
public class CargaEstudoDefineNovoHP extends CargaBase{
private static PerioPAPAppService perioPAPService;
private static HPAppService hpService;
private PerioPM perioPMInicial;
private PerioPM perioPMFinal;
private PerioPAP perioPAPInicial;
private PerioPAP perioPAPFinal;
private HP hp = new HP();
public CargaEstudoDefineNovoHP(){
try {
perioPAPService = FabricaDeAppService.getAppService(PerioPAPAppService.class);
hpService = FabricaDeAppService.getAppService(HPAppService.class);
} catch (Exception e) {
e.printStackTrace();
}
List<HP> lista = hpService.recuperaListaDeHP();
if (!lista.isEmpty()) {
hp = lista.get(0);
}
}
/**
* recupera os primeiros e os outimos perioPMs e perioPAPs
* e define o novo hp para eles.
* Depois inicializa esse hp
*/
@Override
public boolean executar() throws AplicacaoException {
this.preparaPeriodos();
this.defineNovoHP();
this.inicializaPlanejamento();
return true;
}
/**
*
* recupera os primeiros e os outimos perioPMs e perioPAPs
* @throws AplicacaoException
*/
public void preparaPeriodos() throws AplicacaoException {
int periodoPAPFinal = perioPAPService.recuperaListaDePerioPAPs().size();
//recupera os paps e depois os pms deles
perioPAPInicial = perioPAPService.recuperaPerioPAPPorPeriodoPAP(1);
perioPAPFinal = perioPAPService.recuperaPerioPAPPorPeriodoPAP(periodoPAPFinal);
perioPMInicial = perioPAPService.obtemPrimeiroPerioPMdoPerioPAP(perioPAPInicial);
perioPMFinal = perioPAPService.obtemUltimoPerioPMdoPerioPAP(perioPAPFinal);
}
/**
* define um novo hp para os peridos recuperados
* @throws AplicacaoException
*/
public void defineNovoHP() throws AplicacaoException {
hp.setPerioPMInicPMP(perioPMInicial);
hp.setPerioPMFinalPMP(perioPMFinal);
hp.setPerioPMInicDemMod(perioPMInicial);
hp.setPerioPMFinalDemMod(perioPMFinal);
hp.setPerioPAPInicPAP(perioPAPInicial);
hp.setPerioPAPFinalPAP(perioPAPFinal);
hp.setPerioPAPInicDemFam(perioPAPInicial);
hp.setPerioPAPFinalDemFam(perioPAPFinal);
if (hp.getId() == null) {
hpService.inclui(hp);
} else {
hpService.altera(hp);
}
}
/**
* inicializa o planejamento
* @throws AplicacaoException
*/
public void inicializaPlanejamento() throws AplicacaoException{
hpService.iniciaPlanejamento();
}
}