package org.hivedb.hibernate.simplified.session; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.*; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projection; import org.hibernate.criterion.Restrictions; import org.hibernate.transform.ResultTransformer; import org.hivedb.util.classgen.ReflectionTools; import java.io.Serializable; import java.util.List; public class HiveCriteriaImpl implements HiveCriteria, Serializable { private final static Log log = LogFactory.getLog(HiveCriteriaImpl.class); private Criteria criteria; private Class<?> clazz; public HiveCriteriaImpl(Criteria criteria, Class<?> clazz) { this.criteria = criteria; this.clazz = clazz; } public Criteria addRangeRestriction(String propertyName, Object minValue, Object maxValue) { if (ReflectionTools.isComplexCollectionItemProperty(clazz, propertyName)) { criteria.createCriteria(propertyName).add(Restrictions.between("id", minValue, maxValue)); } else { criteria.add(Restrictions.between(propertyName, minValue, maxValue)); } return this; } public String getAlias() { return criteria.getAlias(); } public Criteria setProjection(Projection projection) { criteria.setProjection(projection); return this; } public Criteria add(Criterion criterion) { criteria.add(criterion); return this; } public Criteria addOrder(Order order) { criteria.addOrder(order); return this; } public Criteria setFetchMode(String s, FetchMode fetchMode) { criteria.setFetchMode(s, fetchMode); return this; } public Criteria setLockMode(LockMode lockMode) { criteria.setLockMode(lockMode); return this; } public Criteria setLockMode(String s, LockMode lockMode) { criteria.setLockMode(s, lockMode); return this; } public Criteria createAlias(String s, String s1) { return criteria.createAlias(s, s1); } public Criteria createAlias(String s, String s1, int i) { return criteria.createAlias(s, s1, i); } public Criteria createCriteria(String s) { return criteria.createCriteria(s); } public Criteria createCriteria(String s, int i) { return criteria.createCriteria(s, i); } public Criteria createCriteria(String s, String s1) { return criteria.createCriteria(s, s1); } public Criteria createCriteria(String s, String s1, int i) { return criteria.createCriteria(s, s1, i); } public Criteria setResultTransformer(ResultTransformer resultTransformer) { criteria.setResultTransformer(resultTransformer); return this; } public Criteria setMaxResults(int i) { criteria.setMaxResults(i); return this; } public Criteria setFirstResult(int i) { criteria.setFirstResult(i); return this; } public Criteria setFetchSize(int i) { criteria.setFetchSize(i); return this; } public Criteria setTimeout(int i) { criteria.setTimeout(i); return this; } public Criteria setCacheable(boolean b) { criteria.setCacheable(b); return this; } public Criteria setCacheRegion(String s) { criteria.setCacheRegion(s); return this; } public Criteria setComment(String s) { criteria.setComment(s); return this; } public Criteria setFlushMode(FlushMode flushMode) { criteria.setFlushMode(flushMode); return this; } public Criteria setCacheMode(CacheMode cacheMode) { criteria.setCacheMode(cacheMode); return this; } public List list() throws HibernateException { return criteria.list(); } public ScrollableResults scroll() { return criteria.scroll(); } public ScrollableResults scroll(ScrollMode scrollMode) { return criteria.scroll(scrollMode); } public Object uniqueResult() throws HibernateException { return criteria.uniqueResult(); } }