## Uses of Interface
org.optaplanner.core.api.score.stream.penta.PentaJoiner

- Packages that use PentaJoiner
  Package | Description
  --- | ---
  org.optaplanner.core.api.score.stream |
  org.optaplanner.core.api.score.stream.quad | The `ConstraintStream` API for four matched facts.
  org.optaplanner.core.impl.score.stream.drools.common |
  org.optaplanner.core.impl.score.stream.drools.quad |
  org.optaplanner.core.impl.score.stream.penta |

- - ### Uses of PentaJoiner in org.optaplanner.core.api.score.stream

    Methods in org.optaplanner.core.api.score.stream that return PentaJoiner
    Modifier and Type | Method | Description
    --- | --- | ---
    `static <A,​B,​C,​D,​E,​Property_> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`equal​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | Joins every (A,B,C,D) and E that share a property.
    `static <A,​B,​C,​D,​E> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`filtering​(PentaPredicate<A,​B,​C,​D,​E> filter)` |
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`greaterThan​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | Joins every (A,B,C,D) and E where a value of property of (A,B,C,D) is greater than the value of a property of E.
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`greaterThanOrEqual​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | Joins every (A,B,C,D) and E where a value of property of (A,B,C,D) is greater than or equal to the value of a property of E.
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`lessThan​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | Joins every (A,B,C,D) and E where a value of property of (A,B,C,D) is less than the value of a property of E.
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`lessThanOrEqual​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | Joins every (A,B,C,D) and E where a value of property of (A,B,C,D) is less than or equal to the value of a property of E.
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`overlapping​(QuadFunction<A,​B,​C,​D,​Property_> leftStartMapping, QuadFunction<A,​B,​C,​D,​Property_> leftEndMapping, Function<E,​Property_> rightStartMapping, Function<E,​Property_> rightEndMapping)` | As defined by `Joiners.overlapping(Function, Function)`.

  - ### Uses of PentaJoiner in org.optaplanner.core.api.score.stream.quad

    Methods in org.optaplanner.core.api.score.stream.quad with parameters of type PentaJoiner
    Modifier and Type | Method | Description
    --- | --- | ---
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner)` | Create a new `BiConstraintStream` for every tuple of A, B, C and D where E exists for which the `PentaJoiner` is true (for the properties it extracts from the facts).
    `<E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E>... joiners)` | As defined by `QuadConstraintStream.ifExists(Class, PentaJoiner)`.
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner1, PentaJoiner<A,​B,​C,​D,​E> joiner2)` | As defined by `QuadConstraintStream.ifExists(Class, PentaJoiner)`.
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner1, PentaJoiner<A,​B,​C,​D,​E> joiner2, PentaJoiner<A,​B,​C,​D,​E> joiner3)` | As defined by `QuadConstraintStream.ifExists(Class, PentaJoiner)`.
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner1, PentaJoiner<A,​B,​C,​D,​E> joiner2, PentaJoiner<A,​B,​C,​D,​E> joiner3, PentaJoiner<A,​B,​C,​D,​E> joiner4)` | As defined by `QuadConstraintStream.ifExists(Class, PentaJoiner)`.
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifNotExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner)` | Create a new `BiConstraintStream` for every tuple of A, B, C and D where E does not exist for which the `PentaJoiner` is true (for the properties it extracts from the facts).
    `<E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifNotExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E>... joiners)` | As defined by `QuadConstraintStream.ifNotExists(Class, PentaJoiner)`.
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifNotExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner1, PentaJoiner<A,​B,​C,​D,​E> joiner2)` | As defined by `QuadConstraintStream.ifNotExists(Class, PentaJoiner)`.
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifNotExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner1, PentaJoiner<A,​B,​C,​D,​E> joiner2, PentaJoiner<A,​B,​C,​D,​E> joiner3)` | As defined by `QuadConstraintStream.ifNotExists(Class, PentaJoiner)`.
    `default <E> QuadConstraintStream<A,​B,​C,​D>` | QuadConstraintStream.`ifNotExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E> joiner1, PentaJoiner<A,​B,​C,​D,​E> joiner2, PentaJoiner<A,​B,​C,​D,​E> joiner3, PentaJoiner<A,​B,​C,​D,​E> joiner4)` | As defined by `QuadConstraintStream.ifNotExists(Class, PentaJoiner)`.

  - ### Uses of PentaJoiner in org.optaplanner.core.impl.score.stream.drools.common

    Methods in org.optaplanner.core.impl.score.stream.drools.common with parameters of type PentaJoiner
    Modifier and Type | Method | Description
    --- | --- | ---
    `<E> QuadLeftHandSide<A,​B,​C,​D>` | QuadLeftHandSide.`andExists​(Class<E> dClass, PentaJoiner<A,​B,​C,​D,​E>[] joiners)` |
    `<E> QuadLeftHandSide<A,​B,​C,​D>` | QuadLeftHandSide.`andNotExists​(Class<E> dClass, PentaJoiner<A,​B,​C,​D,​E>[] joiners)` |

  - ### Uses of PentaJoiner in org.optaplanner.core.impl.score.stream.drools.quad

    Methods in org.optaplanner.core.impl.score.stream.drools.quad with parameters of type PentaJoiner
    Modifier and Type | Method | Description
    --- | --- | ---
    `<E> QuadConstraintStream<A,​B,​C,​D>` | DroolsAbstractQuadConstraintStream.`ifExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E>... joiners)` |
    `<E> QuadConstraintStream<A,​B,​C,​D>` | DroolsAbstractQuadConstraintStream.`ifNotExists​(Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E>... joiners)` |

    Constructors in org.optaplanner.core.impl.score.stream.drools.quad with parameters of type PentaJoiner
    Constructor | Description
    --- | ---
    `DroolsExistsQuadConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, boolean shouldExist, Class<E> otherClass, PentaJoiner<A,​B,​C,​D,​E>... joiners)` |

  - ### Uses of PentaJoiner in org.optaplanner.core.impl.score.stream.penta

    Classes in org.optaplanner.core.impl.score.stream.penta that implement PentaJoiner
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `AbstractPentaJoiner<A,​B,​C,​D,​E>` |
    `class` | `CompositePentaJoiner<A,​B,​C,​D,​E>` |
    `class` | `FilteringPentaJoiner<A,​B,​C,​D,​E>` |
    `class` | `NonePentaJoiner<A,​B,​C,​D,​E>` |
    `class` | `SinglePentaJoiner<A,​B,​C,​D,​E>` |

    Methods in org.optaplanner.core.impl.score.stream.penta with parameters of type PentaJoiner
    Modifier and Type | Method | Description
    --- | --- | ---
    `static <A,​B,​C,​D,​E> AbstractPentaJoiner<A,​B,​C,​D,​E>` | AbstractPentaJoiner.`merge​(PentaJoiner<A,​B,​C,​D,​E>... joiners)` |