protected boolean indexAppliesTo( EquiJoinCondition condition ) { return matchesSelectorName(condition.getSelector1Name()) && defn.appliesToProperty(condition.getProperty1Name()) || matchesSelectorName(condition.getSelector2Name()) && defn.appliesToProperty(condition.getProperty2Name()); }
protected boolean indexAppliesTo( EquiJoinCondition condition ) { return matchesSelectorName(condition.getSelector1Name()) && defn.appliesToProperty(condition.getProperty1Name()) || matchesSelectorName(condition.getSelector2Name()) && defn.appliesToProperty(condition.getProperty2Name()); }
/** * Test case for {@link QueryObjectModelFactory#equiJoinCondition(String, String, String, String)} */ public void testEquiJoinCondition() throws RepositoryException { EquiJoinCondition cond = qf.equiJoinCondition(SELECTOR_NAME1, propertyName1, SELECTOR_NAME2, propertyName2); assertEquals("Wrong selector name", SELECTOR_NAME1, cond.getSelector1Name()); assertEquals("Wrong property name", propertyName1, cond.getProperty1Name()); assertEquals("Wrong selector name", SELECTOR_NAME2, cond.getSelector2Name()); assertEquals("Wrong property name", propertyName2, cond.getProperty2Name()); }
private void append(EquiJoinCondition condition) { appendName(condition.getSelector1Name()); append("."); appendName(condition.getProperty1Name()); append(" = "); appendName(condition.getSelector2Name()); append("."); appendName(condition.getProperty2Name()); }
private void append(EquiJoinCondition condition) { appendName(condition.getSelector1Name()); append("."); appendName(condition.getProperty1Name()); append(" = "); appendName(condition.getSelector2Name()); append("."); appendName(condition.getProperty2Name()); }
private void append(EquiJoinCondition condition) { appendName(condition.getSelector1Name()); append("."); appendName(condition.getProperty1Name()); append(" = "); appendName(condition.getSelector2Name()); append("."); appendName(condition.getProperty2Name()); }
public EquiJoinMerger( Join join, Map<String, PropertyValue> columns, OperandEvaluator evaluator, QueryObjectModelFactory factory, EquiJoinCondition condition) throws RepositoryException { super(join, columns, evaluator, factory); PropertyValue property1 = factory.propertyValue( condition.getSelector1Name(), condition.getProperty1Name()); PropertyValue property2 = factory.propertyValue( condition.getSelector2Name(), condition.getProperty2Name()); if (leftSelectors.contains(property1.getSelectorName()) && rightSelectors.contains(property2.getSelectorName())) { leftProperty = property1; rightProperty = property2; } else if (leftSelectors.contains(property2.getSelectorName()) && rightSelectors.contains(property1.getSelectorName())) { leftProperty = property2; rightProperty = property1; } else { throw new RepositoryException("Invalid equi-join"); } }
public EquiJoinMerger( Join join, Map<String, PropertyValue> columns, OperandEvaluator evaluator, QueryObjectModelFactory factory, EquiJoinCondition condition) throws RepositoryException { super(join, columns, evaluator, factory); PropertyValue property1 = factory.propertyValue( condition.getSelector1Name(), condition.getProperty1Name()); PropertyValue property2 = factory.propertyValue( condition.getSelector2Name(), condition.getProperty2Name()); if (leftSelectors.contains(property1.getSelectorName()) && rightSelectors.contains(property2.getSelectorName())) { leftProperty = property1; rightProperty = property2; } else if (leftSelectors.contains(property2.getSelectorName()) && rightSelectors.contains(property1.getSelectorName())) { leftProperty = property2; rightProperty = property1; } else { throw new RepositoryException("Invalid equi-join"); } }
@Test public void equiJoinCondition() throws RepositoryException { EquiJoinCondition e = f.equiJoinCondition("selector1Name", "property1Name", "selector2Name", "property2Name"); assertEquals("selector1Name", e.getSelector1Name()); assertEquals("property1Name", e.getProperty1Name()); assertEquals("selector2Name", e.getSelector2Name()); assertEquals("property2Name", e.getProperty2Name()); assertEquals("[selector1Name].[property1Name] = [selector2Name].[property2Name]", e.toString()); }
@Test public void shouldParseQuery() { query = parse("SELECT post.\"jcr:uuid\", post.\"text\", post.\"user\" FROM [fincayra.Post] AS post JOIN [fincayra.User] AS u ON post.\"user\"=u.\"jcr:uuid\""); System.out.println(query); // SELECT * ... assertThat(query.columns().size(), is(3)); assertThat(query.columns().get(0).selectorName(), is(selectorName("post"))); assertThat(query.columns().get(0).getColumnName(), is("jcr:uuid")); assertThat(query.columns().get(0).getPropertyName(), is("jcr:uuid")); assertThat(query.columns().get(1).selectorName(), is(selectorName("post"))); assertThat(query.columns().get(1).getColumnName(), is("text")); assertThat(query.columns().get(1).getPropertyName(), is("text")); assertThat(query.columns().get(2).selectorName(), is(selectorName("post"))); assertThat(query.columns().get(2).getColumnName(), is("user")); assertThat(query.columns().get(2).getPropertyName(), is("user")); // FROM ... Join join = isJoin(query.source()); assertThat(join.getLeft(), is((Source)namedSelector(selectorName("fincayra.Post"), selectorName("post")))); assertThat(join.getRight(), is((Source)namedSelector(selectorName("fincayra.User"), selectorName("u")))); assertThat(join.type(), is(JoinType.INNER)); EquiJoinCondition joinCondition = isEquiJoinCondition(join.getJoinCondition()); assertThat(joinCondition.getSelector1Name(), is("post")); assertThat(joinCondition.getSelector2Name(), is("u")); assertThat(joinCondition.getProperty1Name(), is("user")); assertThat(joinCondition.getProperty2Name(), is("jcr:uuid")); // WHERE ... assertThat(query.constraint(), is(nullValue())); }