org.josql.expressions
Class LikeExpression

java.lang.Object
  extended by org.josql.expressions.Expression
      extended by org.josql.expressions.BinaryExpression
          extended by org.josql.expressions.LikeExpression

public class LikeExpression
extends BinaryExpression

Represents a LHS [ NOT ] [ $ ] LIKE RHS expression. It should be noted that unlike "normal" SQL the "." character is not supported since in practice it tends to be redundant.

It is possible to use: $ in front of the "LIKE" to indicate that a case insensitive comparison should be performed, for example:

   SELECT *
   FROM   java.lang.String
   WHERE  toString $LIKE '%value'
 

Also, the LHS or RHS can be built up using the "+" operator to concatenate a string, thus:

   SELECT *
   FROM   java.lang.String
   WHREE  toString $LIKE '%' + :myValue
 

In this way (using the named bind variable) you don't have to provide the wildcard.

It is also possible to specify your own "wildcard" character in the Query object using: Query.setWildcardCharacter(char).

Note: the implementation is a modified version of that provided by: Kevin Stannard (http://www.jzoo.com/java/wildcardfilter/).


Field Summary
 
Fields inherited from class org.josql.expressions.BinaryExpression
left, right
 
Constructor Summary
LikeExpression()
           
 
Method Summary
 void init(Query q)
          Init the expression, we over-ride here so that if the RHS is fixed we can init the pattern that will be used to match the expression.
 boolean isIgnoreCase()
           
 boolean isNot()
           
 boolean isTrue(Object o, Query q)
          Returns whether the LHS is "LIKE" the RHS.
 void setIgnoreCase(boolean v)
           
 void setNot(boolean v)
           
 String toString()
          Returns a string version of the expression.
 
Methods inherited from class org.josql.expressions.BinaryExpression
getExpectedReturnType, getLeft, getRight, getValue, hasFixedResult, setLeft, setRight
 
Methods inherited from class org.josql.expressions.Expression
isBracketed, setBracketed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LikeExpression

public LikeExpression()
Method Detail

isIgnoreCase

public boolean isIgnoreCase()

init

public void init(Query q)
          throws QueryParseException
Init the expression, we over-ride here so that if the RHS is fixed we can init the pattern that will be used to match the expression.

Overrides:
init in class BinaryExpression
Parameters:
q - The Query object.
Throws:
QueryParseException - If the LHS and/or RHS cannot be inited.

setIgnoreCase

public void setIgnoreCase(boolean v)

isNot

public boolean isNot()

setNot

public void setNot(boolean v)

isTrue

public boolean isTrue(Object o,
                      Query q)
               throws QueryExecutionException
Returns whether the LHS is "LIKE" the RHS. A special case here is that if the LHS and RHS are both null then true is returned. Also, if either the LHS or RHS is not null and one is null then false is returned.

Specified by:
isTrue in class Expression
Parameters:
o - The object to evaluate the expression on.
q - The Query object.
Returns:
true if the LHS is "LIKE" the RHS, false if not. And using "NOT" will invert the result.
Throws:
QueryExecutionException - If the expression cannot be evaluated.

toString

public String toString()
Returns a string version of the expression. Returns in the form:
   Expression [ NOT ] [ $ ]LIKE Expression
 

Specified by:
toString in class Expression
Returns:
A string representation of the expression.


  Copyright © 2008 Gary Bentley. All Rights Reserved.