/*
*
* 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 modelo.TipoUsuario;
import service.anotacao.Transacional;
import service.exception.AplicacaoException;
import DAO.TipoUsuarioDAO;
import DAO.Impl.TipoUsuarioDAOImpl;
import DAO.controle.FabricaDeDao;
import DAO.exception.ObjetoNaoEncontradoException;
/**
*
* TipoUsuarioAppService � uma classe de servi�o que possui as regras de neg�cio para manipular inicialmente
* a entidade TipoUsuario. Estas manipula��es incluem quando necess�rio chamadas as interfaces DAOs e
* acessos a informa��es do BD.
*
* A classe TipoUsuarioAppService fora criada para atender ao Padr�o MVC, Model Vision Control , sendo a mesma uma
* classe de servi�o que � capaz de efetuar: controle de transa��o, ou seja esta classe possui o recurso de
* abrir transa�ao, commitar e fechar uma transa�ao atrav�s de um interceptador de servi�o.
* Neste interceptador ser� definido se o m�todo � transacional ou n�o e em fun��o desta informa��o
* o interceptador ir� usar ou n�o uma transa��o.
*
* @author marques.araujo
*
*/
public class TipoUsuarioAppService {
// DAOs
private TipoUsuarioDAO tipoUsuarioDAO;
public TipoUsuarioAppService() {
try {
// DAOs
tipoUsuarioDAO = FabricaDeDao.getDao(TipoUsuarioDAOImpl.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 void inclui(TipoUsuario tipoUsuario) {
try {
tipoUsuarioDAO.recuperaTipoUsuarioPorTipo(tipoUsuario.getTipoUsuario());
} catch (ObjetoNaoEncontradoException e) {
tipoUsuarioDAO.inclui(tipoUsuario);
}
}
public TipoUsuario recuperaTipoUsuarioAdministrador() throws AplicacaoException {
try {
return tipoUsuarioDAO.recuperaTipoUsuarioPorTipo(TipoUsuario.ADMINISTRADOR);
} catch (ObjetoNaoEncontradoException e) {
throw new AplicacaoException("tipoUsuario.NAO_ENCONTRADO");
}
}
public List<TipoUsuario> recuperaListaDeTipoUsuario(){
return tipoUsuarioDAO.recuperaListaDeTipoUsuario();
}
}