Class JoinConditionImpl
- java.lang.Object
-
- org.apache.jackrabbit.oak.query.ast.JoinConditionImpl
-
- Direct Known Subclasses:
ChildNodeJoinConditionImpl
,DescendantNodeJoinConditionImpl
,EquiJoinConditionImpl
,SameNodeJoinConditionImpl
public abstract class JoinConditionImpl extends java.lang.Object
The base class for join conditions.
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
KNOWN_PARENT_PATH
The parent path of the joined selectorprotected static java.lang.String
KNOWN_PATH
A path for a join.protected static java.lang.String
KNOWN_VALUE
protected QueryImpl
query
static java.lang.String
SPECIAL_PATH_PREFIX
The prefix for known paths.
-
Constructor Summary
Constructors Constructor Description JoinConditionImpl()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract boolean
canEvaluate(java.util.Set<SourceImpl> available)
Whether the join condition can be evaluated if the given selectors are able to retrieve data.protected PropertyValue
convertValueToType(PropertyValue v, PropertyValue targetType)
@NotNull org.apache.jackrabbit.oak.query.ast.AstElement
copyOf()
abstract boolean
evaluate()
Evaluate the result using the currently set values.protected java.lang.String
getLocalPath(java.lang.String path)
Calculate the session local path (the path excluding the workspace name) if possible.abstract boolean
isParent(SourceImpl source)
Check whether the given source is the parent of the join condition, as selector "[b]" is the parent of the join condition "isdescendantnode([a], [b])".protected java.lang.String
normalizePath(java.lang.String path)
Validate and normalize the path.protected java.lang.String
normalizePropertyName(java.lang.String propertyName)
Normalize the property name (including namespace remapping).protected java.lang.String
protect(java.lang.Object expression)
protected java.lang.String
quote(java.lang.String pathOrName)
protected java.lang.String
quoteJson(java.lang.String string)
abstract void
restrict(FilterImpl f)
Apply the condition to the filter, further restricting the filter if possible.abstract void
restrictPushDown(SelectorImpl s)
Push as much of the condition down to this selector, further restricting the selector condition if possible.void
setQuery(QueryImpl query)
-
-
-
Field Detail
-
SPECIAL_PATH_PREFIX
public static final java.lang.String SPECIAL_PATH_PREFIX
The prefix for known paths.- See Also:
- Constant Field Values
-
KNOWN_PATH
protected static final java.lang.String KNOWN_PATH
A path for a join.- See Also:
- Constant Field Values
-
KNOWN_PARENT_PATH
protected static final java.lang.String KNOWN_PARENT_PATH
The parent path of the joined selector- See Also:
- Constant Field Values
-
KNOWN_VALUE
protected static final java.lang.String KNOWN_VALUE
- See Also:
- Constant Field Values
-
query
protected QueryImpl query
-
-
Method Detail
-
evaluate
public abstract boolean evaluate()
Evaluate the result using the currently set values.- Returns:
- true if the constraint matches
-
restrict
public abstract void restrict(FilterImpl f)
Apply the condition to the filter, further restricting the filter if possible. This may also verify the data types are compatible, and that paths are valid.- Parameters:
f
- the filter
-
restrictPushDown
public abstract void restrictPushDown(SelectorImpl s)
Push as much of the condition down to this selector, further restricting the selector condition if possible.- Parameters:
s
- the selector
-
isParent
public abstract boolean isParent(SourceImpl source)
Check whether the given source is the parent of the join condition, as selector "[b]" is the parent of the join condition "isdescendantnode([a], [b])".- Parameters:
source
- the source- Returns:
- true if the source is the parent
-
canEvaluate
public abstract boolean canEvaluate(java.util.Set<SourceImpl> available)
Whether the join condition can be evaluated if the given selectors are able to retrieve data.- Parameters:
available
- the available selectors- Returns:
- true if the condition can be evaluated
-
protect
protected java.lang.String protect(java.lang.Object expression)
-
quote
protected java.lang.String quote(java.lang.String pathOrName)
-
quoteJson
protected java.lang.String quoteJson(java.lang.String string)
-
setQuery
public void setQuery(QueryImpl query)
-
normalizePropertyName
protected java.lang.String normalizePropertyName(java.lang.String propertyName)
Normalize the property name (including namespace remapping). Asterisks are kept.- Parameters:
propertyName
- the property name to normalize- Returns:
- the normalized (oak-) property name
-
normalizePath
protected java.lang.String normalizePath(java.lang.String path)
Validate and normalize the path.- Parameters:
path
- the path to validate- Returns:
- the validated and normalized path
-
convertValueToType
protected PropertyValue convertValueToType(PropertyValue v, PropertyValue targetType)
-
getLocalPath
protected java.lang.String getLocalPath(java.lang.String path)
Calculate the session local path (the path excluding the workspace name) if possible.- Parameters:
path
- the absolute path- Returns:
- the session local path, or null if not within this workspace
-
copyOf
@NotNull public @NotNull org.apache.jackrabbit.oak.query.ast.AstElement copyOf()
- Returns:
- a clone of self. Default implementation in
AstElement
returns same reference tothis
.
-
-