@Test public void shouldPerformAntiJoin() { final SopremoTestPlan sopremoPlan = new SopremoTestPlan(2, 1); final AndExpression condition = new AndExpression(new ElementInSetExpression(createPath("0", "DeptName"), Quantor.EXISTS_NOT_IN, createPath("1", "Name"))); final Join join = new Join().withJoinCondition(condition); join.setInputs(sopremoPlan.getInputOperators(0, 2)); sopremoPlan.getOutputOperator(0).setInputs(join); sopremoPlan.getInput(0).addObject("Name", "Harry", "EmpId", 3415, "DeptName", "Finance").addObject("Name", "Sally", "EmpId", 2241, "DeptName", "Sales") .addObject("Name", "George", "EmpId", 3401, "DeptName", "Finance").addObject("Name", "Harriet", "EmpId", 2202, "DeptName", "Production"); sopremoPlan.getInput(1).addObject("Name", "Sales", "Manager", "Harriet").addObject("Name", "Production", "Manager", "Charles"); sopremoPlan.getExpectedOutput(0).addArray( JsonUtil.createObjectNode("Name", "Harry", "EmpId", 3415, "DeptName", "Finance")) .addArray(JsonUtil.createObjectNode("Name", "George", "EmpId", 3401, "DeptName", "Finance")); sopremoPlan.run(); }
public Join withJoinCondition(final BooleanExpression joinCondition) { this.setJoinCondition(joinCondition); return this; }
Join extends CompositeOperator<Join> { public Join withJoinCondition(final BooleanExpression joinCondition) { this.setJoinCondition(joinCondition); return this; } }
Join extends CompositeOperator<Join> { public Join withJoinCondition(final BooleanExpression joinCondition) { this.setJoinCondition(joinCondition); return this; }  }
Join extends CompositeOperator<Join> { public Join withJoinCondition(final BooleanExpression joinCondition) { this.setJoinCondition(joinCondition); return this; }  @Override void addImplementation(final SopremoModule module); @Override boolean equals(final Object obj); BooleanExpression getJoinCondition(); int[] getOuterJoinIndices(); EvaluationExpression getOuterJoinSources(); EvaluationExpression getResultProjection(); @Override int hashCode(); @Property @Name(preposition = "where") void setJoinCondition(final BooleanExpression joinCondition); void setOuterJoinIndices(final int... outerJoinIndices); @Property @Name(verb = "preserve") void setOuterJoinSources(final EvaluationExpression outerJoinSources); @Property @Name(preposition = "into") void setResultProjection(final EvaluationExpression resultProjection); @Override String toString(); Join withJoinCondition(final BooleanExpression joinCondition); Join withOuterJoinIndices(final int... outerJoinIndices); Join withOuterJoinSources(final EvaluationExpression outerJoinSources); Join withResultProjection(final EvaluationExpression resultProjection); }
Join extends CompositeOperator<Join> { public Join withJoinCondition(final BooleanExpression joinCondition) { this.setJoinCondition(joinCondition); return this; }  @Override void addImplementation(final SopremoModule module); @Override boolean equals(final Object obj); BooleanExpression getJoinCondition(); int[] getOuterJoinIndices(); EvaluationExpression getOuterJoinSources(); EvaluationExpression getResultProjection(); @Override int hashCode(); @Property @Name(preposition = "where") void setJoinCondition(final BooleanExpression joinCondition); void setOuterJoinIndices(final int... outerJoinIndices); @Property @Name(verb = "preserve") void setOuterJoinSources(final EvaluationExpression outerJoinSources); @Property @Name(preposition = "into") void setResultProjection(final EvaluationExpression resultProjection); @Override String toString(); Join withJoinCondition(final BooleanExpression joinCondition); Join withOuterJoinIndices(final int... outerJoinIndices); Join withOuterJoinSources(final EvaluationExpression outerJoinSources); Join withResultProjection(final EvaluationExpression resultProjection);  }