1 28 29 package com.caucho.db.sql; 30 31 import com.caucho.log.Log; 32 import com.caucho.util.L10N; 33 34 import java.sql.SQLException ; 35 import java.util.logging.Logger ; 36 37 40 public class GroupResultExpr extends Expr implements GroupExpr { 41 protected static final L10N L = new L10N(GroupResultExpr.class); 42 private static final Logger log = Log.open(GroupResultExpr.class); 43 44 private static final int LONG_VALUE = 1; 45 private static final int DOUBLE_VALUE = 2; 46 private static final int STRING_VALUE = 3; 47 48 private Expr _expr; 49 private int _index; 50 private int _type; 51 52 GroupResultExpr(int index, Expr expr) 53 { 54 _index = index; 55 _expr = expr; 56 57 if (expr instanceof GroupResultExpr) 58 Thread.dumpStack(); 59 60 if (_expr.isLong()) 61 _type = LONG_VALUE; 62 else if (_expr.isDouble()) 63 _type = DOUBLE_VALUE; 64 else 65 _type = STRING_VALUE; 66 } 67 68 71 public String getName() 72 { 73 return _expr.getName(); 74 } 75 76 protected Expr bind(Query query) 77 throws SQLException 78 { 79 _expr = _expr.bind(query); 80 81 return this; 82 } 83 84 89 public void evalGroup(QueryContext context) 90 throws SQLException 91 { 92 if (_expr.isNull(context)) 93 return; 94 95 switch (_type) { 96 default: 97 { 98 String value = _expr.evalString(context); 99 100 context.setGroupString(_index, value); 101 } 102 break; 103 } 104 } 105 106 public String evalString(QueryContext context) 107 { 108 return context.getGroupString(_index); 109 } 110 111 public String toString() 112 { 113 return "GroupResult[" + _expr + "]"; 114 } 115 } 116 | Popular Tags |