All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.srplib.criteria.Criteria Maven / Gradle / Ivy

package org.srplib.criteria;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * A factory class containing static factory methods simplifying creation of {@link Criterion} objects.
 *
 * 

* Usage example: *

 *  // Let's create Criterion for the following expression:
 *  // NOT (p1 = v1 AND p2 <= v2 AND p3 = v3) AND (p1 = v1 OR p2 < v2 OR p3 > v3)
 *  // the same in Java:
 *  // !(p1 = v1 && p2 <= v2 && p3 = v3) && (p1 = v1 || p2 < v2 || p3 > v3)
 *
 *  Criterion criterion = Criteria.and(
 *      Criteria.not(
 *          Criteria.and(
 *              Criteria.eq("p1", "v1"),
 *              Criteria.le("p2", "v2"),
 *              Criteria.eq("p3", "v3")
 *          )
 *      ),
 *      Criteria.or(
 *          Criteria.eq("p1", "v1"),
 *          Criteria.ls("p2", "v2"),
 *          Criteria.gt("p3", "v3")
 *      )
 *  );
 *
 *  // or even simpler with static imports:
 *
 *  Criterion criterion = and(
 *      not(
 *          and(
 *              eq("p1", "v1"),
 *              le("p2", "v2"),
 *              eq("p3", "v3")
 *          )
 *      ),
 *      or(
 *          eq("p1", "v1"),
 *          ls("p2", "v2"),
 *          gt("p3", "v3")
 *      )
 *  );
 *
 * 
*

* * @author Anton Pechinsky */ public class Criteria { /** * Creates criterion using explicit operation object. * *
     *     Criteria.create("name", Operation.EQUALS, "Mike");
     * 
* * @param property String property name * @param operation Operation a relationship between property and value * @param value Object property value. * @return Criterion a criterion */ public static Criterion create(String property, Operation operation, Object value) { return new SimpleCriterion(property, operation, value); } /** * Equals criterion. * *

Operation: {@link Operation#EQUALS}

* * @param property String property name * @param value Object property value. * @return Criterion strict equality */ public static Criterion eq(String property, Object value) { return create(property, Operation.EQUALS, value); } /** * Not eq criterion. * * @param property String property name * @param value Object property value. * @return Criterion not eq */ public static Criterion ne(String property, Object value) { return not(eq(property, value)); } /** * Greater criterion. * *

Operation: {@link Operation#GREATER}

* * @param property String property name * @param value Object property value. * @return Criterion greater */ public static Criterion gt(String property, Object value) { return create(property, Operation.GREATER, value); } /** * Greater or eq criterion. * *

Operation: {@link Operation#GREATER_EQUALS}

* * @param property String property name * @param value Object property value. * @return Criterion greater or eq. */ public static Criterion ge(String property, Object value) { return create(property, Operation.GREATER_EQUALS, value); } /** * Less or eq criterion. * *

Operation: {@link Operation#LESS}

* * @param property String property name * @param value Object property value. * @return Criterion ls. */ public static Criterion ls(String property, Object value) { return create(property, Operation.LESS, value); } /** * Less or eq criterion. * *

Operation: {@link Operation#LESS_EQUALS}

* * @param property String property name * @param value Object property value. * @return Criterion ls or eq. */ public static Criterion le(String property, Object value) { return create(property, Operation.LESS_EQUALS, value); } /** * Adds not to specified criterion. * *

Operation: {@link JunctionType#NOT}

* * @param criterion Criterion source criterion * @return Criterion not criterion */ public static Criterion not(Criterion criterion) { return new Junction(JunctionType.NOT, Collections.singletonList(criterion)); } /** * Joins specified criteria using {@link JunctionType#AND} operator. * * @param criteria List a list of Criterion to join * @return Criterion joined criteria */ public static Criterion and(List criteria) { return new Junction(JunctionType.AND, criteria); } /** * Joins specified criteria using {@link JunctionType#AND} operator. * * @param criteria vararg Criterion parameter * @return Criterion joined criteria */ public static Criterion and(Criterion... criteria) { return and(Arrays.asList(criteria)); } /** * Joins specified criteria using {@link JunctionType#OR} operator. * * @param criteria List a list of Criterion to join * @return Criterion joined criteria */ public static Criterion or(List criteria) { return new Junction(JunctionType.OR, criteria); } /** * Joins specified criteria using {@link JunctionType#OR} operator. * * @param criteria vararg Criterion parameter * @return Criterion joined criteria */ public static Criterion or(Criterion... criteria) { return or(Arrays.asList(criteria)); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy