01: /*
02: * Copyright 2006 Day Management AG, Switzerland. All rights reserved.
03: */
04: package javax.jcr.query.qom;
05:
06: /**
07: * Tests whether the value of a property in a first selector is equal to the
08: * value of a property in a second selector.
09: * <p/>
10: * A node-tuple satisfies the constraint only if:
11: * <ul>
12: * <li>{@link #getSelector1Name selector1} has a property named
13: * {@link #getProperty1Name property1}, and</li>
14: * <li>{@link #getSelector2Name selector2} has a property named
15: * {@link #getProperty2Name property2}, and</li>
16: * <li>the value of {@link #getProperty1Name property1} equals the value of
17: * {@link #getProperty2Name property2}</li>
18: * </ul>
19: * <p/>
20: * The query is invalid if:
21: * <ul>
22: * <li>{@link #getSelector1Name selector1} is not the name of a selector in
23: * the query, or</li>
24: * <li>{@link #getSelector2Name selector2} is not the name of a selector in
25: * the query, or</li>
26: * <li>{@link #getSelector1Name selector1} is the same as
27: * {@link #getSelector2Name selector2}, or</li>
28: * <li>{@link #getProperty1Name property1} is not a syntactically valid JCR
29: * name, or</li>
30: * <li>{@link #getProperty2Name property2} is not a syntactically valid JCR
31: * name, or</li>
32: * <li>the value of {@link #getProperty1Name property1} is not the same
33: * property type as the name of {@link #getProperty2Name property2}, or</li>
34: * <li>{@link #getProperty1Name property1} is a multi-valued property, or</li>
35: * <li>{@link #getProperty2Name property2} is a multi-valued property, or</li>
36: * <li>{@link #getProperty1Name property1} is a <code>BINARY</code> property, or</li>
37: * <li>{@link #getProperty2Name property2} is a <code>BINARY</code> property.</li>
38: * </ul>
39: *
40: * @since JCR 2.0
41: */
42: public interface EquiJoinCondition extends JoinCondition {
43: /**
44: * Gets the name of the first selector.
45: *
46: * @return the selector name; non-null
47: */
48: public String getSelector1Name();
49:
50: /**
51: * Gets the property name in the first selector.
52: *
53: * @return the property name; non-null
54: */
55: public String getProperty1Name();
56:
57: /**
58: * Gets the name of the second selector.
59: *
60: * @return the selector name; non-null
61: */
62: public String getSelector2Name();
63:
64: /**
65: * Gets the property name in the second selector.
66: *
67: * @return the property name; non-null
68: */
69: public String getProperty2Name();
70: }
71:
72: // EOF
|