1 28 29 package com.caucho.amber.query; 30 31 import com.caucho.util.CharBuffer; 32 33 36 class LikeExpr extends AbstractAmberExpr { 37 private AmberExpr _expr; 38 39 private AmberExpr _value; 40 private String _escape; 41 private boolean _isNot; 42 43 46 LikeExpr(AmberExpr expr, AmberExpr value, String escape, boolean isNot) 47 { 48 _expr = expr; 49 _value = value; 50 _isNot = isNot; 51 _escape = escape; 52 } 53 54 57 public AmberExpr bindSelect(QueryParser parser) 58 { 59 _expr = _expr.bindSelect(parser); 60 _value = _value.bindSelect(parser); 61 62 return this; 63 } 64 65 68 public boolean usesFrom(FromItem from, int type, boolean isNot) 69 { 70 return (_expr.usesFrom(from, type)); 71 } 72 73 76 public AmberExpr replaceJoin(JoinExpr join) 77 { 78 _expr = _expr.replaceJoin(join); 79 _value = _value.replaceJoin(join); 80 81 return this; 82 } 83 84 87 public void generateWhere(CharBuffer cb) 88 { 89 cb.append('('); 90 _expr.generateWhere(cb); 91 92 if (_isNot) 93 cb.append(" NOT"); 94 95 cb.append(" LIKE "); 96 97 _value.generateWhere(cb); 98 99 if (_escape != null) { 100 cb.append(" ESCAPE "); 101 cb.append(_escape); 102 } 103 104 cb.append(')'); 105 } 106 107 public String toString() 108 { 109 CharBuffer cb = CharBuffer.allocate(); 110 111 cb.append('('); 112 cb.append(_expr); 113 114 if (_isNot) 115 cb.append(" NOT"); 116 117 cb.append(" LIKE "); 118 119 cb.append(_value); 120 121 cb.append(')'); 122 123 return cb.close(); 124 } 125 } 126 | Popular Tags |