/* * * 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 service; import java.util.List; import service.anotacao.Transacional; import service.exception.AplicacaoException; import DAO.Impl.PerioPMDAOImpl; import DAO.Impl.CapacRecDAOImpl; import DAO.Impl.RecursoDAOImpl; import DAO.controle.FabricaDeDao; import DAO.exception.ObjetoNaoEncontradoException; import DAO.PerioPMDAO; import DAO.CapacRecDAO; import DAO.RecursoDAO; import modelo.CapacDia; import modelo.PerioPM; import modelo.CapacRec; import modelo.Recurso; public class CapacRecAppService { // DAOs private static CapacRecDAO capacRecDAO; private static PerioPMDAO perioPMDAO; private static RecursoDAO recursoDAO; @SuppressWarnings("unchecked") public CapacRecAppService() { try { // DAOs capacRecDAO = FabricaDeDao.getDao(CapacRecDAOImpl.class); perioPMDAO = FabricaDeDao.getDao(PerioPMDAOImpl.class); recursoDAO = FabricaDeDao.getDao(RecursoDAOImpl.class); } catch (Exception e) { e.printStackTrace(); // O comando a seguir s� ser� usado caso haja a cria��o de um service. // Exemplo: // Um Service A tem dentro de si a chamada de um Service B, s� que o Service B tamb�m tem // uma chamada para o Service A, logo um service chamaria o outro sem parar causando assim um loop infinito. // Contudo, em termos de uso do sistemas esse erro n�o ocorreria de forma clara, // pois a View seria carregada sem dados. // Para evitar que esse tipo de erro gere confus�es - como o usu�rio pensar que o banco foi perdido, por exemplo - // utilizamos o comando System.exit(1) que interrompe a aplica��o, deixando explicita a ocorr�ncia do erro. //System.exit(1); } } @Transacional public long inclui(CapacRec capacRec) throws AplicacaoException { long retorno = -1; CapacRec capacRecBD = null; // verifica se existe o recurso cadastrado try { recursoDAO.getPorIdComLock(capacRec.getRecurso().getId()); } catch(ObjetoNaoEncontradoException e) { throw new AplicacaoException("recurso.NAO_ENCONTRADO"); } // verifica se existe o perioPM cadastrado try { perioPMDAO.getPorIdComLock(capacRec.getPerioPM().getId()); } catch(ObjetoNaoEncontradoException e) { throw new AplicacaoException("perioPM.NAO_ENCONTRADO"); } // verifica se o recurso j� esta relacionado com este perioPM try { capacRecBD = capacRecDAO.recuperaCapacRecPorRecursoEPerioPM(capacRec.getRecurso(), capacRec.getPerioPM()); throw new AplicacaoException("capacRec.ENCONTRADO_PERIOPM"); } catch (ObjetoNaoEncontradoException ob) { //o recurso e o perioPM serao setados no iniciaPlanejamento do HPAppService, que � o responsavel pela inclusao retorno = capacRecDAO.inclui(capacRec).getId(); } return retorno; } @Transacional public void altera(CapacRec capacRec) { capacRecDAO.altera(capacRec); } /** * Alteracao da capacidade em todos os registros a partir * da variavel capacidadePadrao informada pelo usuario **/ @Transacional public void alteraCapacPadrao(Recurso recursoCorrente, double capacidadePadrao) { List<CapacRec> listaDeCapacRecs = capacRecDAO.recuperaListaDeCapacRecsPorRecurso(recursoCorrente); for(CapacRec capacRec : listaDeCapacRecs){ capacRec.setCapacDiaria(capacidadePadrao); altera(capacRec); } } /** * VERIFICAR SE ESTA FUNCIONAL */ @Transacional public void exclui(CapacRec umCapacRec) throws AplicacaoException { CapacRec capacRec = null; try { capacRec = capacRecDAO.getPorIdComLock((umCapacRec.getId())); } catch (ObjetoNaoEncontradoException e) { throw new AplicacaoException("capacRec.NAO_ENCONTRADO"); } capacRecDAO.exclui(capacRec); } /** * Usa um m�todo do DAO para recuperar um CapacRec juntamente com o seu perioPM * * @author dayse.arruda * @throws AplicacaoException */ public CapacRec recuperaCapacRecComPerioPM(CapacRec capacRec) throws AplicacaoException { try { return capacRecDAO.recuperaCapacRecComPerioPM(capacRec); } catch (ObjetoNaoEncontradoException e) { throw new AplicacaoException("capacRec.NAO_ENCONTRADO"); } } public CapacRec recuperaCapacRecPorRecursoEPerioPM(Recurso recurso, PerioPM perioPM) throws AplicacaoException { try { return capacRecDAO.recuperaCapacRecPorRecursoEPerioPM(recurso, perioPM); } catch (ObjetoNaoEncontradoException e) { throw new AplicacaoException("capacRec.NAO_ENCONTRADO"); } } public List<CapacRec> recuperaListaDeCapacRecsPorRecurso(Recurso recurso) throws AplicacaoException { List<CapacRec> capacRecs = capacRecDAO.recuperaListaDeCapacRecsPorRecurso(recurso); if (capacRecs.size() == 0) { throw new AplicacaoException("capacRec.NAO_ENCONTRADO"); } else { return capacRecs; } } /** * * Usa CapacRecDAO para recuperar lista de todos os CapacRecs. Retorna um List * de CapacRecs * * @author felipe.arruda * @throws AplicacaoException */ public List<CapacRec> recuperaListaDeCapacRecs() throws AplicacaoException { List<CapacRec> capacRecs = capacRecDAO.recuperaListaDeCapacRecs(); if (capacRecs.size() == 0) { throw new AplicacaoException("capacRec.NAO_ENCONTRADO"); } else { return capacRecs; } } public List<CapacRec> recuperaListaDeCapacRecsComPerioPMs () { return capacRecDAO.recuperaListaDeCapacRecsComPerioPMs(); } public List<CapacRec> recuperaListaDeCapacRecsComRecursosEPerioPMs () { return capacRecDAO.recuperaListaDeCapacRecsComRecursosEPerioPMs(); } }