|
|
@@ -0,0 +1,104 @@
|
|
|
+//package org.elasticsearch.dsl.parser.query.method;
|
|
|
+//
|
|
|
+//import com.alibaba.druid.sql.ast.SQLExpr;
|
|
|
+//import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
|
|
|
+//import com.google.common.collect.Maps;
|
|
|
+//import org.elasticsearch.dsl.bean.AtomQuery;
|
|
|
+//import org.elasticsearch.dsl.bean.ElasticSqlQueryField;
|
|
|
+//import org.elasticsearch.dsl.enums.QueryFieldType;
|
|
|
+//import org.elasticsearch.dsl.exception.ElasticSql2DslException;
|
|
|
+//import org.elasticsearch.dsl.listener.ParseActionListener;
|
|
|
+//import org.elasticsearch.dsl.parser.sql.QueryFieldParser;
|
|
|
+//import org.elasticsearch.index.query.QueryBuilder;
|
|
|
+//
|
|
|
+//import java.util.Map;
|
|
|
+//
|
|
|
+//public abstract class AbstractFieldSpecifiedMethodQueryParser extends CheckableMethodQueryParser {
|
|
|
+//
|
|
|
+// protected static final String COMMA = ",";
|
|
|
+//
|
|
|
+// protected static final String COLON = ":";
|
|
|
+//
|
|
|
+// protected ParseActionListener parseActionListener;
|
|
|
+//
|
|
|
+// public AbstractFieldSpecifiedMethodQueryParser(ParseActionListener parseActionListener) {
|
|
|
+// this.parseActionListener = parseActionListener;
|
|
|
+// }
|
|
|
+//
|
|
|
+// protected abstract void checkQueryMethod(SQLMethodInvokeExpr matchQueryExpr, String queryAs, Object[] sqlArgs);
|
|
|
+//
|
|
|
+// protected abstract AtomQuery parseMethodQueryExpr(SQLMethodInvokeExpr matchQueryExpr, String queryAs, Object[] sqlArgs);
|
|
|
+//
|
|
|
+// protected interface IConditionMethodQueryBuilder {
|
|
|
+// QueryBuilder buildQuery(String queryFieldName, Object[] parameters);
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// public final AtomQuery parseAtomMethodQuery(SQLMethodInvokeExpr methodQueryExpr, String queryAs, Object[] sqlArgs) {
|
|
|
+// checkQueryMethod(methodQueryExpr, queryAs, sqlArgs);
|
|
|
+//
|
|
|
+// return parseMethodQueryExpr(methodQueryExpr, queryAs, sqlArgs);
|
|
|
+// }
|
|
|
+//
|
|
|
+// protected AtomQuery parseCondition(SQLExpr queryFieldExpr, Object[] parameters, String queryAs, IConditionMethodQueryBuilder queryBuilder) {
|
|
|
+// QueryFieldParser queryFieldParser = new QueryFieldParser();
|
|
|
+// ElasticSqlQueryField queryField = queryFieldParser.parseConditionQueryField(queryFieldExpr, queryAs);
|
|
|
+//
|
|
|
+// AtomQuery atomQuery = null;
|
|
|
+// if (queryField.getQueryFieldType() == QueryFieldType.RootDocField || queryField.getQueryFieldType() == QueryFieldType.InnerDocField) {
|
|
|
+// QueryBuilder originalQuery = queryBuilder.buildQuery(queryField.getQueryFieldFullName(), parameters);
|
|
|
+// atomQuery = new AtomQuery(originalQuery);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (queryField.getQueryFieldType() == QueryFieldType.NestedDocField) {
|
|
|
+// QueryBuilder originalQuery = queryBuilder.buildQuery(queryField.getQueryFieldFullName(), parameters);
|
|
|
+// atomQuery = new AtomQuery(originalQuery, queryField.getNestedDocContextPath());
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (atomQuery == null) {
|
|
|
+// throw new ElasticSql2DslException(String.format("[syntax error] query condition field can not support type[%s]", queryField.getQueryFieldType()));
|
|
|
+// }
|
|
|
+//
|
|
|
+// onAtomMethodQueryConditionParse(queryField, parameters);
|
|
|
+//
|
|
|
+// return atomQuery;
|
|
|
+// }
|
|
|
+//
|
|
|
+// private void onAtomMethodQueryConditionParse(ElasticSqlQueryField paramName, Object[] parameters) {
|
|
|
+// try {
|
|
|
+// parseActionListener.onAtomMethodQueryConditionParse(paramName, parameters);
|
|
|
+// }
|
|
|
+// catch (Exception ex) {
|
|
|
+// try {
|
|
|
+// parseActionListener.onFailure(ex);
|
|
|
+// }
|
|
|
+// catch (Exception exp) {
|
|
|
+// //ignore;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// protected Map<String, String> buildExtraMethodQueryParamsMap(String strMatchQueryParams) {
|
|
|
+// Map<String, String> extraParamMap = Maps.newHashMap();
|
|
|
+// for (String paramPair : strMatchQueryParams.split(COMMA)) {
|
|
|
+// String[] paramPairArr = paramPair.split(COLON);
|
|
|
+// if (paramPairArr.length == 2) {
|
|
|
+// extraParamMap.put(paramPairArr[0].trim(), paramPairArr[1].trim());
|
|
|
+// }
|
|
|
+// else {
|
|
|
+// throw new ElasticSql2DslException("Failed to parse query method params!");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return extraParamMap;
|
|
|
+// }
|
|
|
+//
|
|
|
+// protected Boolean isExtraParamsString(String extraParams) {
|
|
|
+// for (String paramPair : extraParams.split(COMMA)) {
|
|
|
+// String[] paramPairArr = paramPair.split(COLON);
|
|
|
+// if (paramPairArr.length != 2) {
|
|
|
+// return Boolean.FALSE;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return Boolean.TRUE;
|
|
|
+// }
|
|
|
+//}
|