package com.uas.platform.b2b.manage.page.criteria;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

/**
 * 条件表达式接口
 * 
 * @author yingp
 * 
 */
public interface CriterionExpression {

	public enum Operator {
		/**
		 * 等于
		 */
		EQ,
		/**
		 * 不等于
		 */
		NE,
		/**
		 * like
		 */
		LIKE,
		/**
		 * 大于
		 */
		GT,
		/**
		 * 小于
		 */
		LT,
		/**
		 * 大于等于
		 */
		GTE,
		/**
		 * 小于等于
		 */
		LTE,
		/**
		 * and
		 */
		AND,
		/**
		 * or
		 */
		OR,
		/**
		 * is null
		 */
		IS_NULL,
		/**
		 * is not null
		 */
		IS_NOT_NULL
	}

	public Predicate toPredicate(Root<?> root, CriteriaQuery<?> query, CriteriaBuilder builder);

}
