1 28 29 package com.caucho.amber.expr.fun; 30 31 import com.caucho.amber.expr.AmberExpr; 32 import com.caucho.amber.query.QueryParser; 33 import com.caucho.util.CharBuffer; 34 import com.caucho.util.L10N; 35 36 import java.util.ArrayList ; 37 38 39 42 public class SubstringFunExpr extends FunExpr { 43 private static final L10N L = new L10N(SubstringFunExpr.class); 44 45 48 protected SubstringFunExpr(QueryParser parser, 49 ArrayList <AmberExpr> args) 50 { 51 super(parser, "substring", args, false); 52 } 53 54 public static FunExpr create(QueryParser parser, 55 ArrayList <AmberExpr> args) 56 { 57 return new SubstringFunExpr(parser, args); 58 } 59 60 63 public void generateWhere(CharBuffer cb) 64 { 65 generateInternalWhere(cb, true); 66 } 67 68 71 public void generateUpdateWhere(CharBuffer cb) 72 { 73 generateInternalWhere(cb, false); 74 } 75 76 79 void generateInternalWhere(CharBuffer cb, 80 boolean select) 81 { 82 ArrayList <AmberExpr> args = getArgs(); 83 84 int n = args.size(); 85 86 90 cb.append("substr("); 93 94 if (select) 95 args.get(0).generateWhere(cb); 96 else 97 args.get(0).generateUpdateWhere(cb); 98 99 cb.append(", "); 100 101 if (select) 102 args.get(1).generateWhere(cb); 103 else 104 args.get(1).generateUpdateWhere(cb); 105 106 cb.append(", "); 107 108 if (select) 109 args.get(2).generateWhere(cb); 110 else 111 args.get(2).generateUpdateWhere(cb); 112 113 cb.append(")"); 114 } 115 } 116 | Popular Tags |