package io.robe.hibernate.criteria.query; /** * Holds Query Operators as Enum */ public enum Operator { /** * Holds "equals" operator ( = ) to operate on all types */ EQUALS("="), /** * Holds "not equals" operator ( != ) to operate on {@link String} or {@link Number} types */ NOT_EQUALS("!="), /** * Holds "less than operator" ( < ) to operate on {@link String} or {@link Number} types */ LESS_THAN("<"), /** * Holds "less than or equals operator" ( <= ) to operate on number types */ LESS_OR_EQUALS_THAN("<="), /** * Holds "greater than operator" ( > ) to operate on number types */ GREATER_THAN(">"), /** * Holds "greater than or equals operator" ( >= ) to operate on {@link Number} types */ GREATER_OR_EQUALS_THAN(">="), /** * Holds "contains" ( ~= ) to operate on {@link String} types. In SQL its LIKE command */ CONTAINS("~="), /** * Holds "q" ( _ ) to operate on {@link String} types. In SQL its LIKE command and it used to search without field names. */ Q("_q"), /** * Holds "in" ( |= ) operator to operate on @{@link io.robe.common.utils.Collections} types. */ IN("|="), IS_NULL("IS NULL"), IS_NOT_NULL("IS_NOT_NULL"), AND("&&"), OR("||"); /** * Holds operator as {@link String} */ private String value; /** * * @param value */ Operator(String value) { this.value = value; } /** * gets Operator as {@link String} * @return */ public String value() { return value; } /** * gets Operator as {@link Operator} enum type * @param value * @return */ public static Operator value(String value){ for(Operator operator: Operator.values()) { if(operator.value().equals(value)) { return operator; } } throw new RuntimeException("Value not found in " + Operator.class.getName()) ; } }