# Class PatternMatchNode

java.lang.Object
org.apache.cayenne.exp.Expression
org.apache.cayenne.exp.parser.SimpleNode
org.apache.cayenne.exp.parser.ConditionNode
org.apache.cayenne.exp.parser.PatternMatchNode

All Implemented Interfaces:
  `Serializable, Node, XMLSerializable`

Direct Known Subclasses:
  `ASTLike, ASTLikeIgnoreCase, ASTNotLike, ASTNotLikeIgnoreCase`

public abstract class PatternMatchNode extends ConditionNode
Superclass of pattern matching nodes. Assumes that subclass is a binary expression with the second operand being a pattern.

Since:
  1.1
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected char`
  `escapeChar`
  `protected boolean`
  `ignoringCase`
  `protected Pattern`
  `pattern`
  `protected boolean`
  `patternCompiled`

  ### Fields inherited from class SimpleNode

  `children, id, parent`

  ### Fields inherited from class Expression

  `ADD, ALL, AND, ANY, ASTERISK, BETWEEN, BITWISE_AND, BITWISE_LEFT_SHIFT, BITWISE_NOT, BITWISE_OR, BITWISE_RIGHT_SHIFT, BITWISE_XOR, CASE_WHEN, CUSTOM_OP, DB_PATH, DBID_PATH, DIVIDE, ELSE, ENCLOSING_OBJECT, EQUAL_TO, EXISTS, FALSE, FULL_OBJECT, FUNCTION_CALL, GREATER_THAN, GREATER_THAN_EQUAL_TO, IN, LESS_THAN, LESS_THAN_EQUAL_TO, LIKE, LIKE_IGNORE_CASE, LIST, MULTIPLY, NEGATIVE, NOT, NOT_BETWEEN, NOT_EQUAL_TO, NOT_EXISTS, NOT_IN, NOT_LIKE, NOT_LIKE_IGNORE_CASE, OBJ_PATH, OR, PRUNED_NODE, SCALAR, SUBQUERY, SUBTRACT, THEN, TRUE, type, WHEN`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `appendChildrenAsEJBQL(List<Object> parameterAccumulator, Appendable out, String rootId)`
  Encodes child of this node with specified index to EJBQL
  `char`
  `getEscapeChar()`
  This method will return an escape character for the like clause.
  `protected Pattern`
  `getPattern()`
  `boolean`
  `isIgnoringCase()`
  `void`
  `jjtAddChild(Node n, int i)`
  This method tells the node to add its argument to the node's list of children.
  `protected boolean`
  `matchPattern(String string)`
  `void`
  `setEscapeChar(char value)`
  This method allows the setting of the escape character.

  ### Methods inherited from class ConditionNode

  `evaluateNode, evaluateSubNode, exists, getRequiredChildrenCount, isValidParent, notExists`

  ### Methods inherited from class SimpleNode

  `appendAsEJBQL, appendAsEJBQL, appendAsEscapedString, appendAsString, appendScalarAsString, connectChildren, encodeScalarAsEJBQL, evaluate, evaluateChild, expName, flattenTree, getEJBQLExpressionOperator, getExpressionOperator, getOperand, getOperandCount, getPathAliases, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, notExp, numericToString, pruneNodeForPrunedChild, setOperand, unwrapChild, wrapChild`

  ### Methods inherited from class Expression

  `andExp, andExp, deepCopy, encodeAsXML, equals, filter, filterObjects, first, getType, hashCode, joinExp, joinExp, match, orExp, orExp, params, params, paramsArray, setType, shallowCopy, toEJBQL, toEJBQL, toString, transform, transformExpression, traverse, traverse`

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### pattern

    protected transient Pattern pattern

  - ### patternCompiled

    protected transient boolean patternCompiled

  - ### ignoringCase

    protected boolean ignoringCase

  - ### escapeChar

    protected char escapeChar

- ## Method Details

  - ### getEscapeChar

    public char getEscapeChar()

    This method will return an escape character for the like clause. The escape character will eventually end up in the query as `...(t0.foo LIKE ? {escape '|'})` where the pipe symbol is the escape character.

    Note that having no escape character is represented as the character 0.

  - ### setEscapeChar

    public void setEscapeChar(char value)

    This method allows the setting of the escape character. The escape character can be used in a LIKE clause. The character 0 signifies no escape character. The escape character '?' is disallowed.

  - ### isIgnoringCase

    public boolean isIgnoringCase()
    Since:
      4.2

  - ### matchPattern

    protected boolean matchPattern(String string)

  - ### getPattern

    protected Pattern getPattern()

  - ### jjtAddChild

    public void jjtAddChild(Node n, int i)
    Description copied from interface: `Node`
    This method tells the node to add its argument to the node's list of children.
    Specified by:
      `jjtAddChild` in interface `Node`
    Overrides:
      `jjtAddChild` in class `SimpleNode`

  - ### appendChildrenAsEJBQL

    protected void appendChildrenAsEJBQL(List<Object> parameterAccumulator, Appendable out, String rootId) throws IOException
    Description copied from class: `SimpleNode`
    Encodes child of this node with specified index to EJBQL
    Overrides:
      `appendChildrenAsEJBQL` in class `SimpleNode`
    Throws:
      `IOException`