X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db%2Fsrc%2Forg%2Fsimantics%2Fdb%2Ffunction%2FDbPredicate.java;h=5157f529ef86c6c4bb38a423e5ba5dff797462c4;hb=54512ce682c4d11e4d119505be480a31560fa7e4;hp=3d4f678214b77cd45d675122601d5cbc500cbf29;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db/src/org/simantics/db/function/DbPredicate.java b/bundles/org.simantics.db/src/org/simantics/db/function/DbPredicate.java index 3d4f67821..5157f529e 100644 --- a/bundles/org.simantics.db/src/org/simantics/db/function/DbPredicate.java +++ b/bundles/org.simantics.db/src/org/simantics/db/function/DbPredicate.java @@ -1,109 +1,109 @@ -/******************************************************************************* - * Copyright (c) 2016 Association for Decentralized Information Management - * in Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Semantum Oy - initial API and implementation - *******************************************************************************/ -package org.simantics.db.function; - -import java.util.Objects; - -import org.simantics.db.exception.DatabaseException; - -/** - * Represents a predicate (boolean-valued function) of one argument that can - * throw database exceptions. - * - * @param - * the type of the input to the predicate - * - * @author Tuukka Lehtonen - * @since 1.22.1 & 1.24.0 - */ -@FunctionalInterface -public interface DbPredicate { - - /** - * Evaluates this predicate on the given argument. - * - * @param t the input argument - * @return {@code true} if the input argument matches the predicate, - * otherwise {@code false} - */ - boolean test(T t) throws DatabaseException; - - /** - * Returns a composed predicate that represents a short-circuiting logical - * AND of this predicate and another. When evaluating the composed - * predicate, if this predicate is {@code false}, then the {@code other} - * predicate is not evaluated. - * - *

Any exceptions thrown during evaluation of either predicate are relayed - * to the caller; if evaluation of this predicate throws an exception, the - * {@code other} predicate will not be evaluated. - * - * @param other a predicate that will be logically-ANDed with this - * predicate - * @return a composed predicate that represents the short-circuiting logical - * AND of this predicate and the {@code other} predicate - * @throws NullPointerException if other is null - */ - default DbPredicate and(DbPredicate other) { - Objects.requireNonNull(other); - return (t) -> test(t) && other.test(t); - } - - /** - * Returns a predicate that represents the logical negation of this - * predicate. - * - * @return a predicate that represents the logical negation of this - * predicate - */ - default DbPredicate negate() { - return (t) -> !test(t); - } - - /** - * Returns a composed predicate that represents a short-circuiting logical - * OR of this predicate and another. When evaluating the composed - * predicate, if this predicate is {@code true}, then the {@code other} - * predicate is not evaluated. - * - *

Any exceptions thrown during evaluation of either predicate are relayed - * to the caller; if evaluation of this predicate throws an exception, the - * {@code other} predicate will not be evaluated. - * - * @param other a predicate that will be logically-ORed with this - * predicate - * @return a composed predicate that represents the short-circuiting logical - * OR of this predicate and the {@code other} predicate - * @throws NullPointerException if other is null - */ - default DbPredicate or(DbPredicate other) { - Objects.requireNonNull(other); - return (t) -> test(t) || other.test(t); - } - - /** - * Returns a predicate that tests if two arguments are equal according - * to {@link Objects#equals(Object, Object)}. - * - * @param the type of arguments to the predicate - * @param targetRef the object reference with which to compare for equality, - * which may be {@code null} - * @return a predicate that tests if two arguments are equal according - * to {@link Objects#equals(Object, Object)} - */ - static DbPredicate isEqual(Object targetRef) { - return (null == targetRef) - ? Objects::isNull - : object -> targetRef.equals(object); - } - -} +/******************************************************************************* + * Copyright (c) 2016 Association for Decentralized Information Management + * in Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.db.function; + +import java.util.Objects; + +import org.simantics.db.exception.DatabaseException; + +/** + * Represents a predicate (boolean-valued function) of one argument that can + * throw database exceptions. + * + * @param + * the type of the input to the predicate + * + * @author Tuukka Lehtonen + * @since 1.22.1 & 1.24.0 + */ +@FunctionalInterface +public interface DbPredicate { + + /** + * Evaluates this predicate on the given argument. + * + * @param t the input argument + * @return {@code true} if the input argument matches the predicate, + * otherwise {@code false} + */ + boolean test(T t) throws DatabaseException; + + /** + * Returns a composed predicate that represents a short-circuiting logical + * AND of this predicate and another. When evaluating the composed + * predicate, if this predicate is {@code false}, then the {@code other} + * predicate is not evaluated. + * + *

Any exceptions thrown during evaluation of either predicate are relayed + * to the caller; if evaluation of this predicate throws an exception, the + * {@code other} predicate will not be evaluated. + * + * @param other a predicate that will be logically-ANDed with this + * predicate + * @return a composed predicate that represents the short-circuiting logical + * AND of this predicate and the {@code other} predicate + * @throws NullPointerException if other is null + */ + default DbPredicate and(DbPredicate other) { + Objects.requireNonNull(other); + return (t) -> test(t) && other.test(t); + } + + /** + * Returns a predicate that represents the logical negation of this + * predicate. + * + * @return a predicate that represents the logical negation of this + * predicate + */ + default DbPredicate negate() { + return (t) -> !test(t); + } + + /** + * Returns a composed predicate that represents a short-circuiting logical + * OR of this predicate and another. When evaluating the composed + * predicate, if this predicate is {@code true}, then the {@code other} + * predicate is not evaluated. + * + *

Any exceptions thrown during evaluation of either predicate are relayed + * to the caller; if evaluation of this predicate throws an exception, the + * {@code other} predicate will not be evaluated. + * + * @param other a predicate that will be logically-ORed with this + * predicate + * @return a composed predicate that represents the short-circuiting logical + * OR of this predicate and the {@code other} predicate + * @throws NullPointerException if other is null + */ + default DbPredicate or(DbPredicate other) { + Objects.requireNonNull(other); + return (t) -> test(t) || other.test(t); + } + + /** + * Returns a predicate that tests if two arguments are equal according + * to {@link Objects#equals(Object, Object)}. + * + * @param the type of arguments to the predicate + * @param targetRef the object reference with which to compare for equality, + * which may be {@code null} + * @return a predicate that tests if two arguments are equal according + * to {@link Objects#equals(Object, Object)} + */ + static DbPredicate isEqual(Object targetRef) { + return (null == targetRef) + ? Objects::isNull + : object -> targetRef.equals(object); + } + +}