@Override public void visit(Join obj) { // joins are not used currently if (obj.getLeftItem() instanceof NamedTable && obj.getRightItem() instanceof NamedTable) { this.entities.addEntity(((NamedTable)obj.getLeftItem()).getMetadataObject()); this.entities.addEntity(((NamedTable)obj.getRightItem()).getMetadataObject()); obj.setCondition(buildEntityKey(obj.getCondition())); visitNode(obj.getCondition()); } else { visitNode(obj.getLeftItem()); visitNode(obj.getRightItem()); visitNode(obj.getCondition()); } }
public static void convertCrossJoinToInner(LanguageObject obj, LanguageFactory lf) { if (obj instanceof Join) { Join join = (Join)obj; if (join.getJoinType() == JoinType.CROSS_JOIN) { Literal one = lf.createLiteral(1, TypeFacility.RUNTIME_TYPES.INTEGER); join.setCondition(lf.createCompareCriteria(Operator.EQ, one, one)); join.setJoinType(JoinType.INNER_JOIN); } } }
public Join createJoin(Join.JoinType joinType, TableReference leftItem, TableReference rightItem, Condition condition) { return new Join(leftItem, rightItem, joinType, condition); }
public void visit(Join obj) { visitNode(obj.getLeftItem()); visitNode(obj.getRightItem()); visitNode(obj.getCondition()); }
} else if (fItm instanceof Join) { Join join = (Join)fItm; if (!(join.getLeftItem() instanceof NamedTable) || !(join.getRightItem() instanceof NamedTable)) { tbl = (NamedTable)join.getLeftItem(); tblRight = (NamedTable)join.getRightItem(); } else { throw new AssertionError("Unsupported construct"); //$NON-NLS-1$
public void testGetLeftItem() throws Exception { assertNotNull(example(JoinType.JOIN_CROSS).getLeftItem()); }
public void testGetRightItem() throws Exception { assertNotNull(example(JoinType.JOIN_CROSS).getRightItem()); }
public void testGetCriteria() throws Exception { Join join = example(JoinType.JOIN_INNER); assertTrue(join.getCondition() instanceof Comparison); }
public void testGetJoinType() throws Exception { assertEquals(Join.JoinType.CROSS_JOIN, example(JoinType.JOIN_CROSS).getJoinType()); assertEquals(Join.JoinType.FULL_OUTER_JOIN, example(JoinType.JOIN_FULL_OUTER).getJoinType()); assertEquals(Join.JoinType.INNER_JOIN, example(JoinType.JOIN_INNER).getJoinType()); assertEquals(Join.JoinType.LEFT_OUTER_JOIN, example(JoinType.JOIN_LEFT_OUTER).getJoinType()); assertEquals(Join.JoinType.RIGHT_OUTER_JOIN, example(JoinType.JOIN_RIGHT_OUTER).getJoinType()); }
private JoinTable handleJoin(Join obj) throws TranslatorException { TableReference left = obj.getLeftItem(); TableReference right = obj.getRightItem(); JoinTable join = handleJoin(obj.getJoinType(), left, right, obj.getCondition(), true); this.joins.add(join); return join; leftJoin = handleJoin((Join)left); if (right instanceof NamedTable) { JoinTable join = handleJoin(obj.getJoinType(), leftJoin, (NamedTable)right, obj.getCondition()); this.joins.add(join); return join; rightJoin = handleJoin((Join)right); if (left instanceof NamedTable) { JoinTable join = handleJoin(obj.getJoinType(), (NamedTable)left, rightJoin, obj.getCondition()); this.joins.add(join); return join;
Join translate(JoinPredicate join) { List crits = join.getJoinCriteria(); Criteria crit = null; if (crits.size() == 1) { crit = (Criteria)crits.get(0); } else if (crits.size() > 1) { crit = new CompoundCriteria(crits); } Join.JoinType joinType = Join.JoinType.INNER_JOIN; if(join.getJoinType().equals(JoinType.JOIN_INNER)) { joinType = Join.JoinType.INNER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_LEFT_OUTER)) { joinType = Join.JoinType.LEFT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_RIGHT_OUTER)) { joinType = Join.JoinType.RIGHT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_FULL_OUTER)) { joinType = Join.JoinType.FULL_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_CROSS)) { joinType = Join.JoinType.CROSS_JOIN; } return new Join(translate(join.getLeftClause()), translate(join.getRightClause()), joinType, translate(crit)); }
@Override public void visit(Join obj) { try { if (obj.getLeftItem() instanceof Join) { append(obj.getLeftItem()); Table right = ((NamedTable)obj.getRightItem()).getMetadataObject(); processJoin(this.mongoDoc, new MongoDocument(right, this.metadata), obj.getCondition(), obj.getJoinType()); } else if (obj.getRightItem() instanceof Join) { Table left = ((NamedTable)obj.getLeftItem()).getMetadataObject(); append(obj.getRightItem()); processJoin(this.mongoDoc, new MongoDocument(left, this.metadata), obj.getCondition(), obj.getJoinType()); } else { Table left = ((NamedTable)obj.getLeftItem()).getMetadataObject(); Table right = ((NamedTable)obj.getRightItem()).getMetadataObject(); processJoin(new MongoDocument(left, this.metadata), new MongoDocument(right, this.metadata), obj.getCondition(), obj.getJoinType()); } } catch (TranslatorException e) { this.exceptions.add(e); } }
Join translate(JoinPredicate join) { List crits = join.getJoinCriteria(); Criteria crit = null; if (crits.size() == 1) { crit = (Criteria)crits.get(0); } else if (crits.size() > 1) { crit = new CompoundCriteria(crits); } Join.JoinType joinType = Join.JoinType.INNER_JOIN; if(join.getJoinType().equals(JoinType.JOIN_INNER)) { joinType = Join.JoinType.INNER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_LEFT_OUTER)) { joinType = Join.JoinType.LEFT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_RIGHT_OUTER)) { joinType = Join.JoinType.RIGHT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_FULL_OUTER)) { joinType = Join.JoinType.FULL_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_CROSS)) { joinType = Join.JoinType.CROSS_JOIN; } return new Join(translate(join.getLeftClause()), translate(join.getRightClause()), joinType, translate(crit)); }
if (obj.getLeftItem() instanceof Join) { Condition updated = obj.getCondition(); append(obj.getLeftItem()); Table right = ((NamedTable)obj.getRightItem()).getMetadataObject(); try { updated = this.odataQuery.addNavigation(obj.getCondition(), obj.getJoinType(), right); obj.setCondition(updated); if (updated != null) { this.conditionFragments.add(obj.getCondition()); else if (obj.getRightItem() instanceof Join) { Condition updated = obj.getCondition(); append(obj.getRightItem()); Table left = ((NamedTable)obj.getLeftItem()).getMetadataObject(); try { updated = this.odataQuery.addNavigation(obj.getCondition(), obj.getJoinType(), left); obj.setCondition(updated); if (updated != null) { this.conditionFragments.add(obj.getCondition()); Condition updated = obj.getCondition(); Table left = ((NamedTable)obj.getLeftItem()).getMetadataObject(); Table right = ((NamedTable)obj.getRightItem()).getMetadataObject(); try { if (ODataMetadataProcessor.isComplexType(left) || updated = this.odataQuery.addNavigation(obj.getCondition(), obj.getJoinType(), left, right); obj.setCondition(updated); if (updated != null) {
Join translate(JoinPredicate join) { List crits = join.getJoinCriteria(); Criteria crit = null; if (crits.size() == 1) { crit = (Criteria)crits.get(0); } else if (crits.size() > 1) { crit = new CompoundCriteria(crits); } Join.JoinType joinType = Join.JoinType.INNER_JOIN; if(join.getJoinType().equals(JoinType.JOIN_INNER)) { joinType = Join.JoinType.INNER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_LEFT_OUTER)) { joinType = Join.JoinType.LEFT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_RIGHT_OUTER)) { joinType = Join.JoinType.RIGHT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_FULL_OUTER)) { joinType = Join.JoinType.FULL_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_CROSS)) { joinType = Join.JoinType.CROSS_JOIN; } return new Join(translate(join.getLeftClause()), translate(join.getRightClause()), joinType, translate(crit)); }
/** * only a single join predicate is supported, so move up conditions if possible */ private void moveCondition(Select select, TableReference tableReference) { if (!(tableReference instanceof Join)) { return; } Join join = (Join)tableReference; if (join.getJoinType() != JoinType.INNER_JOIN) { return; } while (join.getCondition() instanceof AndOr) { AndOr andOr = (AndOr) join.getCondition(); if (andOr.getOperator() == AndOr.Operator.OR) { break; } Condition c = andOr.getLeftCondition(); select.setWhere(LanguageUtil.combineCriteria(select.getWhere(), c, getLanguageFactory())); join.setCondition(andOr.getRightCondition()); } moveCondition(select, join.getLeftItem()); moveCondition(select, join.getRightItem()); } }
public void visit(Join obj) { TableReference leftItem = obj.getLeftItem(); if(useParensForLHSJoins() && leftItem instanceof Join) { buffer.append(Tokens.LPAREN); switch(obj.getJoinType()) { case CROSS_JOIN: buffer.append(CROSS); .append(Tokens.SPACE); TableReference rightItem = obj.getRightItem(); if(rightItem instanceof Join && (useParensForJoins() || obj.getJoinType() == Join.JoinType.CROSS_JOIN)) { buffer.append(Tokens.LPAREN); append(rightItem); final Condition condition = obj.getCondition(); if (condition != null) { buffer.append(Tokens.SPACE)
@Override public void visit(Join obj) { TableReference leftItem = obj.getLeftItem(); TableReference rightItem = obj.getRightItem(); JoinType joinType = obj.getJoinType(); Condition condition = obj.getCondition(); if(rightItem instanceof Join && (useParensForJoins() || obj.getJoinType() == Join.JoinType.CROSS_JOIN)) { buffer.append(Tokens.LPAREN); append(hasLateralJoin(rightItem)?unwrap(rightItem):rightItem);
@Override public void visit(Join join) { try { TableReference left = join.getLeftItem(); NamedTable leftGroup = (NamedTable) left; leftTableInJoin = leftGroup.getMetadataObject(); loadColumnMetadata(leftGroup); TableReference right = join.getRightItem(); NamedTable rightGroup = (NamedTable) right; rightTableInJoin = rightGroup.getMetadataObject(); loadColumnMetadata((NamedTable) right); Comparison criteria = (Comparison) join.getCondition(); Expression lExp = criteria.getLeftExpression(); Expression rExp = criteria.getRightExpression(); if (join.getJoinType() == JoinType.INNER_JOIN) { if (!isChildToParentJoin()) {