Subversion Repositories bacoAlunos

Rev

Rev 1310 | Rev 1782 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.utl.ist.berserk.storage.hibernate;

import jomm.dao.utils.HibernateUtils;
import org.hibernate.LockMode;
import org.hibernate.Session;
import org.hibernate.Transaction;
import pt.utl.ist.berserk.storage.ITransactionBroker;
import pt.utl.ist.berserk.storage.exceptions.StorageException;

import java.util.List;

/**
 * Creates an hibernate transaction
 *
 * @author Jorge Machado
 *
 *
 * Created at 19/Out/2003 , 14:56:47
 *
 */

public class HibernateTransactionBroker implements ITransactionBroker
{
    private static HibernateTransactionBroker instance;

    private HibernateTransactionBroker()
        {
    }

    public static HibernateTransactionBroker getInstance()
    {
        if(instance == null)
            instance = new HibernateTransactionBroker();
        return instance;
    }


    @1.5.0/docs/api/java/lang/Override.html">Override
    public boolean isTransactionActive() throws StorageException {
        return HibernateUtils.getCurrentSession().getTransaction().isActive();
    }

    public void beginTransaction() throws StorageException
    {
        if(HibernateUtils.getCurrentSession().getTransaction().isActive())
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println(">>>>>>TRANSACTION PROBLEM: AVISO: Já existia uma transação activa e foi iniciada outra neste momento sem fechar a anterior ");
            for (1.5.0/docs/api/java/lang/StackTraceElement.html">StackTraceElement ste : 1.5.0/docs/api/java/lang/Thread.html">Thread.currentThread().getStackTrace()) {
                1.5.0/docs/api/java/lang/System.html">System.out.println("\t" + ste);
            }
        }
        HibernateUtils.getCurrentSession().beginTransaction();
    }

    public void commitTransaction() throws StorageException
        {
        HibernateUtils.getCurrentSession().getTransaction().commit();
//        HibernateUtils.getCurrentSession().close();

    }

    public void abortTransaction() throws StorageException
        {
        Session sess = HibernateUtils.getCurrentSession();
        Transaction t = sess.getTransaction();
        t.rollback();
//        sess.close();
    }

    public void lockRead(5+0%2Fdocs%2Fapi+List">List list) throws StorageException
        {
        for(5+0%2Fdocs%2Fapi+Object">Object obj: list)
        {
            lockRead(obj);
        }
    }
   
    public void lockRead(5+0%2Fdocs%2Fapi+Object">Object obj) throws StorageException
        {
        HibernateUtils.getCurrentSession().lock(obj, LockMode.READ);
    }

    public void lockWrite(5+0%2Fdocs%2Fapi+Object">Object obj) throws StorageException
        {
        HibernateUtils.getCurrentSession().lock(obj, LockMode.WRITE);
    }
}