diff options
Diffstat (limited to 'subprojects/interpreter/src/main/java/tools/refinery/interpreter/matchers/psystem/rewriters/PBodyCopier.java')
-rw-r--r-- | subprojects/interpreter/src/main/java/tools/refinery/interpreter/matchers/psystem/rewriters/PBodyCopier.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/subprojects/interpreter/src/main/java/tools/refinery/interpreter/matchers/psystem/rewriters/PBodyCopier.java b/subprojects/interpreter/src/main/java/tools/refinery/interpreter/matchers/psystem/rewriters/PBodyCopier.java index 99350185..1e580599 100644 --- a/subprojects/interpreter/src/main/java/tools/refinery/interpreter/matchers/psystem/rewriters/PBodyCopier.java +++ b/subprojects/interpreter/src/main/java/tools/refinery/interpreter/matchers/psystem/rewriters/PBodyCopier.java | |||
@@ -137,7 +137,9 @@ public class PBodyCopier extends AbstractRewriterTraceSource { | |||
137 | } else if (constraint instanceof PatternMatchCounter) { | 137 | } else if (constraint instanceof PatternMatchCounter) { |
138 | copyPatternMatchCounterConstraint((PatternMatchCounter) constraint); | 138 | copyPatternMatchCounterConstraint((PatternMatchCounter) constraint); |
139 | } else if (constraint instanceof AggregatorConstraint) { | 139 | } else if (constraint instanceof AggregatorConstraint) { |
140 | copyAggregatorConstraint((AggregatorConstraint) constraint); | 140 | copyAggregatorConstraint((AggregatorConstraint) constraint); |
141 | } else if (constraint instanceof LeftJoinConstraint leftJoinConstraint) { | ||
142 | copyLeftJoinConstraint((LeftJoinConstraint) constraint); | ||
141 | } else if (constraint instanceof ExpressionEvaluation) { | 143 | } else if (constraint instanceof ExpressionEvaluation) { |
142 | copyExpressionEvaluationConstraint((ExpressionEvaluation) constraint); | 144 | copyExpressionEvaluationConstraint((ExpressionEvaluation) constraint); |
143 | } else { | 145 | } else { |
@@ -256,6 +258,15 @@ public class PBodyCopier extends AbstractRewriterTraceSource { | |||
256 | constraint.getReferredQuery(), mappedResultVariable, constraint.getAggregatedColumn())); | 258 | constraint.getReferredQuery(), mappedResultVariable, constraint.getAggregatedColumn())); |
257 | } | 259 | } |
258 | 260 | ||
261 | protected void copyLeftJoinConstraint(LeftJoinConstraint constraint) { | ||
262 | PVariable[] mappedVariables = extractMappedVariables(constraint); | ||
263 | PVariable mappedResultVariable = variableMapping.get(constraint.getResultVariable()); | ||
264 | Tuple variablesTuple = Tuples.flatTupleOf((Object[]) mappedVariables); | ||
265 | addTrace(constraint, new LeftJoinConstraint(body, variablesTuple, | ||
266 | constraint.getReferredQuery(), mappedResultVariable, constraint.getOptionalColumn(), | ||
267 | constraint.getDefaultValue())); | ||
268 | } | ||
269 | |||
259 | protected void copyExpressionEvaluationConstraint(ExpressionEvaluation expressionEvaluation) { | 270 | protected void copyExpressionEvaluationConstraint(ExpressionEvaluation expressionEvaluation) { |
260 | PVariable mappedOutputVariable = variableMapping.get(expressionEvaluation.getOutputVariable()); | 271 | PVariable mappedOutputVariable = variableMapping.get(expressionEvaluation.getOutputVariable()); |
261 | addTrace(expressionEvaluation, new ExpressionEvaluation(body, | 272 | addTrace(expressionEvaluation, new ExpressionEvaluation(body, |