public void addJoin( final String joinType, final Joinable j, final HashMap<String, String> variableBindings) { if (j == null) { LOG.info("Skipping join"); return; } JoinConditions conditions = new JoinConditions(); for (MappableNodePattern existingVar : this.joinVars()) { for (MappableNodePattern candidateVar : j.joinVars()) { String existingVarName = existingVar.getVarName(); String candidateVarName = candidateVar.getVarName(); String candidateBinding = variableBindings.get(candidateVar.getVarName()); String existingBinding = existingVar.mappedName(); if (existingVarName.equals(candidateVarName) && existingBinding.equals(candidateBinding)) { conditions.addCondition(existingBinding, " = ", candidateVar.mappedName()); } } } addJoin(joinType, j, conditions); }
public Set<MappableNodePattern> joinVars() { HashSet<MappableNodePattern> joinVars = new HashSet<MappableNodePattern>(); for (Joinable joinable : joined) { joinVars.addAll(joinable.joinVars()); } return joinVars; }