package beansessao;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import beanentidade.UnidadeMedida;
import util.MyClassException;
@Stateless(name = "UnidadeMedidaDAOImpl")
public class UnidadeMedidaDAOImpl implements UnidadeMedidaDAO {
/*
* A anottation @PersistenceContext, da especifica��o JPA, realiza uma
* inje��o de depend�ncia. O container EJB reconhece a anota��o e
* automaticamente, injeta um objeto do tipo EntityManager no atributo
* manager.
*/
@PersistenceContext(unitName = "livro")
private EntityManager manager;
/** FORNECE A CONEXAO COM O BANCO DE DADOS (EQUILAVENTE A CONEXAO JDBC) */
public void incluir(UnidadeMedida unidade) throws MyClassException {
try {
manager.persist(unidade);
} catch (Exception e) {
MyClassException m = new MyClassException(
"Problemas ao gerar Unidade de Medida.");
throw m;
}
}
//@PersistenceContext(unitName = "livro")
public List<UnidadeMedida> getLista() throws MyClassException {
System.out.println("------------------------ PASSO 3------");
Query query = null;
System.out.println("------------------------ PASSO 3.1");
query = manager.createQuery("SELECT p FROM UnidadeMedida as p");
List<UnidadeMedida> listaUnidade = query.getResultList();
if (listaUnidade.size() == 0) {
throw new MyClassException("Nenhuma unidade cadastrada.");
}
System.out.println("------------------------ PASSO 4");
return listaUnidade;
}
public UnidadeMedida obter(int id) throws MyClassException {
UnidadeMedida unidadeMedida = manager.find(UnidadeMedida.class, id);
if (unidadeMedida == null) {
throw new MyClassException("Unidade n�o cadastrada.");
}
return unidadeMedida;
}
public void excluir(int codigo) throws MyClassException {
UnidadeMedida un = obter(codigo);
manager.remove(un);
}
public void alterar(UnidadeMedida unidade) throws MyClassException {
System.out.println("Alterado no banco de dados");
try{
unidade = manager.merge(unidade);
manager.getTransaction().commit();
manager.refresh(unidade);
} catch (Exception e) {
MyClassException m = new MyClassException(
"Problemas ao alterar Unidade de Medida.");
e.printStackTrace();
throw m;
}
}
}