package com.midea.cloudSearch.druid.segment;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
import com.alibaba.druid.sql.ast.expr.SQLTextLiteralExpr;
import com.alibaba.druid.sql.ast.expr.SQLValuableExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.midea.cloudSearch.druid.segment.KVValue;
import com.midea.cloudSearch.exception.SqlParseException;
public class Util {
public static String joiner(List<KVValue> lists, String oper) {
if (lists.size() == 0) {
return null;
}
StringBuilder sb = new StringBuilder(lists.get(0).toString());
for (int i = 1; i < lists.size(); i++) {
sb.append(oper);
sb.append(lists.get(i).toString());
}
return sb.toString();
}
public static List<Map<String, Object>> sortByMap(List<Map<String, Object>> lists) {
return lists;
}
public static Object expr2Object(SQLExpr expr) throws SqlParseException {
Object value = null;
if (expr instanceof SQLNumericLiteralExpr) {
value = ((SQLNumericLiteralExpr) expr).getNumber();
} else if (expr instanceof SQLCharExpr) {
value = ((SQLCharExpr) expr).getText();
} else if (expr instanceof SQLIdentifierExpr) {
value = expr.toString();
} else if (expr instanceof SQLPropertyExpr) {
value = expr.toString();
}else if (expr instanceof SQLVariantRefExpr ){
value = expr.toString();
}else if (expr instanceof SQLAllColumnExpr) {
value = "*";
} else if (expr instanceof SQLValuableExpr){
value = ((SQLValuableExpr)expr).getValue();
} else {
throw new SqlParseException("can not support this type " + expr.getClass());
}
return value;
}
public static double[] String2DoubleArr(String paramer) {
String[] split = paramer.split(",");
double[] ds = new double[split.length];
for (int i = 0; i < ds.length; i++) {
ds[i] = Double.parseDouble(split[i].trim());
}
return ds;
}
public static double[] KV2DoubleArr(List<KVValue> params) {
double[] ds = new double[params.size()];
int i = 0;
for (KVValue v : params) {
ds[i] = ((Number) v.value).doubleValue();
i++;
}
return ds;
}
public static String extendedToString(SQLExpr sqlExpr) {
if(sqlExpr instanceof SQLTextLiteralExpr){
return ((SQLTextLiteralExpr) sqlExpr).getText();
}
return sqlExpr.toString();
}
public static String[] concatStringsArrays(String[] a1,String[] a2){
String[] strings = new String[a1.length + a2.length];
for(int i=0;i<a1.length;i++){
strings[i] = a1[i];
}
for(int i = 0;i<a2.length;i++){
strings[a1.length+i] = a2[i];
}
return strings;
}
}