aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java')
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java
index 74a5be07..5585f5f2 100644
--- a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java
+++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java
@@ -1,11 +1,11 @@
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 */
6package tools.refinery.store.query.view; 6package tools.refinery.store.query.view;
7 7
8import tools.refinery.store.query.term.*; 8import tools.refinery.logic.term.*;
9import tools.refinery.store.representation.Symbol; 9import tools.refinery.store.representation.Symbol;
10 10
11import java.util.ArrayList; 11import java.util.ArrayList;
@@ -33,4 +33,18 @@ public final class FunctionView<T> extends AbstractFunctionView<T> {
33 public <R> AssignedValue<R> aggregate(Aggregator<R, T> aggregator, NodeVariable... arguments) { 33 public <R> AssignedValue<R> aggregate(Aggregator<R, T> aggregator, NodeVariable... arguments) {
34 return aggregate(aggregator, List.of(arguments)); 34 return aggregate(aggregator, List.of(arguments));
35 } 35 }
36
37 public AssignedValue<T> leftJoin(T defaultValue, List<NodeVariable> arguments) {
38 return targetVariable -> {
39 var placeholderVariable = Variable.of(getSymbol().valueType());
40 var argumentsWithPlaceholder = new ArrayList<Variable>(arguments.size() + 1);
41 argumentsWithPlaceholder.addAll(arguments);
42 argumentsWithPlaceholder.add(placeholderVariable);
43 return leftJoinBy(placeholderVariable, defaultValue, argumentsWithPlaceholder).toLiteral(targetVariable);
44 };
45 }
46
47 public AssignedValue<T> leftJoin(T defaultValue, NodeVariable... arguments) {
48 return leftJoin(defaultValue, List.of(arguments));
49 }
36} 50}