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

cdc.enums.DagType Maven / Gradle / Ivy

package cdc.enums;

import java.util.List;

/**
 * Interface describing a DAG type.
 *
 * @author Damien Carbonne
 *
 * @param  The value type.
 */
public interface DagType extends ListType {

    /**
     * @return A list of root values.
     */
    public List getRoots();

    /**
     * Returns the children of a value.
     *
     * @param value The value.
     * @return The children of {@code value}
     */
    public List getChildren(V value);

    /**
     * Returns the parents of a value.
     *
     * @param value The value.
     * @return The parents of {@code value}
     */
    public List getParents(V value);

    /**
     * Returns {@code true} if a value is a root: it has no parents.
     *
     * @param value The value.
     * @return {@code true} if {@code value} is a root.
     */
    public default boolean isRoot(V value) {
        return getParents(value).isEmpty();
    }

    /**
     * Returns {@code true} when one value is a strict superset of another value.
     *
     * @param left The left value (potential superset).
     * @param right The right value.
     * @return {@code true} when {@code left} is a superset of {@code right}.
     */
    public boolean isStrictlyOver(V left,
                                  V right);

    /**
     * Returns {@code true} when one value is a superset of, or equal to, another value.
     *
     * @param left The left value (potential superset).
     * @param right The right value.
     * @return {@code true} when {@code left} is a superset of, or equal to, {@code right}.
     */
    public default boolean isOverOrEqual(V left,
                                         V right) {
        return areEqual(left, right) || isStrictlyOver(left, right);
    }

    /**
     * Returns {@code true} when one value is a strict subset of another value.
     *
     * @param left The left value (potential subset).
     * @param right The right value.
     * @return {@code true} when {@code left} is a subset of {@code right}.
     */
    public default boolean isStrictlyUnder(V left,
                                           V right) {
        return isStrictlyOver(right, left);
    }

    /**
     * Returns {@code true} when one value is a subset of, or equal to, another value.
     *
     * @param left The left value (potential superset).
     * @param right The right value.
     * @return {@code true} when {@code left} is a subset of, or equal to, {@code right}.
     */
    public default boolean isUnderOrEqual(V left,
                                          V right) {
        return areEqual(left, right) || isStrictlyUnder(left, right);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy