1 28 29 package com.caucho.db.sql; 30 31 import com.caucho.log.Log; 32 33 import java.sql.SQLException ; 34 import java.util.ArrayList ; 35 import java.util.logging.Logger ; 36 37 class NotExpr extends Expr { 38 private static final Logger log = Log.open(NotExpr.class); 39 40 private Expr _sub; 41 42 NotExpr(Expr sub) 43 { 44 _sub = sub; 45 } 46 47 50 protected Expr bind(Query query) 51 throws SQLException 52 { 53 _sub = _sub.bind(query); 54 55 if (! _sub.isBoolean()) 56 throw new SQLException (L.l("NOT requires a boolean expression")); 57 58 return this; 59 } 60 61 64 public Class getType() 65 { 66 return boolean.class; 67 } 68 69 72 public long subCost(ArrayList <FromItem> fromList) 73 { 74 return _sub.subCost(fromList); 75 } 76 77 80 public boolean isNull(QueryContext context) 81 throws SQLException 82 { 83 return _sub.isNull(context); 84 } 85 86 93 public int evalBoolean(QueryContext context) 94 throws SQLException 95 { 96 int value = _sub.evalBoolean(context); 97 98 switch (value) { 99 case TRUE: 100 return FALSE; 101 case FALSE: 102 return TRUE; 103 default: 104 return UNKNOWN; 105 } 106 } 107 108 115 public String evalString(QueryContext context) 116 throws SQLException 117 { 118 int value = _sub.evalBoolean(context); 119 120 switch (value) { 121 case TRUE: 122 return "1"; 123 case FALSE: 124 return "0"; 125 default: 126 return null; 127 } 128 } 129 130 135 public void evalGroup(QueryContext context) 136 throws SQLException 137 { 138 _sub.evalGroup(context); 139 } 140 141 public String toString() 142 { 143 return "NOT " + _sub; 144 } 145 } 146 | Popular Tags |