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

com.github.rutledgepaulv.qbuilders.properties.concrete.StringProperty Maven / Gradle / Ivy

package com.github.rutledgepaulv.qbuilders.properties.concrete;

import com.github.rutledgepaulv.qbuilders.builders.QBuilder;
import com.github.rutledgepaulv.qbuilders.conditions.Condition;
import com.github.rutledgepaulv.qbuilders.properties.virtual.EquitableProperty;
import com.github.rutledgepaulv.qbuilders.properties.virtual.ListableProperty;

/**
 * A property view for fields with {@link String} values.
 *
 * @param  The type of the final builder.
 */
public interface StringProperty> extends EquitableProperty, ListableProperty {

    /**
     * Mandates that the value of the field must occur after the provided value
     * when sorted lexicographically.
     *
     * @param value The string that the value must occur after.
     * @return The logically complete condition.
     */
    Condition lexicallyAfter(String value);

    /**
     * Mandates that the value of the field must occur before the provided value
     * when sorted lexicographically.
     *
     * @param value The string that the value must occur before.
     * @return The logically complete condition.
     */
    Condition lexicallyBefore(String value);

    /**
     * Mandates that the value of the field must be equal to or occur before the provided value
     * when sorted lexicographically.
     *
     * @param value The string that the value must occur before or be equal to.
     * @return The logically complete condition.
     */
    Condition lexicallyNotAfter(String value);

    /**
     * Mandates that the value of the field must be equal to or occur after the provided value
     * when sorted lexicographically.
     *
     * @param value The string that the value must occur after or be equal to.
     * @return The logically complete condition.
     */
    Condition lexicallyNotBefore(String value);

    /**
     * Mandates that the value of the field must match the regular expression provided
     * in the form of a string pattern. The particular regex implementation is determined
     * by the backend visitor that is used. No normalization is done in order to ensure
     * that the regex string works across each backend the same way, so you'll need to take
     * care to use the right pattern against the right backend.
     *
     * @param pattern The regular expression to used, expressed as a string in the format expected
     *                by whichever backend visitor you plan to use to build the query.
     * @return The logically complete condition.
     */
    Condition pattern(String pattern);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy