package com.zelfs.itbeganin.dao.impl; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.hibernate.Criteria; import org.hibernate.LockMode; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.zelfs.itbeganin.BusinessObject; import com.zelfs.itbeganin.dao.BusinessObjectDao; public class BusinessObjectDaoHibernateImpl extends HibernateDaoSupport implements BusinessObjectDao { protected final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory .getLog(getClass()); public void save(BusinessObject entity) { getHibernateTemplate().save(entity); } public void saveOrUpdate(BusinessObject entity) { getHibernateTemplate().saveOrUpdate(entity); } public BusinessObject merge(BusinessObject entity) { return (BusinessObject) getHibernateTemplate().merge(entity); } public void delete(BusinessObject entity) { getHibernateTemplate().delete(entity); } public void deleteById(Class boClass, Serializable id) { delete(findById(boClass, id)); } @SuppressWarnings("unchecked") public T findById(Class boClass, Serializable id) { return (T) getSession().get(boClass, id); } @SuppressWarnings("unchecked") public Iterator iterate(Class boClass) { return getHibernateTemplate().iterate("from " + boClass.getName()); } @SuppressWarnings("unchecked") public List list(Class boClass) { Criteria criteria = getSession().createCriteria(boClass); return criteria.list(); } @SuppressWarnings("unchecked") public List list(Class boClass, Order order) { Criteria criteria = getSession().createCriteria(boClass); criteria.addOrder(order); return criteria.list(); } public int count(Class boClass){ Criteria criteria = getSession().createCriteria(boClass); criteria.setProjection(Projections.rowCount()); return (Integer)criteria.list().get(0); } @SuppressWarnings("unchecked") public List list(Class boClass, Criterion criterion, List orders) { Criteria criteria = getSession().createCriteria(boClass); criteria.add(criterion); for (Order order : orders) { criteria.addOrder(order); } List list = criteria.list(); return list; } public List list(Class boClass, Criterion criterion, Order order) { List criterions = new ArrayList(); List orders = new ArrayList(); criterions.add(criterion); if (order!=null) { orders.add(order); } return list(boClass, criterion, orders); } public List list(Class boClass, Criterion criterion) { return list(boClass, criterion, new ArrayList()); } public void delete(Collection entities) { for (BusinessObject object : entities) { delete(object); } } public void save(Collection entities) { for (BusinessObject object : entities) { save(object); } } public Iterator iterate(Class boClass, int first, int count, String property, boolean ascending) { return list(boClass, first, count, property, ascending).iterator(); } @SuppressWarnings("unchecked") public List list(Class boClass, int first, int count, String property, boolean ascending) { Criteria crit = getSession().createCriteria(boClass); Order order; if(ascending) order = Order.asc(property); else order = Order.desc(property); crit.addOrder(order); crit.setFirstResult(first); crit.setMaxResults(count); return crit.list(); } public void update(BusinessObject bo) { getHibernateTemplate().update(bo); } /** * Reattachs an object to an open session. */ public void reattach( BusinessObject model ){ getSession().refresh( model, LockMode.NONE ); } }