br.com.munif.bereja.repositorio.Repositorio.java Source code

Java tutorial

Introduction

Here is the source code for br.com.munif.bereja.repositorio.Repositorio.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.munif.bereja.repositorio;

import br.com.munif.bereja.entidades.Usuario;
import br.com.munif.bereja.entidades.util.Persistencia;
import br.com.munif.bereja.entidades.util.SuperEntidade;
import br.com.munif.util.AuditoriaRevisao;
import br.com.munif.util.RevisaoEObjeto;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import org.hibernate.envers.AuditReader;
import org.hibernate.envers.AuditReaderFactory;

/**
 *
 * @author munif
 */
public class Repositorio<T extends SuperEntidade> {

    protected Class<T> clazz;

    public Repositorio(Class<T> clazz) {
        this.clazz = clazz;
    }

    public List<T> consulta() {
        EntityManager em = Persistencia.getInstancia().getEntityManager();
        return em.createQuery("from " + clazz.getSimpleName()).getResultList();
    }

    public T consulta(long id) {
        EntityManager em = Persistencia.getInstancia().getEntityManager();
        return em.find(clazz, id);
    }

    public void excluir(T obj) {
        EntityManager em = Persistencia.getInstancia().getEntityManager();
        em.remove(obj);

    }

    public T salvar(T obj) {
        EntityManager em = Persistencia.getInstancia().getEntityManager();
        T aRetornar = em.merge(obj);
        return aRetornar;

    }

    public List<RevisaoEObjeto> listaVersoes(Long id) {
        List<RevisaoEObjeto> aRetornar = new ArrayList<>();
        AuditReader auditReader = AuditReaderFactory.get(Persistencia.getInstancia().getEntityManager());
        List<Number> revisoes = auditReader.getRevisions(clazz, id);
        for (Number n : revisoes) {
            AuditoriaRevisao auditoriaRevisao = Persistencia.getInstancia().getEntityManager()
                    .find(AuditoriaRevisao.class, n.longValue());
            Object object = auditReader.find(clazz, id, n.longValue());
            aRetornar.add(new RevisaoEObjeto(auditoriaRevisao, object));
        }
        return aRetornar;
    }

}