package org.hibernate.examples.hibernate.tools;
import org.hibernate.Criteria;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.data.domain.Sort;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* Criteria 빌드를 위한 Helper class
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 2013. 12. 4. 오후 11:31
*/
public final class CriteriaTool {
public static Criteria addIn(Criteria criteria, String propertyName, Collection<?> ids) {
return criteria.add(Restrictions.in(propertyName, ids));
}
public static Criteria addIn(Criteria criteria, String propertyName, Object[] ids) {
return criteria.add(Restrictions.in(propertyName, ids));
}
public static DetachedCriteria addIn(DetachedCriteria dc, String propertyName, Collection<?> ids) {
return dc.add(Restrictions.in(propertyName, ids));
}
public static DetachedCriteria addIn(DetachedCriteria dc, String propertyName, Object[] ids) {
return dc.add(Restrictions.in(propertyName, ids));
}
public static List<Order> toOrders(Sort sort) {
List<Order> orders = new ArrayList<Order>();
for (org.springframework.data.domain.Sort.Order order : sort) {
if (order.getDirection() == Sort.Direction.ASC)
orders.add(Order.asc(order.getProperty()));
else
orders.add(Order.desc(order.getProperty()));
}
return orders;
}
}