Monday, October 21, 2013

CustomDao

package com.impetus.travelportal.daoimpl;

import java.io.Serializable;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import com.impetus.travelportal.models.Passenger;
import com.impetus.travelportal.util.HibernateUtil;

public class CustomDao {

    Session session = HibernateUtil.getSessionFactory().openSession();

    @SuppressWarnings("unchecked")
    public <E> E getUniqueResult(String hql, E obj, boolean commit) {
        try {
            if (!session.getTransaction().isActive()) {
                session.beginTransaction();
            } else {
                session.getTransaction();
            }
            obj = (E) session.createQuery(hql).uniqueResult();
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            return null;
        }
        if (commit) {
            session.getTransaction().commit();
        }
        return obj;
    }

    @SuppressWarnings("unchecked")
    public <E> E getResultList(String hql, E objList, boolean commit) {
        try {
            if (!session.getTransaction().isActive()) {
                session.beginTransaction();
            } else {
                session.getTransaction();
            }

            objList = (E) session.createQuery(hql).list();
        } catch (HibernateException e) {

            session.getTransaction().rollback();
            return null;
        }
        if (commit) {
            session.getTransaction().commit();
        }
        return objList;
    }

    public <E> E add(E object, boolean commit) {
        if (!session.getTransaction().isActive()) {
            session.beginTransaction();
        }
        try {
            session.save(object);
            if (commit) {
                session.getTransaction().commit();
            }
        } catch (HibernateException e) {

            session.getTransaction().rollback();
        }
        return object;
    }

    public <E> E delete(E obj, boolean commit) {
        try {
            if (!session.getTransaction().isActive()) {
                session.beginTransaction();
            }

            session.delete(obj);
        } catch (HibernateException e) {

            session.getTransaction().rollback();
        }
        if (commit) {
            session.getTransaction().commit();
        }

        return obj;
    }

    public <E> E update(E obj, boolean commit) {
        try {
            if (!session.getTransaction().isActive()) {
                session.beginTransaction();
            }
            session.saveOrUpdate(obj);
            if (commit) {
                session.getTransaction().commit();
            }
            return obj;
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            return null;
        }
    }

    @SuppressWarnings("unchecked")
    public String updateQuery(String hql, boolean commit) {
        try {
            if (!session.getTransaction().isActive()) {
                session.beginTransaction();
            } else {
                session.getTransaction();
            }
            session.createQuery(hql).executeUpdate();
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            return null;
        }
        if (commit) {
            session.getTransaction().commit();
        }
        return "updated";
    }
}