diff options
Diffstat (limited to 'subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java')
-rw-r--r-- | subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java index 225f6844..b0a03c7d 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | 2 | * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/> |
3 | * | 3 | * |
4 | * SPDX-License-Identifier: EPL-2.0 | 4 | * SPDX-License-Identifier: EPL-2.0 |
5 | */ | 5 | */ |
@@ -94,6 +94,22 @@ public final class FunctionalQuery<T> extends Query<T> { | |||
94 | return aggregate(aggregator, List.of(arguments)); | 94 | return aggregate(aggregator, List.of(arguments)); |
95 | } | 95 | } |
96 | 96 | ||
97 | public AssignedValue<T> leftJoin(T defaultValue, List<NodeVariable> arguments) { | ||
98 | return targetVariable -> { | ||
99 | var placeholderVariable = Variable.of(type); | ||
100 | var argumentsWithPlaceholder = new ArrayList<Variable>(arguments.size() + 1); | ||
101 | argumentsWithPlaceholder.addAll(arguments); | ||
102 | argumentsWithPlaceholder.add(placeholderVariable); | ||
103 | return getDnf() | ||
104 | .leftJoinBy(placeholderVariable, defaultValue, argumentsWithPlaceholder) | ||
105 | .toLiteral(targetVariable); | ||
106 | }; | ||
107 | } | ||
108 | |||
109 | public AssignedValue<T> leftJoin(T defaultValue, NodeVariable... arguments) { | ||
110 | return leftJoin(defaultValue, List.of(arguments)); | ||
111 | } | ||
112 | |||
97 | @Override | 113 | @Override |
98 | public boolean equals(Object o) { | 114 | public boolean equals(Object o) { |
99 | if (this == o) return true; | 115 | if (this == o) return true; |