use of com.alibaba.druid.sql.ast.SQLExpr in project druid by alibaba.
the class Concat method eval.
public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) {
StringBuilder buf = new StringBuilder();
for (SQLExpr item : x.getParameters()) {
item.accept(visitor);
Object itemValue = item.getAttributes().get(EVAL_VALUE);
if (itemValue == null) {
return null;
}
buf.append(itemValue.toString());
}
return buf.toString();
}
use of com.alibaba.druid.sql.ast.SQLExpr in project druid by alibaba.
the class Greatest method eval.
public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) {
Object result = null;
for (SQLExpr item : x.getParameters()) {
item.accept(visitor);
Object itemValue = item.getAttributes().get(EVAL_VALUE);
if (result == null) {
result = itemValue;
} else {
if (SQLEvalVisitorUtils.gt(itemValue, result)) {
result = itemValue;
}
}
}
return result;
}
use of com.alibaba.druid.sql.ast.SQLExpr in project druid by alibaba.
the class Hex method eval.
public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) {
if (x.getParameters().size() != 1) {
throw new ParserException("argument's != 1, " + x.getParameters().size());
}
SQLExpr param0 = x.getParameters().get(0);
param0.accept(visitor);
Object param0Value = param0.getAttributes().get(EVAL_VALUE);
if (param0Value == null) {
return SQLEvalVisitor.EVAL_ERROR;
}
if (param0Value instanceof String) {
byte[] bytes = ((String) param0Value).getBytes();
String result = HexBin.encode(bytes);
return result;
}
if (param0Value instanceof Number) {
long value = ((Number) param0Value).longValue();
String result = Long.toHexString(value).toUpperCase();
return result;
}
return SQLEvalVisitor.EVAL_ERROR;
}
use of com.alibaba.druid.sql.ast.SQLExpr in project druid by alibaba.
the class Insert method eval.
public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) {
if (x.getParameters().size() != 4) {
return SQLEvalVisitor.EVAL_ERROR;
}
SQLExpr param0 = x.getParameters().get(0);
SQLExpr param1 = x.getParameters().get(1);
SQLExpr param2 = x.getParameters().get(2);
SQLExpr param3 = x.getParameters().get(3);
param0.accept(visitor);
param1.accept(visitor);
param2.accept(visitor);
param3.accept(visitor);
Object param0Value = param0.getAttributes().get(EVAL_VALUE);
Object param1Value = param1.getAttributes().get(EVAL_VALUE);
Object param2Value = param2.getAttributes().get(EVAL_VALUE);
Object param3Value = param3.getAttributes().get(EVAL_VALUE);
if (!(param0Value instanceof String)) {
return SQLEvalVisitor.EVAL_ERROR;
}
if (!(param1Value instanceof Number)) {
return SQLEvalVisitor.EVAL_ERROR;
}
if (!(param2Value instanceof Number)) {
return SQLEvalVisitor.EVAL_ERROR;
}
if (!(param3Value instanceof String)) {
return SQLEvalVisitor.EVAL_ERROR;
}
String str = (String) param0Value;
int pos = ((Number) param1Value).intValue();
int len = ((Number) param2Value).intValue();
String newstr = (String) param3Value;
if (pos <= 0) {
return str;
}
if (pos == 1) {
if (len > str.length()) {
return newstr;
}
return newstr + str.substring(len);
}
String first = str.substring(0, pos - 1);
if (pos + len - 1 > str.length()) {
return first + newstr;
}
return first + newstr + str.substring(pos + len - 1);
}
use of com.alibaba.druid.sql.ast.SQLExpr in project druid by alibaba.
the class Isnull method eval.
public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) {
final List<SQLExpr> parameters = x.getParameters();
if (parameters.size() == 0) {
return EVAL_ERROR;
}
SQLExpr condition = parameters.get(0);
condition.accept(visitor);
Object itemValue = condition.getAttributes().get(EVAL_VALUE);
if (itemValue == EVAL_VALUE_NULL) {
return Boolean.TRUE;
} else if (itemValue == null) {
return null;
} else {
return Boolean.FALSE;
}
}
Aggregations