chennan hace 8 años
padre
commit
8e97f8a382
Se han modificado 93 ficheros con 655 adiciones y 622 borrados
  1. 21 22
      pom.xml
  2. 14 16
      src/main/java/org/es/jdbc/api/AbstractConnection.java
  3. 6 6
      src/main/java/org/es/jdbc/api/AbstractDriverBasedDataSource.java
  4. 5 5
      src/main/java/org/es/jdbc/api/AbstractFeatureNotSupportedConnection.java
  5. 4 1
      src/main/java/org/es/jdbc/api/AbstractFeatureNotSupportedStatement.java
  6. 8 9
      src/main/java/org/es/jdbc/api/AbstractStatement.java
  7. 10 12
      src/main/java/org/es/jdbc/api/DriverManagerDataSource.java
  8. 3 4
      src/main/java/org/es/jdbc/api/ElasticDriver.java
  9. 12 18
      src/main/java/org/es/jdbc/api/ElasticSingleConnectionDataSource.java
  10. 2 2
      src/main/java/org/es/jdbc/api/ElasticStatement.java
  11. 32 0
      src/main/java/org/es/sql/bean/AtomQuery.java
  12. 6 6
      src/main/java/org/es/sql/dsl/bean/ElasticDslContext.java
  13. 8 5
      src/main/java/org/es/sql/dsl/bean/ElasticSqlParseResult.java
  14. 2 2
      src/main/java/org/es/sql/dsl/bean/ElasticSqlQueryField.java
  15. 2 2
      src/main/java/org/es/sql/dsl/bean/ElasticSqlQueryFields.java
  16. 1 1
      src/main/java/org/es/sql/dsl/bean/QueryFieldReferenceNode.java
  17. 1 1
      src/main/java/org/es/sql/dsl/bean/QueryFieldReferencePath.java
  18. 1 1
      src/main/java/org/es/sql/dsl/bean/RangeSegment.java
  19. 3 3
      src/main/java/org/es/sql/dsl/bean/SQLCondition.java
  20. 58 0
      src/main/java/org/es/sql/bean/SqlArgs.java
  21. 2 1
      src/main/java/org/es/sql/druid/ElasticSqlSelectParser.java
  22. 2 2
      src/main/java/org/es/sql/druid/ElasticSqlSelectQueryBlock.java
  23. 0 32
      src/main/java/org/es/sql/dsl/bean/AtomQuery.java
  24. 0 15
      src/main/java/org/es/sql/dsl/listener/ParseActionListener.java
  25. 0 27
      src/main/java/org/es/sql/dsl/listener/ParseActionListenerAdapter.java
  26. 0 9
      src/main/java/org/es/sql/dsl/parser/query/method/MethodQueryParser.java
  27. 1 1
      src/main/java/org/es/sql/dsl/enums/QueryFieldType.java
  28. 1 1
      src/main/java/org/es/sql/dsl/enums/SQLBoolOperator.java
  29. 1 1
      src/main/java/org/es/sql/dsl/enums/SQLConditionOperator.java
  30. 1 1
      src/main/java/org/es/sql/dsl/enums/SQLConditionType.java
  31. 1 1
      src/main/java/org/es/sql/dsl/enums/SortOption.java
  32. 1 1
      src/main/java/org/es/sql/dsl/exception/ElasticSql2DslException.java
  33. 22 20
      src/main/java/org/es/sql/dsl/helper/ElasticSqlArgTransferHelper.java
  34. 6 4
      src/main/java/org/es/sql/dsl/helper/ElasticSqlDateParseHelper.java
  35. 2 2
      src/main/java/org/es/sql/dsl/helper/ElasticSqlMethodInvokeHelper.java
  36. 19 0
      src/main/java/org/es/sql/listener/ParseActionListener.java
  37. 34 0
      src/main/java/org/es/sql/listener/ParseActionListenerAdapter.java
  38. 9 8
      src/main/java/org/es/sql/dsl/parser/ElasticSql2DslParser.java
  39. 12 27
      src/main/java/org/es/sql/dsl/parser/query/exact/AbstractAtomExactQueryParser.java
  40. 10 9
      src/main/java/org/es/sql/dsl/parser/query/exact/BetweenAndAtomQueryParser.java
  41. 10 9
      src/main/java/org/es/sql/dsl/parser/query/exact/BinaryAtomQueryParser.java
  42. 2 2
      src/main/java/org/es/sql/dsl/parser/query/exact/IConditionExactQueryBuilder.java
  43. 9 8
      src/main/java/org/es/sql/dsl/parser/query/exact/InListAtomQueryParser.java
  44. 9 23
      src/main/java/org/es/sql/dsl/parser/query/method/AbstractFieldSpecificMethodQueryParser.java
  45. 10 9
      src/main/java/org/es/sql/dsl/parser/query/method/MethodInvocation.java
  46. 9 0
      src/main/java/org/es/sql/parser/query/method/MethodQueryParser.java
  47. 5 5
      src/main/java/org/es/sql/dsl/parser/query/method/ParameterizedMethodQueryParser.java
  48. 3 3
      src/main/java/org/es/sql/dsl/parser/query/method/expr/AbstractParameterizedMethodExpression.java
  49. 2 2
      src/main/java/org/es/sql/dsl/parser/query/method/expr/FieldSpecificMethodExpression.java
  50. 3 3
      src/main/java/org/es/sql/dsl/parser/query/method/expr/MethodExpression.java
  51. 2 2
      src/main/java/org/es/sql/dsl/parser/query/method/expr/ParameterizedMethodExpression.java
  52. 9 8
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/FullTextAtomQueryParser.java
  53. 7 7
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MatchAtomQueryParser.java
  54. 7 8
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MultiMatchAtomQueryParser.java
  55. 5 6
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/QueryStringAtomQueryParser.java
  56. 6 7
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/SimpleQueryStringAtomQueryParser.java
  57. 5 5
      src/main/java/org/es/sql/dsl/parser/query/method/script/ScriptAtomQueryParser.java
  58. 5 5
      src/main/java/org/es/sql/dsl/parser/query/method/term/FuzzyAtomQueryParser.java
  59. 5 5
      src/main/java/org/es/sql/dsl/parser/query/method/term/PrefixAtomQueryParser.java
  60. 5 6
      src/main/java/org/es/sql/dsl/parser/query/method/term/RegexpAtomQueryParser.java
  61. 5 5
      src/main/java/org/es/sql/dsl/parser/query/method/term/TermAtomQueryParser.java
  62. 9 8
      src/main/java/org/es/sql/dsl/parser/query/method/term/TermLevelAtomQueryParser.java
  63. 5 5
      src/main/java/org/es/sql/dsl/parser/query/method/term/TermsAtomQueryParser.java
  64. 5 5
      src/main/java/org/es/sql/dsl/parser/query/method/term/WildcardAtomQueryParser.java
  65. 42 40
      src/main/java/org/es/sql/dsl/parser/sql/AbstractQueryConditionParser.java
  66. 6 6
      src/main/java/org/es/sql/dsl/parser/sql/QueryFieldParser.java
  67. 4 4
      src/main/java/org/es/sql/dsl/parser/sql/QueryFromParser.java
  68. 18 17
      src/main/java/org/es/sql/dsl/parser/sql/QueryGroupByParser.java
  69. 12 9
      src/main/java/org/es/sql/dsl/parser/sql/QueryLimitSizeParser.java
  70. 5 5
      src/main/java/org/es/sql/dsl/parser/sql/QueryMatchConditionParser.java
  71. 14 13
      src/main/java/org/es/sql/dsl/parser/sql/QueryOrderConditionParser.java
  72. 2 2
      src/main/java/org/es/sql/dsl/parser/sql/QueryParser.java
  73. 8 6
      src/main/java/org/es/sql/dsl/parser/sql/QueryRoutingValParser.java
  74. 10 24
      src/main/java/org/es/sql/dsl/parser/sql/QuerySelectFieldListParser.java
  75. 5 5
      src/main/java/org/es/sql/dsl/parser/sql/QueryWhereConditionParser.java
  76. 5 5
      src/main/java/org/es/sql/dsl/parser/sql/sort/AbstractMethodSortParser.java
  77. 1 1
      src/main/java/org/es/sql/dsl/parser/sql/sort/ConditionSortBuilder.java
  78. 4 4
      src/main/java/org/es/sql/dsl/parser/sql/sort/MethodSortParser.java
  79. 6 6
      src/main/java/org/es/sql/dsl/parser/sql/sort/NvlMethodSortParser.java
  80. 4 4
      src/main/java/org/es/sql/dsl/parser/sql/sort/ParseSortBuilderHelper.java
  81. 3 3
      src/main/java/org/es/sql/dsl/parser/sql/sort/ScriptMethodSortParser.java
  82. 0 1
      src/test/java/org/es/test/ProductIndexQueryTest.java
  83. 1 1
      src/test/java/org/es/test/jdbc/ElasticDriverTest.java
  84. 4 4
      src/test/java/org/es/test/jdbc/bean/ProductAggResult.java
  85. 2 2
      src/test/java/org/es/test/query/SqlParserLimitTest.java
  86. 6 6
      src/test/java/org/es/test/query/SqlParserListenerTest.java
  87. 2 2
      src/test/java/org/es/test/query/SqlParserOrderByTest.java
  88. 2 2
      src/test/java/org/es/test/query/SqlParserQueryTest.java
  89. 2 2
      src/test/java/org/es/test/query/SqlParserRoutingTest.java
  90. 2 2
      src/test/java/org/es/test/query/SqlParserSelectFieldTest.java
  91. 2 2
      src/test/java/org/es/test/query/SqlParserWhereConditionTest.java
  92. 9 10
      src/test/resources/application-context.xml
  93. 9 10
      target/test-classes/application-context.xml

+ 21 - 22
pom.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <name>elasticsearch-query-toolkit</name>
     <modelVersion>4.0.0</modelVersion>
@@ -23,7 +23,7 @@
         <maven.compiler.target>1.8</maven.compiler.target>
         <skip.unit.tests>false</skip.unit.tests>
     </properties>
-	
+
     <repositories>
         <repository>
             <id>uk.maven.org</id>
@@ -50,24 +50,24 @@
             <artifactId>log4j-core</artifactId>
             <version>2.8.2</version>
         </dependency>
-		
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-orm</artifactId>
-			<version>3.0.5.RELEASE</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.ibatis</groupId>
-			<artifactId>ibatis-sqlmap</artifactId>
-			<version>2.3.4.726</version>
-		</dependency>
-		
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+            <version>3.0.5.RELEASE</version>
+        </dependency>
+
         <dependency>
-			 <groupId>com.alibaba</groupId>
-			 <artifactId>druid</artifactId>
-			 <version>1.0.24</version>
-		</dependency>
+            <groupId>org.apache.ibatis</groupId>
+            <artifactId>ibatis-sqlmap</artifactId>
+            <version>2.3.4.726</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.0.24</version>
+        </dependency>
 
         <dependency>
             <groupId>com.google.guava</groupId>
@@ -100,7 +100,6 @@
         </dependency>
 
 
-
         <dependency>
             <groupId>org.elasticsearch.client</groupId>
             <artifactId>transport</artifactId>
@@ -114,7 +113,7 @@
             <version>2.3</version>
         </dependency>
 
-		<dependency>
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.12</version>

+ 14 - 16
src/main/java/org/es/jdbc/api/AbstractConnection.java

@@ -4,11 +4,10 @@ import java.sql.*;
 import java.util.Properties;
 
 public abstract class AbstractConnection extends AbstractFeatureNotSupportedConnection {
-    private boolean closed = false;
-    private int transactionIsolation;
-
     protected String url;
     protected Properties info;
+    private boolean closed = false;
+    private int transactionIsolation;
 
     public AbstractConnection(String url, Properties info) {
         this.url = url;
@@ -70,10 +69,9 @@ public abstract class AbstractConnection extends AbstractFeatureNotSupportedConn
         return false;
     }
 
-
     @Override
-    public void setTransactionIsolation(int level) throws SQLException {
-        this.transactionIsolation = level;
+    public void setAutoCommit(boolean autoCommit) throws SQLException {
+        // ignore
     }
 
     @Override
@@ -82,11 +80,21 @@ public abstract class AbstractConnection extends AbstractFeatureNotSupportedConn
     }
 
     @Override
+    public void setTransactionIsolation(int level) throws SQLException {
+        this.transactionIsolation = level;
+    }
+
+    @Override
     public boolean isReadOnly() throws SQLException {
         return true;
     }
 
     @Override
+    public void setReadOnly(boolean readOnly) throws SQLException {
+        // ignore
+    }
+
+    @Override
     public void close() throws SQLException {
         closed = true;
     }
@@ -97,11 +105,6 @@ public abstract class AbstractConnection extends AbstractFeatureNotSupportedConn
     }
 
     @Override
-    public void setReadOnly(boolean readOnly) throws SQLException {
-        // ignore
-    }
-
-    @Override
     public void commit() throws SQLException {
         // ignore
     }
@@ -112,11 +115,6 @@ public abstract class AbstractConnection extends AbstractFeatureNotSupportedConn
     }
 
     @Override
-    public void setAutoCommit(boolean autoCommit) throws SQLException {
-        // ignore
-    }
-
-    @Override
     public SQLWarning getWarnings() throws SQLException {
         return null;
     }

+ 6 - 6
src/main/java/org/es/jdbc/api/AbstractDriverBasedDataSource.java

@@ -10,22 +10,22 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
 
     private Properties connectionProperties;
 
-    public void setUrl(String url) {
-        this.url = url.trim();
-    }
-
     public String getUrl() {
         return this.url;
     }
 
-    public void setConnectionProperties(Properties connectionProperties) {
-        this.connectionProperties = connectionProperties;
+    public void setUrl(String url) {
+        this.url = url.trim();
     }
 
     public Properties getConnectionProperties() {
         return this.connectionProperties;
     }
 
+    public void setConnectionProperties(Properties connectionProperties) {
+        this.connectionProperties = connectionProperties;
+    }
+
     public Connection getConnection() throws SQLException {
         return getConnectionFromDriver();
     }

+ 5 - 5
src/main/java/org/es/jdbc/api/AbstractFeatureNotSupportedConnection.java

@@ -134,6 +134,11 @@ public abstract class AbstractFeatureNotSupportedConnection implements Connectio
     }
 
     @Override
+    public final void setClientInfo(final Properties properties) throws SQLClientInfoException {
+        throw new UnsupportedOperationException("setClientInfo properties");
+    }
+
+    @Override
     public final String getClientInfo(final String name) throws SQLException {
         throw new SQLFeatureNotSupportedException("getClientInfo name");
     }
@@ -142,9 +147,4 @@ public abstract class AbstractFeatureNotSupportedConnection implements Connectio
     public final void setClientInfo(final String name, final String value) throws SQLClientInfoException {
         throw new UnsupportedOperationException("setClientInfo name value");
     }
-
-    @Override
-    public final void setClientInfo(final Properties properties) throws SQLClientInfoException {
-        throw new UnsupportedOperationException("setClientInfo properties");
-    }
 }

+ 4 - 1
src/main/java/org/es/jdbc/api/AbstractFeatureNotSupportedStatement.java

@@ -1,7 +1,10 @@
 package org.es.jdbc.api;
 
 
-import java.sql.*;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.sql.Statement;
 
 public abstract class AbstractFeatureNotSupportedStatement implements Statement {
 

+ 8 - 9
src/main/java/org/es/jdbc/api/AbstractStatement.java

@@ -64,13 +64,13 @@ public abstract class AbstractStatement extends AbstractFeatureNotSupportedState
     }
 
     @Override
-    public void setFetchSize(int rows) throws SQLException {
-        // ignore
+    public int getFetchSize() throws SQLException {
+        return 0;
     }
 
     @Override
-    public int getFetchSize() throws SQLException {
-        return 0;
+    public void setFetchSize(int rows) throws SQLException {
+        // ignore
     }
 
     @Override
@@ -99,15 +99,14 @@ public abstract class AbstractStatement extends AbstractFeatureNotSupportedState
         return isClosed;
     }
 
-
     @Override
-    public void setPoolable(boolean poolable) throws SQLException {
-        // ignore
+    public boolean isPoolable() throws SQLException {
+        return false;
     }
 
     @Override
-    public boolean isPoolable() throws SQLException {
-        return false;
+    public void setPoolable(boolean poolable) throws SQLException {
+        // ignore
     }
 
     @Override

+ 10 - 12
src/main/java/org/es/jdbc/api/DriverManagerDataSource.java

@@ -26,18 +26,6 @@ public class DriverManagerDataSource extends AbstractDriverBasedDataSource {
         setUrl(url);
     }
 
-
-    public void setDriverClassName(String driverClassName) {
-        String driverClassNameToUse = driverClassName.trim();
-        try {
-            Class.forName(driverClassNameToUse, true, getDefaultClassLoader());
-        }
-        catch (ClassNotFoundException ex) {
-            throw new IllegalStateException("Could not load JDBC driver class [" + driverClassNameToUse + "]", ex);
-        }
-    }
-
-
     public static ClassLoader getDefaultClassLoader() {
         ClassLoader cl = null;
         try {
@@ -62,6 +50,16 @@ public class DriverManagerDataSource extends AbstractDriverBasedDataSource {
         return cl;
     }
 
+    public void setDriverClassName(String driverClassName) {
+        String driverClassNameToUse = driverClassName.trim();
+        try {
+            Class.forName(driverClassNameToUse, true, getDefaultClassLoader());
+        }
+        catch (ClassNotFoundException ex) {
+            throw new IllegalStateException("Could not load JDBC driver class [" + driverClassNameToUse + "]", ex);
+        }
+    }
+
     @Override
     protected Connection getConnectionFromDriver(Properties props) throws SQLException {
         return getConnectionFromDriverManager(getUrl(), props);

+ 3 - 4
src/main/java/org/es/jdbc/api/ElasticDriver.java

@@ -12,10 +12,6 @@ public class ElasticDriver implements Driver {
 
     private static final String ELASTIC_SEARCH_DRIVER_PREFIX = "jdbc:elastic:";
 
-    private ElasticClientProxy elasticClientProxy = null;
-
-    private ElasticClientProvider elasticClientProvider;
-
     static {
         try {
             DriverManager.registerDriver(new ElasticDriver());
@@ -25,6 +21,9 @@ public class ElasticDriver implements Driver {
         }
     }
 
+    private ElasticClientProxy elasticClientProxy = null;
+    private ElasticClientProvider elasticClientProvider;
+
     private ElasticDriver() {
 
     }

+ 12 - 18
src/main/java/org/es/jdbc/api/ElasticSingleConnectionDataSource.java

@@ -13,18 +13,13 @@ import java.sql.Connection;
 import java.sql.SQLException;
 
 public class ElasticSingleConnectionDataSource extends DriverManagerDataSource implements SmartDataSource {
+    private final Object connectionMonitor = new Object();
     private boolean suppressClose;
-
     private Connection target;
-
     private Connection connection;
-
     private Client client;
-
     private ElasticClientProvider elasticClientProvider;
 
-    private final Object connectionMonitor = new Object();
-
     public ElasticSingleConnectionDataSource() {
 
     }
@@ -38,14 +33,14 @@ public class ElasticSingleConnectionDataSource extends DriverManagerDataSource i
         this.elasticClientProvider = elasticClientProvider;
     }
 
-    public void setSuppressClose(boolean suppressClose) {
-        this.suppressClose = suppressClose;
-    }
-
     protected boolean isSuppressClose() {
         return this.suppressClose;
     }
 
+    public void setSuppressClose(boolean suppressClose) {
+        this.suppressClose = suppressClose;
+    }
+
     @Override
     public Connection getConnection() throws SQLException {
         synchronized (this.connectionMonitor) {
@@ -154,6 +149,13 @@ public class ElasticSingleConnectionDataSource extends DriverManagerDataSource i
                 new CloseSuppressingInvocationHandler(target));
     }
 
+    protected Boolean getAutoCommitValue() {
+        return Boolean.FALSE;
+    }
+
+    public void setAutoCommit(boolean autoCommit) {
+        // ignore
+    }
 
     private static class CloseSuppressingInvocationHandler implements InvocationHandler {
         private final Connection target;
@@ -204,12 +206,4 @@ public class ElasticSingleConnectionDataSource extends DriverManagerDataSource i
             }
         }
     }
-
-    protected Boolean getAutoCommitValue() {
-        return Boolean.FALSE;
-    }
-
-    public void setAutoCommit(boolean autoCommit) {
-        // ignore
-    }
 }

+ 2 - 2
src/main/java/org/es/jdbc/api/ElasticStatement.java

@@ -4,8 +4,8 @@ import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.action.search.SearchResponse;
 import org.es.jdbc.es.JdbcSearchActionExecutor;
 import org.es.jdbc.es.JdbcSearchResponseExtractor;
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.parser.ElasticSql2DslParser;
 
 import java.sql.Connection;
 import java.sql.ResultSet;

+ 32 - 0
src/main/java/org/es/sql/bean/AtomQuery.java

@@ -0,0 +1,32 @@
+package org.es.sql.bean;
+
+import org.elasticsearch.index.query.QueryBuilder;
+
+public class AtomQuery {
+    private QueryBuilder query;
+    private boolean isNestedQuery;
+    private String nestedQueryPath;
+
+    public AtomQuery(QueryBuilder query) {
+        this.query = query;
+        this.isNestedQuery = false;
+    }
+
+    public AtomQuery(QueryBuilder query, String nestedQueryPath) {
+        this.query = query;
+        this.isNestedQuery = true;
+        this.nestedQueryPath = nestedQueryPath;
+    }
+
+    public QueryBuilder getQuery() {
+        return query;
+    }
+
+    public boolean getNestedQuery() {
+        return isNestedQuery;
+    }
+
+    public String getNestedQueryPath() {
+        return nestedQueryPath;
+    }
+}

+ 6 - 6
src/main/java/org/es/sql/dsl/bean/ElasticDslContext.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
 import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
 
@@ -6,18 +6,18 @@ public class ElasticDslContext {
     //SQL
     private SQLQueryExpr queryExpr;
     //SQL Args
-    private Object[] sqlArgs;
+    private SQLArgs SQLArgs;
     //Result
     private ElasticSqlParseResult parseResult;
 
-    public ElasticDslContext(SQLQueryExpr queryExpr, Object[] sqlArgs) {
+    public ElasticDslContext(SQLQueryExpr queryExpr, SQLArgs SQLArgs) {
         this.queryExpr = queryExpr;
-        this.sqlArgs = sqlArgs;
+        this.SQLArgs = SQLArgs;
         parseResult = new ElasticSqlParseResult();
     }
 
-    public Object[] getSqlArgs() {
-        return sqlArgs;
+    public SQLArgs getSQLArgs() {
+        return SQLArgs;
     }
 
     public SQLQueryExpr getQueryExpr() {

+ 8 - 5
src/main/java/org/es/sql/dsl/bean/ElasticSqlParseResult.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
@@ -7,7 +7,6 @@ import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.client.Client;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
 import org.elasticsearch.search.aggregations.AggregationBuilder;
 import org.elasticsearch.search.sort.SortBuilder;
 import org.es.sql.utils.ElasticMockClient;
@@ -185,11 +184,11 @@ public class ElasticSqlParseResult {
                 AggregationBuilder preAgg = null;
                 for (AggregationBuilder aggItem : groupBy) {
                     if (preAgg == null) {
-                        preAgg = (AggregationBuilder) aggItem;
+                        preAgg = aggItem;
                         continue;
                     }
                     preAgg.subAggregation(aggItem);
-                    preAgg = (AggregationBuilder) aggItem;
+                    preAgg = aggItem;
                 }
                 requestBuilder.addAggregation(groupBy.get(0));
             }
@@ -214,6 +213,10 @@ public class ElasticSqlParseResult {
     @Override
     public String toString() {
         String ptn = "index:%s,type:%s,query_as:%s,from:%s,size:%s,routing:%s,dsl:%s";
-        return String.format(ptn, indices, type, queryAs, from, size, routingBy != null ? routingBy.toString() : "[]", toDsl());
+
+        return String.format(
+                ptn, indices, type, queryAs, from, size,
+                (routingBy != null ? routingBy.toString() : "[]"), toDsl()
+        );
     }
 }

+ 2 - 2
src/main/java/org/es/sql/dsl/bean/ElasticSqlQueryField.java

@@ -1,6 +1,6 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
-import org.es.sql.dsl.enums.QueryFieldType;
+import org.es.sql.enums.QueryFieldType;
 
 public class ElasticSqlQueryField {
     /*[内嵌文档]的上下文路径*/

+ 2 - 2
src/main/java/org/es/sql/dsl/bean/ElasticSqlQueryFields.java

@@ -1,6 +1,6 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
-import org.es.sql.dsl.enums.QueryFieldType;
+import org.es.sql.enums.QueryFieldType;
 
 public class ElasticSqlQueryFields {
     private ElasticSqlQueryFields() {

+ 1 - 1
src/main/java/org/es/sql/dsl/bean/QueryFieldReferenceNode.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
 public class QueryFieldReferenceNode {
 

+ 1 - 1
src/main/java/org/es/sql/dsl/bean/QueryFieldReferencePath.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;

+ 1 - 1
src/main/java/org/es/sql/dsl/bean/RangeSegment.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
 public class RangeSegment {
     private Object from;

+ 3 - 3
src/main/java/org/es/sql/dsl/bean/SQLCondition.java

@@ -1,8 +1,8 @@
-package org.es.sql.dsl.bean;
+package org.es.sql.bean;
 
 import com.google.common.collect.Lists;
-import org.es.sql.dsl.enums.SQLBoolOperator;
-import org.es.sql.dsl.enums.SQLConditionType;
+import org.es.sql.enums.SQLBoolOperator;
+import org.es.sql.enums.SQLConditionType;
 
 import java.util.List;
 

+ 58 - 0
src/main/java/org/es/sql/bean/SqlArgs.java

@@ -0,0 +1,58 @@
+package org.es.sql.bean;
+
+
+public class SQLArgs {
+
+    private Object[] args;
+
+    public SQLArgs(Object[] args) {
+        this.args = args;
+
+        ensureAllNotNull();
+    }
+
+    private void ensureAllNotNull() {
+        if (args == null) {
+            throw new IllegalArgumentException("Sql args is null");
+        }
+
+        for (int idx = 0; idx < args.length; idx++) {
+            if (args[idx] == null) {
+                throw new IllegalArgumentException(
+                        String.format("The sql arg[%s] is null", idx));
+            }
+        }
+    }
+
+    public Object[] getArgs() {
+        return args;
+    }
+
+    public int getArgCount() {
+        return args.length;
+    }
+
+    public Object get(int index) {
+        if (index >= getArgCount()) {
+            throw new IndexOutOfBoundsException(
+                    String.format("Index[%s] Size[%s]", index, getArgCount()));
+        }
+        return args[index];
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T> T get(int index, Class<T> argClass) {
+        if (index >= getArgCount()) {
+            throw new IndexOutOfBoundsException(
+                    String.format("Index[%s] Size[%s]", index, getArgCount()));
+        }
+
+        if (args[index].getClass().isAssignableFrom(argClass)) {
+            return (T) get(index);
+        }
+
+        throw new IllegalArgumentException(
+                String.format("Arg[%s] can not match type[%s]",
+                        index, argClass.getName()));
+    }
+}

+ 2 - 1
src/main/java/org/es/sql/druid/ElasticSqlSelectParser.java

@@ -75,7 +75,8 @@ public class ElasticSqlSelectParser extends SQLSelectParser {
     @Override
     public SQLTableSource parseTableSource() {
         if (lexer.token() != Token.IDENTIFIER) {
-            throw new ParserException("[syntax error] from table source should be a identifier");
+            throw new ParserException(
+                    "[syntax error] from table source is not a identifier");
         }
 
         SQLExprTableSource tableReference = new SQLExprTableSource();

+ 2 - 2
src/main/java/org/es/sql/druid/ElasticSqlSelectQueryBlock.java

@@ -55,7 +55,7 @@ public class ElasticSqlSelectQueryBlock extends SQLSelectQueryBlock implements S
 
         @Override
         protected void accept0(SQLASTVisitor visitor) {
-            throw new UnsupportedOperationException("ElasticSql un-support method : accept0(SQLASTVisitor visitor)");
+            throw new UnsupportedOperationException("accept0(SQLASTVisitor visitor)");
         }
 
         public List<SQLExpr> getRoutingValues() {
@@ -91,7 +91,7 @@ public class ElasticSqlSelectQueryBlock extends SQLSelectQueryBlock implements S
 
         @Override
         protected void accept0(SQLASTVisitor visitor) {
-            throw new UnsupportedOperationException("ElasticSql un-support method : accept0(SQLASTVisitor visitor)");
+            throw new UnsupportedOperationException("accept0(SQLASTVisitor visitor)");
         }
 
     }

+ 0 - 32
src/main/java/org/es/sql/dsl/bean/AtomQuery.java

@@ -1,32 +0,0 @@
-package org.es.sql.dsl.bean;
-
-import org.elasticsearch.index.query.QueryBuilder;
-
-public class AtomQuery {
-    private QueryBuilder query;
-    private Boolean isNestedQuery;
-    private String nestedQueryPathContext;
-
-    public AtomQuery(QueryBuilder query) {
-        this.query = query;
-        this.isNestedQuery = Boolean.FALSE;
-    }
-
-    public AtomQuery(QueryBuilder query, String nestedQueryPathContext) {
-        this.query = query;
-        this.isNestedQuery = Boolean.TRUE;
-        this.nestedQueryPathContext = nestedQueryPathContext;
-    }
-
-    public QueryBuilder getQuery() {
-        return query;
-    }
-
-    public Boolean getNestedQuery() {
-        return isNestedQuery;
-    }
-
-    public String getNestedQueryPathContext() {
-        return nestedQueryPathContext;
-    }
-}

+ 0 - 15
src/main/java/org/es/sql/dsl/listener/ParseActionListener.java

@@ -1,15 +0,0 @@
-package org.es.sql.dsl.listener;
-
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.SQLConditionOperator;
-
-public interface ParseActionListener {
-
-    void onSelectFieldParse(ElasticSqlQueryField field);
-
-    void onAtomExactQueryConditionParse(ElasticSqlQueryField paramName, Object[] paramValues, SQLConditionOperator operator);
-
-    void onAtomMethodQueryConditionParse(ElasticSqlQueryField paramName, Object[] parameters);
-
-    void onFailure(Throwable t);
-}

+ 0 - 27
src/main/java/org/es/sql/dsl/listener/ParseActionListenerAdapter.java

@@ -1,27 +0,0 @@
-package org.es.sql.dsl.listener;
-
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.SQLConditionOperator;
-
-public class ParseActionListenerAdapter implements ParseActionListener {
-
-    @Override
-    public void onSelectFieldParse(ElasticSqlQueryField field) {
-
-    }
-
-    @Override
-    public void onAtomExactQueryConditionParse(ElasticSqlQueryField paramName, Object[] paramValues, SQLConditionOperator operator) {
-
-    }
-
-    @Override
-    public void onAtomMethodQueryConditionParse(ElasticSqlQueryField paramName, Object[] parameters) {
-
-    }
-
-    @Override
-    public void onFailure(Throwable t) {
-
-    }
-}

+ 0 - 9
src/main/java/org/es/sql/dsl/parser/query/method/MethodQueryParser.java

@@ -1,9 +0,0 @@
-package org.es.sql.dsl.parser.query.method;
-
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.expr.MethodExpression;
-
-public interface MethodQueryParser extends MethodExpression {
-    AtomQuery parseAtomMethodQuery(MethodInvocation invocation) throws ElasticSql2DslException;
-}

+ 1 - 1
src/main/java/org/es/sql/dsl/enums/QueryFieldType.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.enums;
+package org.es.sql.enums;
 
 public enum QueryFieldType {
     MatchAllField,

+ 1 - 1
src/main/java/org/es/sql/dsl/enums/SQLBoolOperator.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.enums;
+package org.es.sql.enums;
 
 public enum SQLBoolOperator {
     AND, OR

+ 1 - 1
src/main/java/org/es/sql/dsl/enums/SQLConditionOperator.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.enums;
+package org.es.sql.enums;
 
 public enum SQLConditionOperator {
     Equality,

+ 1 - 1
src/main/java/org/es/sql/dsl/enums/SQLConditionType.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.enums;
+package org.es.sql.enums;
 
 
 public enum SQLConditionType {

+ 1 - 1
src/main/java/org/es/sql/dsl/enums/SortOption.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.enums;
+package org.es.sql.enums;
 
 public enum SortOption {
     SUM {

+ 1 - 1
src/main/java/org/es/sql/dsl/exception/ElasticSql2DslException.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.exception;
+package org.es.sql.exception;
 
 import com.alibaba.druid.sql.parser.ParserException;
 

+ 22 - 20
src/main/java/org/es/sql/dsl/helper/ElasticSqlArgTransferHelper.java

@@ -1,39 +1,38 @@
-package org.es.sql.dsl.helper;
+package org.es.sql.helper;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.*;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.exception.ElasticSql2DslException;
 
 import java.util.List;
 
-public class ElasticSqlArgTransferHelper {
+public class ElasticSqlArgConverter {
 
-    public static Object[] transferSqlArgs(List<SQLExpr> exprList, Object[] sqlArgs) {
+    private ElasticSqlArgConverter() {
+
+    }
+
+    public static Object[] convertSqlArgs(List<SQLExpr> exprList, SQLArgs SQLArgs) {
         Object[] values = new Object[exprList.size()];
         for (int idx = 0; idx < exprList.size(); idx++) {
-            values[idx] = transferSqlArg(exprList.get(idx), sqlArgs, true);
+            values[idx] = convertSqlArg(exprList.get(idx), SQLArgs, true);
         }
         return values;
     }
 
-    public static Object transferSqlArg(SQLExpr expr, Object[] sqlArgs) {
-        return transferSqlArg(expr, sqlArgs, true);
+    public static Object convertSqlArg(SQLExpr expr, SQLArgs SQLArgs) {
+        return convertSqlArg(expr, SQLArgs, true);
     }
 
-    public static Object transferSqlArg(SQLExpr expr, Object[] sqlArgs, boolean recognizeDateArg) {
+    public static Object convertSqlArg(SQLExpr expr, SQLArgs SQLArgs, boolean recognizeDateArg) {
         if (expr instanceof SQLVariantRefExpr) {
             SQLVariantRefExpr varRefExpr = (SQLVariantRefExpr) expr;
-            if (sqlArgs == null || sqlArgs.length == 0) {
-                throw new ElasticSql2DslException("[syntax error] Sql args cannot be blank");
-            }
-            if (varRefExpr.getIndex() >= sqlArgs.length) {
-                throw new ElasticSql2DslException("[syntax error] Sql args out of index: " + varRefExpr.getIndex());
-            }
             //parse date
-            if (recognizeDateArg && ElasticSqlDateParseHelper.isDateArgObjectValue(sqlArgs[varRefExpr.getIndex()])) {
-                return ElasticSqlDateParseHelper.formatDefaultEsDateObjectValue(sqlArgs[varRefExpr.getIndex()]);
+            if (recognizeDateArg && ElasticSqlDateParseHelper.isDateArgObjectValue(SQLArgs.get(varRefExpr.getIndex()))) {
+                return ElasticSqlDateParseHelper.formatDefaultEsDateObjectValue(SQLArgs.get(varRefExpr.getIndex()));
             }
-            return sqlArgs[varRefExpr.getIndex()];
+            return SQLArgs.get(varRefExpr.getIndex());
         }
 
         //numbers
@@ -61,11 +60,14 @@ public class ElasticSqlArgTransferHelper {
             //parse date method
             if (ElasticSqlDateParseHelper.isDateMethod(methodExpr)) {
                 ElasticSqlMethodInvokeHelper.checkDateMethod(methodExpr);
-                String patternArg = (String) ElasticSqlArgTransferHelper.transferSqlArg(methodExpr.getParameters().get(0), sqlArgs, false);
-                String timeValArg = (String) ElasticSqlArgTransferHelper.transferSqlArg(methodExpr.getParameters().get(1), sqlArgs, false);
+                String patternArg = (String) ElasticSqlArgConverter.convertSqlArg(methodExpr.getParameters().get(0), SQLArgs, false);
+                String timeValArg = (String) ElasticSqlArgConverter.convertSqlArg(methodExpr.getParameters().get(1), SQLArgs, false);
                 return ElasticSqlDateParseHelper.formatDefaultEsDate(patternArg, timeValArg);
             }
         }
-        throw new ElasticSql2DslException("[syntax error] Can not support arg type: " + expr.toString());
+
+        throw new ElasticSql2DslException(
+                String.format("[syntax error] Arg type[%s] can not support.",
+                        expr.toString()));
     }
 }

+ 6 - 4
src/main/java/org/es/sql/dsl/helper/ElasticSqlDateParseHelper.java

@@ -1,7 +1,7 @@
-package org.es.sql.dsl.helper;
+package org.es.sql.helper;
 
 import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
+import org.es.sql.exception.ElasticSql2DslException;
 import org.es.sql.utils.Constants;
 
 import java.text.ParseException;
@@ -39,7 +39,8 @@ public class ElasticSqlDateParseHelper {
         if (SqlDateRegex.DATE_REGEX_03.getPattern().matcher(date).matches()) {
             return formatDefaultEsDate(SqlDateRegex.DATE_REGEX_03.getPatternString(), date);
         }
-        throw new ElasticSql2DslException("[syntax error] Sql cannot support such date type: " + date);
+        throw new ElasticSql2DslException(
+                String.format("[syntax error] Can't support such date type: %s", date));
     }
 
     public static String formatDefaultEsDateObjectValue(Object date) {
@@ -47,7 +48,8 @@ public class ElasticSqlDateParseHelper {
             SimpleDateFormat dateFormat = new SimpleDateFormat(Constants.DEFAULT_ES_DATE_FORMAT);
             return dateFormat.format(date);
         }
-        throw new ElasticSql2DslException("[syntax error] Sql cannot support such date type: " + date.getClass());
+        throw new ElasticSql2DslException(
+                String.format("[syntax error] Sql cannot support such date type: %s", date.getClass()));
     }
 
     public static String formatDefaultEsDate(String patternArg, String timeValArg) {

+ 2 - 2
src/main/java/org/es/sql/dsl/helper/ElasticSqlMethodInvokeHelper.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.helper;
+package org.es.sql.helper;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr;
@@ -8,7 +8,7 @@ import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
+import org.es.sql.exception.ElasticSql2DslException;
 
 import java.util.List;
 

+ 19 - 0
src/main/java/org/es/sql/listener/ParseActionListener.java

@@ -0,0 +1,19 @@
+package org.es.sql.listener;
+
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.enums.SQLConditionOperator;
+
+import java.util.List;
+
+public interface ParseActionListener {
+
+    void onSelectFieldParse(ElasticSqlQueryField field);
+
+    void onAtomExactQueryConditionParse(ElasticSqlQueryField paramName, Object[] params, SQLConditionOperator operator);
+
+    void onAtomMethodQueryConditionParse(ElasticSqlQueryField paramName, Object[] params);
+
+    void onRoutingValuesParse(List<String> routingValues);
+
+    void onLimitSizeParse(int from, int size);
+}

+ 34 - 0
src/main/java/org/es/sql/listener/ParseActionListenerAdapter.java

@@ -0,0 +1,34 @@
+package org.es.sql.listener;
+
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.enums.SQLConditionOperator;
+
+import java.util.List;
+
+public class ParseActionListenerAdapter implements ParseActionListener {
+
+    @Override
+    public void onSelectFieldParse(ElasticSqlQueryField field) {
+
+    }
+
+    @Override
+    public void onAtomExactQueryConditionParse(ElasticSqlQueryField paramName, Object[] params, SQLConditionOperator operator) {
+
+    }
+
+    @Override
+    public void onAtomMethodQueryConditionParse(ElasticSqlQueryField paramName, Object[] params) {
+
+    }
+
+    @Override
+    public void onRoutingValuesParse(List<String> routingValues) {
+
+    }
+
+    @Override
+    public void onLimitSizeParse(int from, int size) {
+
+    }
+}

+ 9 - 8
src/main/java/org/es/sql/dsl/parser/ElasticSql2DslParser.java

@@ -1,18 +1,19 @@
-package org.es.sql.dsl.parser;
+package org.es.sql.parser;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
 import com.alibaba.druid.sql.parser.ParserException;
 import com.alibaba.druid.sql.parser.Token;
 import com.google.common.collect.ImmutableList;
+import org.es.sql.bean.ElasticDslContext;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.bean.SQLArgs;
 import org.es.sql.druid.ElasticSqlExprParser;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.listener.ParseActionListenerAdapter;
-import org.es.sql.dsl.parser.sql.*;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.listener.ParseActionListenerAdapter;
+import org.es.sql.parser.sql.*;
 
 import java.lang.reflect.Array;
 import java.util.Collection;
@@ -44,7 +45,7 @@ public class ElasticSql2DslParser {
             throw new ElasticSql2DslException(ex);
         }
 
-        final ElasticDslContext elasticDslContext = new ElasticDslContext(queryExpr, sqlArgs);
+        final ElasticDslContext elasticDslContext = new ElasticDslContext(queryExpr, new SQLArgs(sqlArgs));
         if (queryExpr.getSubQuery().getQuery() instanceof ElasticSqlSelectQueryBlock) {
             for (QueryParser sqlParser : buildSqlParserChain(parseActionListener)) {
                 sqlParser.parse(elasticDslContext);

+ 12 - 27
src/main/java/org/es/sql/dsl/parser/query/exact/AbstractAtomExactQueryParser.java

@@ -1,14 +1,14 @@
-package org.es.sql.dsl.parser.query.exact;
+package org.es.sql.parser.query.exact;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.QueryFieldType;
-import org.es.sql.dsl.enums.SQLConditionOperator;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.sql.QueryFieldParser;
 import org.elasticsearch.index.query.QueryBuilder;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.enums.QueryFieldType;
+import org.es.sql.enums.SQLConditionOperator;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.sql.QueryFieldParser;
 
 public abstract class AbstractAtomExactQueryParser {
 
@@ -18,18 +18,18 @@ public abstract class AbstractAtomExactQueryParser {
         this.parseActionListener = parseActionListener;
     }
 
-    protected AtomQuery parseCondition(SQLExpr queryFieldExpr, SQLConditionOperator operator, Object[] rightParamValues, String queryAs, IConditionExactQueryBuilder queryBuilder) {
+    protected AtomQuery parseCondition(SQLExpr queryFieldExpr, SQLConditionOperator operator, Object[] params, String queryAs, IConditionExactQueryBuilder 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(), operator, rightParamValues);
+            QueryBuilder originalQuery = queryBuilder.buildQuery(queryField.getQueryFieldFullName(), operator, params);
             atomQuery = new AtomQuery(originalQuery);
         }
 
         if (queryField.getQueryFieldType() == QueryFieldType.NestedDocField) {
-            QueryBuilder originalQuery = queryBuilder.buildQuery(queryField.getQueryFieldFullName(), operator, rightParamValues);
+            QueryBuilder originalQuery = queryBuilder.buildQuery(queryField.getQueryFieldFullName(), operator, params);
             atomQuery = new AtomQuery(originalQuery, queryField.getNestedDocContextPath());
         }
 
@@ -37,23 +37,8 @@ public abstract class AbstractAtomExactQueryParser {
             throw new ElasticSql2DslException(String.format("[syntax error] where condition field can not support type[%s]", queryField.getQueryFieldType()));
         }
 
-        onExactAtomQueryConditionParse(queryField, rightParamValues, operator);
+        parseActionListener.onAtomExactQueryConditionParse(queryField, params, operator);
 
         return atomQuery;
     }
-
-    private void onExactAtomQueryConditionParse(ElasticSqlQueryField paramName, Object[] paramValues, SQLConditionOperator operator) {
-        try {
-            parseActionListener.onAtomExactQueryConditionParse(paramName, paramValues, operator);
-        }
-        catch (Exception ex) {
-            try {
-                parseActionListener.onFailure(ex);
-            }
-            catch (Exception exp) {
-                //ignore;
-            }
-        }
-    }
-
 }

+ 10 - 9
src/main/java/org/es/sql/dsl/parser/query/exact/BetweenAndAtomQueryParser.java

@@ -1,13 +1,14 @@
-package org.es.sql.dsl.parser.query.exact;
+package org.es.sql.parser.query.exact;
 
 import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.enums.SQLConditionOperator;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
-import org.es.sql.dsl.listener.ParseActionListener;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.enums.SQLConditionOperator;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlArgConverter;
+import org.es.sql.listener.ParseActionListener;
 
 public class BetweenAndAtomQueryParser extends AbstractAtomExactQueryParser {
 
@@ -15,9 +16,9 @@ public class BetweenAndAtomQueryParser extends AbstractAtomExactQueryParser {
         super(parseActionListener);
     }
 
-    public AtomQuery parseBetweenAndQuery(SQLBetweenExpr betweenAndExpr, String queryAs, Object[] sqlArgs) {
-        Object from = ElasticSqlArgTransferHelper.transferSqlArg(betweenAndExpr.getBeginExpr(), sqlArgs);
-        Object to = ElasticSqlArgTransferHelper.transferSqlArg(betweenAndExpr.getEndExpr(), sqlArgs);
+    public AtomQuery parseBetweenAndQuery(SQLBetweenExpr betweenAndExpr, String queryAs, SQLArgs SQLArgs) {
+        Object from = ElasticSqlArgConverter.convertSqlArg(betweenAndExpr.getBeginExpr(), SQLArgs);
+        Object to = ElasticSqlArgConverter.convertSqlArg(betweenAndExpr.getEndExpr(), SQLArgs);
 
         if (from == null || to == null) {
             throw new ElasticSql2DslException("[syntax error] Between Expr only support one of [number,date] arg type");

+ 10 - 9
src/main/java/org/es/sql/dsl/parser/query/exact/BinaryAtomQueryParser.java

@@ -1,16 +1,17 @@
-package org.es.sql.dsl.parser.query.exact;
+package org.es.sql.parser.query.exact;
 
 import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
 import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
 import com.alibaba.druid.sql.ast.expr.SQLNullExpr;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.enums.SQLConditionOperator;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
-import org.es.sql.dsl.listener.ParseActionListener;
 import org.elasticsearch.index.query.ExistsQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.enums.SQLConditionOperator;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlArgConverter;
+import org.es.sql.listener.ParseActionListener;
 
 public class BinaryAtomQueryParser extends AbstractAtomExactQueryParser {
 
@@ -18,12 +19,12 @@ public class BinaryAtomQueryParser extends AbstractAtomExactQueryParser {
         super(parseActionListener);
     }
 
-    public AtomQuery parseBinaryQuery(SQLBinaryOpExpr binQueryExpr, String queryAs, Object[] sqlArgs) {
+    public AtomQuery parseBinaryQuery(SQLBinaryOpExpr binQueryExpr, String queryAs, SQLArgs SQLArgs) {
         SQLBinaryOperator binaryOperator = binQueryExpr.getOperator();
 
         //EQ NEQ
         if (SQLBinaryOperator.Equality == binaryOperator || SQLBinaryOperator.LessThanOrGreater == binaryOperator || SQLBinaryOperator.NotEqual == binaryOperator) {
-            Object targetVal = ElasticSqlArgTransferHelper.transferSqlArg(binQueryExpr.getRight(), sqlArgs);
+            Object targetVal = ElasticSqlArgConverter.convertSqlArg(binQueryExpr.getRight(), SQLArgs);
 
             SQLConditionOperator operator = SQLBinaryOperator.Equality == binaryOperator ? SQLConditionOperator.Equality : SQLConditionOperator.NotEqual;
 
@@ -59,7 +60,7 @@ public class BinaryAtomQueryParser extends AbstractAtomExactQueryParser {
                 operator = SQLConditionOperator.LessThanOrEqual;
             }
 
-            Object targetVal = ElasticSqlArgTransferHelper.transferSqlArg(binQueryExpr.getRight(), sqlArgs);
+            Object targetVal = ElasticSqlArgConverter.convertSqlArg(binQueryExpr.getRight(), SQLArgs);
             return parseCondition(binQueryExpr.getLeft(), operator, new Object[]{targetVal}, queryAs, new IConditionExactQueryBuilder() {
                 @Override
                 public QueryBuilder buildQuery(String queryFieldName, SQLConditionOperator operator, Object[] rightParamValues) {

+ 2 - 2
src/main/java/org/es/sql/dsl/parser/query/exact/IConditionExactQueryBuilder.java

@@ -1,7 +1,7 @@
-package org.es.sql.dsl.parser.query.exact;
+package org.es.sql.parser.query.exact;
 
-import org.es.sql.dsl.enums.SQLConditionOperator;
 import org.elasticsearch.index.query.QueryBuilder;
+import org.es.sql.enums.SQLConditionOperator;
 
 @FunctionalInterface
 public interface IConditionExactQueryBuilder {

+ 9 - 8
src/main/java/org/es/sql/dsl/parser/query/exact/InListAtomQueryParser.java

@@ -1,14 +1,15 @@
-package org.es.sql.dsl.parser.query.exact;
+package org.es.sql.parser.query.exact;
 
 import com.alibaba.druid.sql.ast.expr.SQLInListExpr;
 import org.apache.commons.collections.CollectionUtils;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.enums.SQLConditionOperator;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
-import org.es.sql.dsl.listener.ParseActionListener;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.enums.SQLConditionOperator;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlArgConverter;
+import org.es.sql.listener.ParseActionListener;
 
 public class InListAtomQueryParser extends AbstractAtomExactQueryParser {
 
@@ -16,12 +17,12 @@ public class InListAtomQueryParser extends AbstractAtomExactQueryParser {
         super(parseActionListener);
     }
 
-    public AtomQuery parseInListQuery(SQLInListExpr inListQueryExpr, String queryAs, Object[] sqlArgs) {
+    public AtomQuery parseInListQuery(SQLInListExpr inListQueryExpr, String queryAs, SQLArgs SQLArgs) {
         if (CollectionUtils.isEmpty(inListQueryExpr.getTargetList())) {
             throw new ElasticSql2DslException("[syntax error] In list expr target list cannot be blank");
         }
 
-        Object[] targetInList = ElasticSqlArgTransferHelper.transferSqlArgs(inListQueryExpr.getTargetList(), sqlArgs);
+        Object[] targetInList = ElasticSqlArgConverter.convertSqlArgs(inListQueryExpr.getTargetList(), SQLArgs);
         SQLConditionOperator operator = inListQueryExpr.isNot() ? SQLConditionOperator.NotIn : SQLConditionOperator.In;
 
         return parseCondition(inListQueryExpr.getExpr(), operator, targetInList, queryAs, new IConditionExactQueryBuilder() {

+ 9 - 23
src/main/java/org/es/sql/dsl/parser/query/method/AbstractFieldSpecificMethodQueryParser.java

@@ -1,13 +1,13 @@
-package org.es.sql.dsl.parser.query.method;
+package org.es.sql.parser.query.method;
 
 import org.elasticsearch.index.query.QueryBuilder;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.QueryFieldType;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.expr.FieldSpecificMethodExpression;
-import org.es.sql.dsl.parser.sql.QueryFieldParser;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.enums.QueryFieldType;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.expr.FieldSpecificMethodExpression;
+import org.es.sql.parser.sql.QueryFieldParser;
 
 import java.util.Map;
 
@@ -48,22 +48,8 @@ public abstract class AbstractFieldSpecificMethodQueryParser extends Parameteriz
                     String.format("[syntax error] query field can not support type[%s]", queryField.getQueryFieldType()));
         }
 
-        onAtomMethodQueryConditionParse(queryField, invocation.getSqlArgs());
+        parseActionListener.onAtomMethodQueryConditionParse(queryField, invocation.getSQLArgs().getArgs());
 
         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;
-            }
-        }
-    }
 }

+ 10 - 9
src/main/java/org/es/sql/dsl/parser/query/method/MethodInvocation.java

@@ -1,31 +1,32 @@
-package org.es.sql.dsl.parser.query.method;
+package org.es.sql.parser.query.method;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.helper.ElasticSqlArgConverter;
 
 import java.util.List;
 
 public class MethodInvocation {
     private final SQLMethodInvokeExpr methodInvokeExpr;
     private final String queryAs;
-    private final Object[] sqlArgs;
+    private final SQLArgs SQLArgs;
 
-    public MethodInvocation(SQLMethodInvokeExpr methodInvokeExpr, String queryAs, Object[] sqlArgs) {
+    public MethodInvocation(SQLMethodInvokeExpr methodInvokeExpr, String queryAs, SQLArgs SQLArgs) {
         if (methodInvokeExpr == null) {
             throw new IllegalArgumentException("method invoke expression can not be null");
         }
         this.methodInvokeExpr = methodInvokeExpr;
         this.queryAs = queryAs;
-        this.sqlArgs = sqlArgs;
+        this.SQLArgs = SQLArgs;
     }
 
     public String getQueryAs() {
         return queryAs;
     }
 
-    public Object[] getSqlArgs() {
-        return sqlArgs;
+    public SQLArgs getSQLArgs() {
+        return SQLArgs;
     }
 
     public String getMethodName() {
@@ -50,12 +51,12 @@ public class MethodInvocation {
 
     public Object getParameterAsObject(int index) {
         SQLExpr paramExpr = methodInvokeExpr.getParameters().get(index);
-        return ElasticSqlArgTransferHelper.transferSqlArg(paramExpr, sqlArgs, false);
+        return ElasticSqlArgConverter.convertSqlArg(paramExpr, SQLArgs, false);
     }
 
     public String getParameterAsFormatDate(int index) {
         SQLExpr paramExpr = methodInvokeExpr.getParameters().get(index);
-        return ElasticSqlArgTransferHelper.transferSqlArg(paramExpr, sqlArgs, true).toString();
+        return ElasticSqlArgConverter.convertSqlArg(paramExpr, SQLArgs, true).toString();
     }
 
     public String getParameterAsString(int index) {

+ 9 - 0
src/main/java/org/es/sql/parser/query/method/MethodQueryParser.java

@@ -0,0 +1,9 @@
+package org.es.sql.parser.query.method;
+
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.expr.MethodExpression;
+
+public interface MethodQueryParser extends MethodExpression {
+    AtomQuery parseAtomMethodQuery(MethodInvocation invocation) throws ElasticSql2DslException;
+}

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/query/method/ParameterizedMethodQueryParser.java

@@ -1,9 +1,9 @@
-package org.es.sql.dsl.parser.query.method;
+package org.es.sql.parser.query.method;
 
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlMethodInvokeHelper;
-import org.es.sql.dsl.parser.query.method.expr.AbstractParameterizedMethodExpression;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlMethodInvokeHelper;
+import org.es.sql.parser.query.method.expr.AbstractParameterizedMethodExpression;
 
 import java.util.Map;
 

+ 3 - 3
src/main/java/org/es/sql/dsl/parser/query/method/expr/AbstractParameterizedMethodExpression.java

@@ -1,11 +1,11 @@
-package org.es.sql.dsl.parser.query.method.expr;
+package org.es.sql.parser.query.method.expr;
 
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.Collections;
 import java.util.Map;

+ 2 - 2
src/main/java/org/es/sql/dsl/parser/query/method/expr/FieldSpecificMethodExpression.java

@@ -1,7 +1,7 @@
-package org.es.sql.dsl.parser.query.method.expr;
+package org.es.sql.parser.query.method.expr;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 public interface FieldSpecificMethodExpression extends MethodExpression {
     SQLExpr defineFieldExpr(MethodInvocation invocation);

+ 3 - 3
src/main/java/org/es/sql/dsl/parser/query/method/expr/MethodExpression.java

@@ -1,7 +1,7 @@
-package org.es.sql.dsl.parser.query.method.expr;
+package org.es.sql.parser.query.method.expr;
 
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 

+ 2 - 2
src/main/java/org/es/sql/dsl/parser/query/method/expr/ParameterizedMethodExpression.java

@@ -1,6 +1,6 @@
-package org.es.sql.dsl.parser.query.method.expr;
+package org.es.sql.parser.query.method.expr;
 
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.Map;
 

+ 9 - 8
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/FullTextAtomQueryParser.java

@@ -1,12 +1,13 @@
-package org.es.sql.dsl.parser.query.method.fulltext;
+package org.es.sql.parser.query.method.fulltext;
 
 import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
 import com.google.common.collect.ImmutableList;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.MethodQueryParser;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.MethodQueryParser;
 
 import java.util.List;
 import java.util.function.Predicate;
@@ -33,8 +34,8 @@ public class FullTextAtomQueryParser {
         });
     }
 
-    public AtomQuery parseFullTextAtomQuery(SQLMethodInvokeExpr methodQueryExpr, String queryAs, Object[] sqlArgs) {
-        MethodInvocation methodInvocation = new MethodInvocation(methodQueryExpr, queryAs, sqlArgs);
+    public AtomQuery parseFullTextAtomQuery(SQLMethodInvokeExpr methodQueryExpr, String queryAs, SQLArgs SQLArgs) {
+        MethodInvocation methodInvocation = new MethodInvocation(methodQueryExpr, queryAs, SQLArgs);
         MethodQueryParser matchAtomQueryParser = getQueryParser(methodInvocation);
         return matchAtomQueryParser.parseAtomMethodQuery(methodInvocation);
     }

+ 7 - 7
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MatchAtomQueryParser.java

@@ -1,19 +1,19 @@
-package org.es.sql.dsl.parser.query.method.fulltext;
+package org.es.sql.parser.query.method.fulltext;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.common.unit.Fuzziness;
-import org.elasticsearch.index.query.Operator;
-import org.elasticsearch.index.search.MatchQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
 import org.elasticsearch.index.query.MatchQueryBuilder;
+import org.elasticsearch.index.query.Operator;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.index.search.MatchQuery;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.AbstractFieldSpecificMethodQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 import java.util.Map;

+ 7 - 8
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MultiMatchAtomQueryParser.java

@@ -1,18 +1,17 @@
-package org.es.sql.dsl.parser.query.method.fulltext;
+package org.es.sql.parser.query.method.fulltext;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.common.unit.Fuzziness;
-import org.elasticsearch.index.query.Operator;
-import org.elasticsearch.index.search.MatchQuery;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.ParameterizedMethodQueryParser;
-import org.elasticsearch.index.query.MatchQueryBuilder;
 import org.elasticsearch.index.query.MultiMatchQueryBuilder;
+import org.elasticsearch.index.query.Operator;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.index.search.MatchQuery;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.ParameterizedMethodQueryParser;
 
 import java.util.List;
 import java.util.Map;

+ 5 - 6
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/QueryStringAtomQueryParser.java

@@ -1,19 +1,18 @@
-package org.es.sql.dsl.parser.query.method.fulltext;
+package org.es.sql.parser.query.method.fulltext;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.common.unit.Fuzziness;
 import org.elasticsearch.index.query.Operator;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.ParameterizedMethodQueryParser;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.query.QueryStringQueryBuilder;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.ParameterizedMethodQueryParser;
 
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 
 public class QueryStringAtomQueryParser extends ParameterizedMethodQueryParser {

+ 6 - 7
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/SimpleQueryStringAtomQueryParser.java

@@ -1,20 +1,19 @@
-package org.es.sql.dsl.parser.query.method.fulltext;
+package org.es.sql.parser.query.method.fulltext;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.index.query.Operator;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.ParameterizedMethodQueryParser;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.query.SimpleQueryStringBuilder;
 import org.elasticsearch.index.query.SimpleQueryStringFlag;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.ParameterizedMethodQueryParser;
 
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 
 public class SimpleQueryStringAtomQueryParser extends ParameterizedMethodQueryParser {
@@ -51,7 +50,7 @@ public class SimpleQueryStringAtomQueryParser extends ParameterizedMethodQueryPa
             }
         }
 
-        if(MapUtils.isNotEmpty(extraParamMap)) {
+        if (MapUtils.isNotEmpty(extraParamMap)) {
             setExtraMatchQueryParam(simpleQueryString, extraParamMap);
         }
 

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/query/method/script/ScriptAtomQueryParser.java

@@ -1,4 +1,4 @@
-//package org.es.sql.dsl.parser.query.method.script;
+//package org.es.sql.parser.query.method.script;
 //
 //import com.google.common.collect.ImmutableList;
 //import org.apache.commons.collections.MapUtils;
@@ -6,10 +6,10 @@
 //import org.elasticsearch.index.query.QueryBuilders;
 //import org.elasticsearch.script.Script;
 //import org.elasticsearch.script.ScriptService;
-//import org.es.sql.dsl.bean.AtomQuery;
-//import org.es.sql.dsl.exception.ElasticSql2DslException;
-//import org.es.sql.dsl.parser.query.method.MethodInvocation;
-//import org.es.sql.dsl.parser.query.method.ParameterizedMethodQueryParser;
+//import org.es.sql.bean.AtomQuery;
+//import org.es.sql.exception.ElasticSql2DslException;
+//import org.es.sql.parser.query.method.MethodInvocation;
+//import org.es.sql.parser.query.method.ParameterizedMethodQueryParser;
 //
 //import java.util.List;
 //import java.util.Map;

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/query/method/term/FuzzyAtomQueryParser.java

@@ -1,17 +1,17 @@
-package org.es.sql.dsl.parser.query.method.term;
+package org.es.sql.parser.query.method.term;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.common.unit.Fuzziness;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
 import org.elasticsearch.index.query.FuzzyQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.AbstractFieldSpecificMethodQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 import java.util.Map;

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/query/method/term/PrefixAtomQueryParser.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.parser.query.method.term;
+package org.es.sql.parser.query.method.term;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.google.common.collect.ImmutableList;
@@ -7,10 +7,10 @@ import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.index.query.PrefixQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.AbstractFieldSpecificMethodQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 import java.util.Map;

+ 5 - 6
src/main/java/org/es/sql/dsl/parser/query/method/term/RegexpAtomQueryParser.java

@@ -1,18 +1,18 @@
-package org.es.sql.dsl.parser.query.method.term;
+package org.es.sql.parser.query.method.term;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.query.RegexpFlag;
 import org.elasticsearch.index.query.RegexpQueryBuilder;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.AbstractFieldSpecificMethodQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 import java.util.Map;
@@ -74,7 +74,6 @@ public class RegexpAtomQueryParser extends AbstractFieldSpecificMethodQueryParse
     }
 
 
-
     private void setExtraMatchQueryParam(RegexpQueryBuilder regexpQuery, Map<String, String> extraParamMap) {
         if (MapUtils.isEmpty(extraParamMap)) {
             return;

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/query/method/term/TermAtomQueryParser.java

@@ -1,16 +1,16 @@
-package org.es.sql.dsl.parser.query.method.term;
+package org.es.sql.parser.query.method.term;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.query.TermQueryBuilder;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.AbstractFieldSpecificMethodQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 import java.util.Map;

+ 9 - 8
src/main/java/org/es/sql/dsl/parser/query/method/term/TermLevelAtomQueryParser.java

@@ -1,12 +1,13 @@
-package org.es.sql.dsl.parser.query.method.term;
+package org.es.sql.parser.query.method.term;
 
 import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
 import com.google.common.collect.ImmutableList;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.MethodQueryParser;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.MethodQueryParser;
 
 import java.util.List;
 
@@ -34,8 +35,8 @@ public class TermLevelAtomQueryParser {
         return Boolean.TRUE;
     }
 
-    public AtomQuery parseTermLevelAtomQuery(SQLMethodInvokeExpr methodQueryExpr, String queryAs, Object[] sqlArgs) {
-        MethodInvocation methodInvocation = new MethodInvocation(methodQueryExpr, queryAs, sqlArgs);
+    public AtomQuery parseTermLevelAtomQuery(SQLMethodInvokeExpr methodQueryExpr, String queryAs, SQLArgs SQLArgs) {
+        MethodInvocation methodInvocation = new MethodInvocation(methodQueryExpr, queryAs, SQLArgs);
         MethodQueryParser matchAtomQueryParser = getQueryParser(methodInvocation);
         return matchAtomQueryParser.parseAtomMethodQuery(methodInvocation);
     }

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/query/method/term/TermsAtomQueryParser.java

@@ -1,17 +1,17 @@
-package org.es.sql.dsl.parser.query.method.term;
+package org.es.sql.parser.query.method.term;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.query.TermsQueryBuilder;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.AbstractFieldSpecificMethodQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 import java.util.Map;

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/query/method/term/WildcardAtomQueryParser.java

@@ -1,16 +1,16 @@
-package org.es.sql.dsl.parser.query.method.term;
+package org.es.sql.parser.query.method.term;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.query.WildcardQueryBuilder;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.AbstractFieldSpecificMethodQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
 
 import java.util.List;
 import java.util.Map;

+ 42 - 40
src/main/java/org/es/sql/dsl/parser/sql/AbstractQueryConditionParser.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.*;
@@ -6,29 +6,31 @@ import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import org.apache.lucene.search.join.ScoreMode;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.bean.SQLCondition;
-import org.es.sql.dsl.enums.SQLBoolOperator;
-import org.es.sql.dsl.enums.SQLConditionType;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.exact.BetweenAndAtomQueryParser;
-import org.es.sql.dsl.parser.query.exact.BinaryAtomQueryParser;
-import org.es.sql.dsl.parser.query.exact.InListAtomQueryParser;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.fulltext.FullTextAtomQueryParser;
-//import org.es.sql.dsl.parser.query.method.script.ScriptAtomQueryParser;
-import org.es.sql.dsl.parser.query.method.term.TermLevelAtomQueryParser;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.es.sql.bean.AtomQuery;
+import org.es.sql.bean.SQLCondition;
+import org.es.sql.bean.SQLArgs;
+import org.es.sql.enums.SQLBoolOperator;
+import org.es.sql.enums.SQLConditionType;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.exact.BetweenAndAtomQueryParser;
+import org.es.sql.parser.query.exact.BinaryAtomQueryParser;
+import org.es.sql.parser.query.exact.InListAtomQueryParser;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.fulltext.FullTextAtomQueryParser;
+import org.es.sql.parser.query.method.term.TermLevelAtomQueryParser;
 
 import java.util.List;
 
+//import org.es.sql.parser.query.method.script.ScriptAtomQueryParser;
+
 public abstract class AbstractQueryConditionParser implements QueryParser {
 
     private final TermLevelAtomQueryParser termLevelAtomQueryParser;
-//    private final ScriptAtomQueryParser scriptAtomQueryParser;
+    //    private final ScriptAtomQueryParser scriptAtomQueryParser;
     private final FullTextAtomQueryParser fullTextAtomQueryParser;
     private final BinaryAtomQueryParser binaryQueryParser;
     private final InListAtomQueryParser inListQueryParser;
@@ -44,17 +46,17 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
 //        scriptAtomQueryParser = new ScriptAtomQueryParser();
     }
 
-    protected BoolQueryBuilder parseQueryConditionExpr(SQLExpr conditionExpr, String queryAs, Object[] sqlArgs) {
-        SQLCondition sqlCondition = recursiveParseQueryCondition(conditionExpr, queryAs, sqlArgs);
-        SQLBoolOperator operator = sqlCondition.getOperator();
+    protected BoolQueryBuilder parseQueryConditionExpr(SQLExpr conditionExpr, String queryAs, SQLArgs SQLArgs) {
+        SQLCondition SQLCondition = recursiveParseQueryCondition(conditionExpr, queryAs, SQLArgs);
+        SQLBoolOperator operator = SQLCondition.getOperator();
 
-        if (SQLConditionType.Atom == sqlCondition.getSQLConditionType()) {
+        if (SQLConditionType.Atom == SQLCondition.getSQLConditionType()) {
             operator = SQLBoolOperator.AND;
         }
-        return mergeAtomQuery(sqlCondition.getQueryList(), operator);
+        return mergeAtomQuery(SQLCondition.getQueryList(), operator);
     }
 
-    private SQLCondition recursiveParseQueryCondition(SQLExpr conditionExpr, String queryAs, Object[] sqlArgs) {
+    private SQLCondition recursiveParseQueryCondition(SQLExpr conditionExpr, String queryAs, SQLArgs SQLArgs) {
         if (conditionExpr instanceof SQLBinaryOpExpr) {
             SQLBinaryOpExpr binOpExpr = (SQLBinaryOpExpr) conditionExpr;
             SQLBinaryOperator binOperator = binOpExpr.getOperator();
@@ -62,8 +64,8 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
             if (SQLBinaryOperator.BooleanAnd == binOperator || SQLBinaryOperator.BooleanOr == binOperator) {
                 SQLBoolOperator operator = SQLBinaryOperator.BooleanAnd == binOperator ? SQLBoolOperator.AND : SQLBoolOperator.OR;
 
-                SQLCondition leftCondition = recursiveParseQueryCondition(binOpExpr.getLeft(), queryAs, sqlArgs);
-                SQLCondition rightCondition = recursiveParseQueryCondition(binOpExpr.getRight(), queryAs, sqlArgs);
+                SQLCondition leftCondition = recursiveParseQueryCondition(binOpExpr.getLeft(), queryAs, SQLArgs);
+                SQLCondition rightCondition = recursiveParseQueryCondition(binOpExpr.getRight(), queryAs, SQLArgs);
 
                 List<AtomQuery> mergedQueryList = Lists.newArrayList();
                 combineQueryBuilder(mergedQueryList, leftCondition, operator);
@@ -73,58 +75,58 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
             }
         }
         else if (conditionExpr instanceof SQLNotExpr) {
-            SQLCondition innerSqlCondition = recursiveParseQueryCondition(((SQLNotExpr) conditionExpr).getExpr(), queryAs, sqlArgs);
+            SQLCondition innerSQLCondition = recursiveParseQueryCondition(((SQLNotExpr) conditionExpr).getExpr(), queryAs, SQLArgs);
 
-            SQLBoolOperator operator = innerSqlCondition.getOperator();
-            if (SQLConditionType.Atom == innerSqlCondition.getSQLConditionType()) {
+            SQLBoolOperator operator = innerSQLCondition.getOperator();
+            if (SQLConditionType.Atom == innerSQLCondition.getSQLConditionType()) {
                 operator = SQLBoolOperator.AND;
             }
 
-            BoolQueryBuilder boolQuery = mergeAtomQuery(innerSqlCondition.getQueryList(), operator);
+            BoolQueryBuilder boolQuery = mergeAtomQuery(innerSQLCondition.getQueryList(), operator);
             boolQuery = QueryBuilders.boolQuery().mustNot(boolQuery);
 
             return new SQLCondition(new AtomQuery(boolQuery), SQLConditionType.Atom);
         }
 
-        return new SQLCondition(parseAtomQueryCondition(conditionExpr, queryAs, sqlArgs), SQLConditionType.Atom);
+        return new SQLCondition(parseAtomQueryCondition(conditionExpr, queryAs, SQLArgs), SQLConditionType.Atom);
     }
 
-    private AtomQuery parseAtomQueryCondition(SQLExpr sqlConditionExpr, String queryAs, Object[] sqlArgs) {
+    private AtomQuery parseAtomQueryCondition(SQLExpr sqlConditionExpr, String queryAs, SQLArgs SQLArgs) {
         if (sqlConditionExpr instanceof SQLMethodInvokeExpr) {
             SQLMethodInvokeExpr methodQueryExpr = (SQLMethodInvokeExpr) sqlConditionExpr;
 
-            MethodInvocation methodInvocation = new MethodInvocation(methodQueryExpr, queryAs, sqlArgs);
+            MethodInvocation methodInvocation = new MethodInvocation(methodQueryExpr, queryAs, SQLArgs);
 
 //            if (scriptAtomQueryParser.isMatchMethodInvocation(methodInvocation)) {
 //                return scriptAtomQueryParser.parseAtomMethodQuery(methodInvocation);
 //            }
 
             if (fullTextAtomQueryParser.isFulltextAtomQuery(methodInvocation)) {
-                return fullTextAtomQueryParser.parseFullTextAtomQuery(methodQueryExpr, queryAs, sqlArgs);
+                return fullTextAtomQueryParser.parseFullTextAtomQuery(methodQueryExpr, queryAs, SQLArgs);
             }
 
             if (termLevelAtomQueryParser.isTermLevelAtomQuery(methodInvocation)) {
-                return termLevelAtomQueryParser.parseTermLevelAtomQuery(methodQueryExpr, queryAs, sqlArgs);
+                return termLevelAtomQueryParser.parseTermLevelAtomQuery(methodQueryExpr, queryAs, SQLArgs);
             }
         }
         else if (sqlConditionExpr instanceof SQLBinaryOpExpr) {
-            return binaryQueryParser.parseBinaryQuery((SQLBinaryOpExpr) sqlConditionExpr, queryAs, sqlArgs);
+            return binaryQueryParser.parseBinaryQuery((SQLBinaryOpExpr) sqlConditionExpr, queryAs, SQLArgs);
         }
         else if (sqlConditionExpr instanceof SQLInListExpr) {
-            return inListQueryParser.parseInListQuery((SQLInListExpr) sqlConditionExpr, queryAs, sqlArgs);
+            return inListQueryParser.parseInListQuery((SQLInListExpr) sqlConditionExpr, queryAs, SQLArgs);
         }
         else if (sqlConditionExpr instanceof SQLBetweenExpr) {
-            return betweenAndQueryParser.parseBetweenAndQuery((SQLBetweenExpr) sqlConditionExpr, queryAs, sqlArgs);
+            return betweenAndQueryParser.parseBetweenAndQuery((SQLBetweenExpr) sqlConditionExpr, queryAs, SQLArgs);
         }
         throw new ElasticSql2DslException(String.format("[syntax error] Can not support query condition type[%s]", sqlConditionExpr.toString()));
     }
 
-    private void combineQueryBuilder(List<AtomQuery> combiner, SQLCondition sqlCondition, SQLBoolOperator binOperator) {
-        if (SQLConditionType.Atom == sqlCondition.getSQLConditionType() || sqlCondition.getOperator() == binOperator) {
-            combiner.addAll(sqlCondition.getQueryList());
+    private void combineQueryBuilder(List<AtomQuery> combiner, SQLCondition SQLCondition, SQLBoolOperator binOperator) {
+        if (SQLConditionType.Atom == SQLCondition.getSQLConditionType() || SQLCondition.getOperator() == binOperator) {
+            combiner.addAll(SQLCondition.getQueryList());
         }
         else {
-            BoolQueryBuilder boolQuery = mergeAtomQuery(sqlCondition.getQueryList(), sqlCondition.getOperator());
+            BoolQueryBuilder boolQuery = mergeAtomQuery(SQLCondition.getQueryList(), SQLCondition.getOperator());
             combiner.add(new AtomQuery(boolQuery));
         }
     }
@@ -143,7 +145,7 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
                 }
             }
             else {
-                String nestedDocPrefix = atomQuery.getNestedQueryPathContext();
+                String nestedDocPrefix = atomQuery.getNestedQueryPath();
                 listMultiMap.put(nestedDocPrefix, atomQuery.getQuery());
             }
         }

+ 6 - 6
src/main/java/org/es/sql/dsl/parser/sql/QueryFieldParser.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
@@ -7,11 +7,11 @@ import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.bean.ElasticSqlQueryFields;
-import org.es.sql.dsl.bean.QueryFieldReferenceNode;
-import org.es.sql.dsl.bean.QueryFieldReferencePath;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.bean.ElasticSqlQueryFields;
+import org.es.sql.bean.QueryFieldReferenceNode;
+import org.es.sql.bean.QueryFieldReferencePath;
+import org.es.sql.exception.ElasticSql2DslException;
 
 import java.util.Collections;
 import java.util.Iterator;

+ 4 - 4
src/main/java/org/es/sql/dsl/parser/sql/QueryFromParser.java

@@ -1,13 +1,13 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
 import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
 import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
 import com.google.common.collect.Lists;
+import org.es.sql.bean.ElasticDslContext;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
 
 public class QueryFromParser implements QueryParser {
 

+ 18 - 17
src/main/java/org/es/sql/dsl/parser/sql/QueryGroupByParser.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
@@ -12,15 +12,16 @@ import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilde
 import org.elasticsearch.search.aggregations.bucket.range.date.DateRangeAggregationBuilder;
 import org.elasticsearch.search.aggregations.bucket.terms.Terms;
 import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
+import org.es.sql.bean.ElasticDslContext;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.bean.RangeSegment;
+import org.es.sql.bean.SQLArgs;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.bean.RangeSegment;
-import org.es.sql.dsl.enums.QueryFieldType;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
-import org.es.sql.dsl.helper.ElasticSqlMethodInvokeHelper;
-import org.es.sql.dsl.listener.ParseActionListener;
+import org.es.sql.enums.QueryFieldType;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlArgConverter;
+import org.es.sql.helper.ElasticSqlMethodInvokeHelper;
+import org.es.sql.listener.ParseActionListener;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 import org.joda.time.format.DateTimeFormatter;
@@ -69,7 +70,7 @@ public class QueryGroupByParser implements QueryParser {
                     if (aggMethodExpr.getParameters().size() == 2) {
                         shardSizeExpr = aggMethodExpr.getParameters().get(1);
                     }
-                    AggregationBuilder termsBuilder = parseTermsAggregation(queryAs, dslContext.getSqlArgs(), termsFieldExpr, shardSizeExpr);
+                    AggregationBuilder termsBuilder = parseTermsAggregation(queryAs, dslContext.getSQLArgs(), termsFieldExpr, shardSizeExpr);
                     aggregationList.add(termsBuilder);
                 }
 
@@ -78,7 +79,7 @@ public class QueryGroupByParser implements QueryParser {
                 if (ElasticSqlMethodInvokeHelper.isMethodOf(ElasticSqlMethodInvokeHelper.AGG_RANGE_METHOD, aggMethodExpr.getMethodName())) {
                     ElasticSqlMethodInvokeHelper.checkRangeAggMethod(aggMethodExpr);
 
-                    List<RangeSegment> rangeSegments = parseRangeSegments(aggMethodExpr, dslContext.getSqlArgs());
+                    List<RangeSegment> rangeSegments = parseRangeSegments(aggMethodExpr, dslContext.getSQLArgs());
                     SQLExpr rangeFieldExpr = aggMethodExpr.getParameters().get(0);
 
                     AggregationBuilder rangeBuilder = parseRangeAggregation(queryAs, rangeFieldExpr, rangeSegments);
@@ -90,7 +91,7 @@ public class QueryGroupByParser implements QueryParser {
 
     }
 
-    private AggregationBuilder parseTermsAggregation(String queryAs, Object[] args, SQLExpr termsFieldExpr, SQLExpr shardSizeExpr) {
+    private AggregationBuilder parseTermsAggregation(String queryAs, SQLArgs args, SQLExpr termsFieldExpr, SQLExpr shardSizeExpr) {
         QueryFieldParser queryFieldParser = new QueryFieldParser();
 
         ElasticSqlQueryField queryField = queryFieldParser.parseConditionQueryField(termsFieldExpr, queryAs);
@@ -98,8 +99,8 @@ public class QueryGroupByParser implements QueryParser {
             throw new ElasticSql2DslException(String.format("[syntax error] can not support terms aggregation for field type[%s]", queryField.getQueryFieldType()));
         }
 
-        if(shardSizeExpr != null) {
-            Number termBuckets = (Number) ElasticSqlArgTransferHelper.transferSqlArg(shardSizeExpr, args);
+        if (shardSizeExpr != null) {
+            Number termBuckets = (Number) ElasticSqlArgConverter.convertSqlArg(shardSizeExpr, args);
             return createTermsBuilder(queryField.getQueryFieldFullName(), termBuckets.intValue());
         }
         return createTermsBuilder(queryField.getQueryFieldFullName());
@@ -117,15 +118,15 @@ public class QueryGroupByParser implements QueryParser {
         return createRangeBuilder(queryField.getQueryFieldFullName(), rangeSegments);
     }
 
-    private List<RangeSegment> parseRangeSegments(SQLMethodInvokeExpr rangeMethodExpr, Object[] args) {
+    private List<RangeSegment> parseRangeSegments(SQLMethodInvokeExpr rangeMethodExpr, SQLArgs args) {
         List<RangeSegment> rangeSegmentList = Lists.newArrayList();
         for (int pIdx = 1; pIdx < rangeMethodExpr.getParameters().size(); pIdx++) {
             SQLMethodInvokeExpr segMethodExpr = (SQLMethodInvokeExpr) rangeMethodExpr.getParameters().get(pIdx);
 
             ElasticSqlMethodInvokeHelper.checkRangeItemAggMethod(segMethodExpr);
 
-            Object from = ElasticSqlArgTransferHelper.transferSqlArg(segMethodExpr.getParameters().get(0), args, true);
-            Object to = ElasticSqlArgTransferHelper.transferSqlArg(segMethodExpr.getParameters().get(1), args, true);
+            Object from = ElasticSqlArgConverter.convertSqlArg(segMethodExpr.getParameters().get(0), args, true);
+            Object to = ElasticSqlArgConverter.convertSqlArg(segMethodExpr.getParameters().get(1), args, true);
 
             rangeSegmentList.add(new RangeSegment(from, to,
                     from instanceof Number ? RangeSegment.SegmentType.Numeric : RangeSegment.SegmentType.Date));

+ 12 - 9
src/main/java/org/es/sql/dsl/parser/sql/QueryLimitSizeParser.java

@@ -1,13 +1,14 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
 import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
+import org.es.sql.bean.ElasticDslContext;
+import org.es.sql.bean.SQLArgs;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
-import org.es.sql.dsl.listener.ParseActionListener;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlArgConverter;
+import org.es.sql.listener.ParseActionListener;
 
 public class QueryLimitSizeParser implements QueryParser {
 
@@ -21,11 +22,13 @@ public class QueryLimitSizeParser implements QueryParser {
     public void parse(ElasticDslContext dslContext) {
         ElasticSqlSelectQueryBlock queryBlock = (ElasticSqlSelectQueryBlock) dslContext.getQueryExpr().getSubQuery().getQuery();
         if (queryBlock.getLimit() != null) {
-            Integer from = parseLimitInteger(queryBlock.getLimit().getOffset(), dslContext.getSqlArgs());
+            Integer from = parseLimitInteger(queryBlock.getLimit().getOffset(), dslContext.getSQLArgs());
             dslContext.getParseResult().setFrom(from);
 
-            Integer size = parseLimitInteger(queryBlock.getLimit().getRowCount(), dslContext.getSqlArgs());
+            Integer size = parseLimitInteger(queryBlock.getLimit().getRowCount(), dslContext.getSQLArgs());
             dslContext.getParseResult().setSize(size);
+
+            parseActionListener.onLimitSizeParse(from, size);
         }
         else {
             dslContext.getParseResult().setFrom(0);
@@ -33,13 +36,13 @@ public class QueryLimitSizeParser implements QueryParser {
         }
     }
 
-    public Integer parseLimitInteger(SQLExpr limitInt, Object[] args) {
+    public Integer parseLimitInteger(SQLExpr limitInt, SQLArgs args) {
         if (limitInt instanceof SQLIntegerExpr) {
             return ((SQLIntegerExpr) limitInt).getNumber().intValue();
         }
         else if (limitInt instanceof SQLVariantRefExpr) {
             SQLVariantRefExpr varLimitExpr = (SQLVariantRefExpr) limitInt;
-            Object targetVal = ElasticSqlArgTransferHelper.transferSqlArg(varLimitExpr, args);
+            Object targetVal = ElasticSqlArgConverter.convertSqlArg(varLimitExpr, args);
             if (!(targetVal instanceof Integer)) {
                 throw new ElasticSql2DslException("[syntax error] Sql limit expr should be a non-negative number");
             }

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/sql/QueryMatchConditionParser.java

@@ -1,9 +1,9 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
-import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.listener.ParseActionListener;
 import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.es.sql.bean.ElasticDslContext;
+import org.es.sql.druid.ElasticSqlSelectQueryBlock;
+import org.es.sql.listener.ParseActionListener;
 
 public class QueryMatchConditionParser extends AbstractQueryConditionParser {
 
@@ -18,7 +18,7 @@ public class QueryMatchConditionParser extends AbstractQueryConditionParser {
         if (queryBlock.getMatchQuery() != null) {
             String queryAs = dslContext.getParseResult().getQueryAs();
 
-            BoolQueryBuilder matchQuery = parseQueryConditionExpr(queryBlock.getMatchQuery(), queryAs, dslContext.getSqlArgs());
+            BoolQueryBuilder matchQuery = parseQueryConditionExpr(queryBlock.getMatchQuery(), queryAs, dslContext.getSQLArgs());
 
             dslContext.getParseResult().setMatchCondition(matchQuery);
         }

+ 14 - 13
src/main/java/org/es/sql/dsl/parser/sql/QueryOrderConditionParser.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.SQLOrderBy;
 import com.alibaba.druid.sql.ast.SQLOrderingSpecification;
@@ -11,16 +11,17 @@ import org.elasticsearch.search.sort.FieldSortBuilder;
 import org.elasticsearch.search.sort.SortBuilder;
 import org.elasticsearch.search.sort.SortBuilders;
 import org.elasticsearch.search.sort.SortOrder;
+import org.es.sql.bean.ElasticDslContext;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.bean.SQLArgs;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.listener.ParseActionListener;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.sql.sort.ConditionSortBuilder;
-import org.es.sql.dsl.parser.sql.sort.MethodSortParser;
-import org.es.sql.dsl.parser.sql.sort.NvlMethodSortParser;
-import org.es.sql.dsl.parser.sql.sort.ParseSortBuilderHelper;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.listener.ParseActionListener;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.sql.sort.ConditionSortBuilder;
+import org.es.sql.parser.sql.sort.MethodSortParser;
+import org.es.sql.parser.sql.sort.NvlMethodSortParser;
+import org.es.sql.parser.sql.sort.ParseSortBuilderHelper;
 
 import java.util.List;
 
@@ -46,7 +47,7 @@ public class QueryOrderConditionParser implements QueryParser {
         if (sqlOrderBy != null && CollectionUtils.isNotEmpty(sqlOrderBy.getItems())) {
             List<SortBuilder> orderByList = Lists.newLinkedList();
             for (SQLSelectOrderByItem orderByItem : sqlOrderBy.getItems()) {
-                SortBuilder orderBy = parseOrderCondition(orderByItem, dslContext.getParseResult().getQueryAs(), dslContext.getSqlArgs());
+                SortBuilder orderBy = parseOrderCondition(orderByItem, dslContext.getParseResult().getQueryAs(), dslContext.getSQLArgs());
                 if (orderBy != null) {
                     orderByList.add(orderBy);
                 }
@@ -55,7 +56,7 @@ public class QueryOrderConditionParser implements QueryParser {
         }
     }
 
-    private SortBuilder parseOrderCondition(SQLSelectOrderByItem orderByItem, String queryAs, Object[] sqlArgs) {
+    private SortBuilder parseOrderCondition(SQLSelectOrderByItem orderByItem, String queryAs, SQLArgs SQLArgs) {
 
         SortOrder order = orderByItem.getType() == SQLOrderingSpecification.ASC ? SortOrder.ASC : SortOrder.DESC;
 
@@ -71,7 +72,7 @@ public class QueryOrderConditionParser implements QueryParser {
         }
 
         if (ParseSortBuilderHelper.isMethodInvokeExpr(orderByItem.getExpr())) {
-            MethodInvocation sortMethodInvocation = new MethodInvocation((SQLMethodInvokeExpr) orderByItem.getExpr(), queryAs, sqlArgs);
+            MethodInvocation sortMethodInvocation = new MethodInvocation((SQLMethodInvokeExpr) orderByItem.getExpr(), queryAs, SQLArgs);
             for (MethodSortParser methodSortParser : methodSortParsers) {
                 if (methodSortParser.isMatchMethodInvocation(sortMethodInvocation)) {
                     return methodSortParser.parseMethodSortBuilder(sortMethodInvocation, order);

+ 2 - 2
src/main/java/org/es/sql/dsl/parser/sql/QueryParser.java

@@ -1,6 +1,6 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
-import org.es.sql.dsl.bean.ElasticDslContext;
+import org.es.sql.bean.ElasticDslContext;
 
 @FunctionalInterface
 public interface QueryParser {

+ 8 - 6
src/main/java/org/es/sql/dsl/parser/sql/QueryRoutingValParser.java

@@ -1,15 +1,15 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
 import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
+import org.es.sql.bean.ElasticDslContext;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
-import org.es.sql.dsl.listener.ParseActionListener;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlArgConverter;
+import org.es.sql.listener.ParseActionListener;
 
 import java.util.List;
 
@@ -31,7 +31,7 @@ public class QueryRoutingValParser implements QueryParser {
                     routingStringValues.add(((SQLCharExpr) routingVal).getText());
                 }
                 else if (routingVal instanceof SQLVariantRefExpr) {
-                    Object targetVal = ElasticSqlArgTransferHelper.transferSqlArg(routingVal, dslContext.getSqlArgs());
+                    Object targetVal = ElasticSqlArgConverter.convertSqlArg(routingVal, dslContext.getSQLArgs());
                     if (!(targetVal instanceof String)) {
                         throw new ElasticSql2DslException("[syntax error] Index routing val must be a string");
                     }
@@ -42,6 +42,8 @@ public class QueryRoutingValParser implements QueryParser {
                 }
             }
             dslContext.getParseResult().setRoutingBy(routingStringValues);
+
+            parseActionListener.onRoutingValuesParse(routingStringValues);
         }
     }
 }

+ 10 - 24
src/main/java/org/es/sql/dsl/parser/sql/QuerySelectFieldListParser.java

@@ -1,20 +1,20 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr;
 import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
-import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.QueryFieldType;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlMethodInvokeHelper;
-import org.es.sql.dsl.listener.ParseActionListener;
 import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
 import org.elasticsearch.search.aggregations.AggregationBuilder;
 import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.es.sql.bean.ElasticDslContext;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.druid.ElasticSqlSelectQueryBlock;
+import org.es.sql.enums.QueryFieldType;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlMethodInvokeHelper;
+import org.es.sql.listener.ParseActionListener;
 
 import java.util.List;
 
@@ -56,7 +56,7 @@ public class QuerySelectFieldListParser implements QueryParser {
             if (sqlSelectField.getQueryFieldType() == QueryFieldType.SqlSelectField) {
                 selectFields.add(sqlSelectField.getQueryFieldFullName());
 
-                onSelectFieldParse(sqlSelectField);
+                parseActionListener.onSelectFieldParse(sqlSelectField);
             }
         }
 
@@ -64,7 +64,7 @@ public class QuerySelectFieldListParser implements QueryParser {
             List<AggregationBuilder> groupByList = dslContext.getParseResult().getGroupBy();
 
             if (CollectionUtils.isNotEmpty(groupByList)) {
-                AggregationBuilder lastLevelAggItem = (AggregationBuilder) groupByList.get(groupByList.size() - 1);
+                AggregationBuilder lastLevelAggItem = groupByList.get(groupByList.size() - 1);
                 for (AggregationBuilder aggItem : aggregations) {
                     lastLevelAggItem.subAggregation(aggItem);
                 }
@@ -99,18 +99,4 @@ public class QuerySelectFieldListParser implements QueryParser {
         }
         throw new ElasticSql2DslException(String.format("[syntax error] UnSupport agg method call[%s]", methodName));
     }
-
-    private void onSelectFieldParse(ElasticSqlQueryField field) {
-        try {
-            parseActionListener.onSelectFieldParse(field);
-        }
-        catch (Exception ex) {
-            try {
-                parseActionListener.onFailure(ex);
-            }
-            catch (Exception exp) {
-                //ignore;
-            }
-        }
-    }
 }

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/sql/QueryWhereConditionParser.java

@@ -1,9 +1,9 @@
-package org.es.sql.dsl.parser.sql;
+package org.es.sql.parser.sql;
 
-import org.es.sql.druid.ElasticSqlSelectQueryBlock;
-import org.es.sql.dsl.bean.ElasticDslContext;
-import org.es.sql.dsl.listener.ParseActionListener;
 import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.es.sql.bean.ElasticDslContext;
+import org.es.sql.druid.ElasticSqlSelectQueryBlock;
+import org.es.sql.listener.ParseActionListener;
 
 public class QueryWhereConditionParser extends AbstractQueryConditionParser {
 
@@ -18,7 +18,7 @@ public class QueryWhereConditionParser extends AbstractQueryConditionParser {
         if (queryBlock.getWhere() != null) {
             String queryAs = dslContext.getParseResult().getQueryAs();
 
-            BoolQueryBuilder whereQuery = parseQueryConditionExpr(queryBlock.getWhere(), queryAs, dslContext.getSqlArgs());
+            BoolQueryBuilder whereQuery = parseQueryConditionExpr(queryBlock.getWhere(), queryAs, dslContext.getSQLArgs());
 
             dslContext.getParseResult().setWhereCondition(whereQuery);
         }

+ 5 - 5
src/main/java/org/es/sql/dsl/parser/sql/sort/AbstractMethodSortParser.java

@@ -1,12 +1,12 @@
-package org.es.sql.dsl.parser.sql.sort;
+package org.es.sql.parser.sql.sort;
 
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.search.sort.SortBuilder;
 import org.elasticsearch.search.sort.SortOrder;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlMethodInvokeHelper;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.expr.AbstractParameterizedMethodExpression;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.helper.ElasticSqlMethodInvokeHelper;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.expr.AbstractParameterizedMethodExpression;
 
 import java.util.Map;
 

+ 1 - 1
src/main/java/org/es/sql/dsl/parser/sql/sort/ConditionSortBuilder.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.parser.sql.sort;
+package org.es.sql.parser.sql.sort;
 
 import org.elasticsearch.search.sort.FieldSortBuilder;
 

+ 4 - 4
src/main/java/org/es/sql/dsl/parser/sql/sort/MethodSortParser.java

@@ -1,10 +1,10 @@
-package org.es.sql.dsl.parser.sql.sort;
+package org.es.sql.parser.sql.sort;
 
 import org.elasticsearch.search.sort.SortBuilder;
 import org.elasticsearch.search.sort.SortOrder;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.expr.MethodExpression;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.query.method.expr.MethodExpression;
 
 public interface MethodSortParser extends MethodExpression {
     SortBuilder parseMethodSortBuilder(MethodInvocation invocation, SortOrder order) throws ElasticSql2DslException;

+ 6 - 6
src/main/java/org/es/sql/dsl/parser/sql/sort/NvlMethodSortParser.java

@@ -1,14 +1,14 @@
-package org.es.sql.dsl.parser.sql.sort;
+package org.es.sql.parser.sql.sort;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.*;
 import com.google.common.collect.ImmutableList;
 import org.elasticsearch.search.sort.*;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.SortOption;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.sql.QueryFieldParser;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.enums.SortOption;
+import org.es.sql.exception.ElasticSql2DslException;
+import org.es.sql.parser.query.method.MethodInvocation;
+import org.es.sql.parser.sql.QueryFieldParser;
 
 import java.util.List;
 import java.util.Map;

+ 4 - 4
src/main/java/org/es/sql/dsl/parser/sql/sort/ParseSortBuilderHelper.java

@@ -1,4 +1,4 @@
-package org.es.sql.dsl.parser.sql.sort;
+package org.es.sql.parser.sql.sort;
 
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
@@ -6,9 +6,9 @@ import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
 import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
 import org.elasticsearch.search.sort.FieldSortBuilder;
 import org.elasticsearch.search.sort.SortBuilder;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.QueryFieldType;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.enums.QueryFieldType;
+import org.es.sql.exception.ElasticSql2DslException;
 
 public class ParseSortBuilderHelper {
 

+ 3 - 3
src/main/java/org/es/sql/dsl/parser/sql/sort/ScriptMethodSortParser.java

@@ -1,4 +1,4 @@
-//package org.es.sql.dsl.parser.sql.sort;
+//package org.es.sql.parser.sql.sort;
 //
 //import com.google.common.collect.ImmutableList;
 //import org.apache.commons.collections.MapUtils;
@@ -6,8 +6,8 @@
 //import org.elasticsearch.search.sort.SortBuilder;
 //import org.elasticsearch.search.sort.SortBuilders;
 //import org.elasticsearch.search.sort.SortOrder;
-//import org.es.sql.dsl.exception.ElasticSql2DslException;
-//import org.es.sql.dsl.parser.query.method.MethodInvocation;
+//import org.es.sql.exception.ElasticSql2DslException;
+//import org.es.sql.parser.query.method.MethodInvocation;
 //
 //import java.util.List;
 //import java.util.Map;

+ 0 - 1
src/test/java/org/es/test/ProductIndexQueryTest.java

@@ -38,7 +38,6 @@ public class ProductIndexQueryTest {
     }
 
 
-
     @Test
     public void testProductQuery() throws Exception {
         List<Product> productList = getProductByCodeAndMatchWord("iphone 6s", "IP_6S");

+ 1 - 1
src/test/java/org/es/test/jdbc/ElasticDriverTest.java

@@ -11,7 +11,7 @@ import org.junit.Test;
 import java.sql.*;
 import java.util.Enumeration;
 
-public class ElasticDriverTest extends BaseJdbcTest{
+public class ElasticDriverTest extends BaseJdbcTest {
 
     @Test
     public void testLoadDriver() throws Exception {

+ 4 - 4
src/test/java/org/es/test/jdbc/bean/ProductAggResult.java

@@ -38,11 +38,11 @@ public class ProductAggResult {
         this.minAdvicePrice = minAdvicePrice;
     }
 
-    public void setProviderLevel(Long providerLevel) {
-        this.providerLevel = providerLevel;
-    }
-
     public Long getProviderLevel() {
         return providerLevel;
     }
+
+    public void setProviderLevel(Long providerLevel) {
+        this.providerLevel = providerLevel;
+    }
 }

+ 2 - 2
src/test/java/org/es/test/query/SqlParserLimitTest.java

@@ -1,7 +1,7 @@
 package org.es.test.query;
 
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.parser.ElasticSql2DslParser;
 import org.junit.Assert;
 import org.junit.Test;
 

+ 6 - 6
src/test/java/org/es/test/query/SqlParserListenerTest.java

@@ -1,10 +1,10 @@
 package org.es.test.query;
 
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.SQLConditionOperator;
-import org.es.sql.dsl.listener.ParseActionListenerAdapter;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.bean.ElasticSqlQueryField;
+import org.es.sql.enums.SQLConditionOperator;
+import org.es.sql.listener.ParseActionListenerAdapter;
+import org.es.sql.parser.ElasticSql2DslParser;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -15,7 +15,7 @@ public class SqlParserListenerTest {
         ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
         ElasticSqlParseResult parseResult = sql2DslParser.parse(sql, new ParseActionListenerAdapter() {
             @Override
-            public void onAtomExactQueryConditionParse(ElasticSqlQueryField paramName, Object[] paramValues, SQLConditionOperator operator) {
+            public void onAtomExactQueryConditionParse(ElasticSqlQueryField paramName, Object[] params, SQLConditionOperator operator) {
                 if (SQLConditionOperator.Equality == operator) {
                     Assert.assertEquals("status", paramName.getQueryFieldFullName());
                 }

+ 2 - 2
src/test/java/org/es/test/query/SqlParserOrderByTest.java

@@ -1,8 +1,8 @@
 package org.es.test.query;
 
 import org.elasticsearch.action.search.SearchRequestBuilder;
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.parser.ElasticSql2DslParser;
 import org.es.sql.utils.ElasticMockClient;
 import org.junit.Test;
 

+ 2 - 2
src/test/java/org/es/test/query/SqlParserQueryTest.java

@@ -1,7 +1,7 @@
 package org.es.test.query;
 
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.parser.ElasticSql2DslParser;
 import org.junit.Test;
 
 

+ 2 - 2
src/test/java/org/es/test/query/SqlParserRoutingTest.java

@@ -1,7 +1,7 @@
 package org.es.test.query;
 
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.parser.ElasticSql2DslParser;
 import org.junit.Assert;
 import org.junit.Test;
 

+ 2 - 2
src/test/java/org/es/test/query/SqlParserSelectFieldTest.java

@@ -1,8 +1,8 @@
 package org.es.test.query;
 
 import org.apache.commons.collections.CollectionUtils;
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.parser.ElasticSql2DslParser;
 import org.junit.Assert;
 import org.junit.Test;
 

+ 2 - 2
src/test/java/org/es/test/query/SqlParserWhereConditionTest.java

@@ -9,8 +9,8 @@ import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
 import org.elasticsearch.search.aggregations.AggregationBuilders;
 import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
-import org.es.sql.dsl.bean.ElasticSqlParseResult;
-import org.es.sql.dsl.parser.ElasticSql2DslParser;
+import org.es.sql.bean.ElasticSqlParseResult;
+import org.es.sql.parser.ElasticSql2DslParser;
 import org.es.sql.utils.ElasticMockClient;
 import org.junit.Assert;
 import org.junit.Ignore;

+ 9 - 10
src/test/resources/application-context.xml

@@ -1,29 +1,28 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:tx="http://www.springframework.org/schema/tx"
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
+       xmlns="http://www.springframework.org/schema/beans"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
-     http://www.springframework.org/schema/tx
-     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+
+
 
 
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-2.5.xsd">
 
 
-    <context:component-scan base-package="org.es" />
+    <context:component-scan base-package="org.es"/>
 
     <bean id="elasticDataSource" class="org.es.jdbc.api.ElasticSingleConnectionDataSource" destroy-method="destroy">
-        <property name="driverClassName" value="org.es.jdbc.api.ElasticDriver" />
-        <property name="url" value="jdbc:elastic:192.168.0.108:9300/lu-search-cluster" />
-        <property name="suppressClose" value="true" />
+        <property name="driverClassName" value="org.es.jdbc.api.ElasticDriver"/>
+        <property name="url" value="jdbc:elastic:192.168.0.108:9300/lu-search-cluster"/>
+        <property name="suppressClose" value="true"/>
     </bean>
 
 
     <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
-        <property name="dataSource" ref="elasticDataSource" />
+        <property name="dataSource" ref="elasticDataSource"/>
         <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
     </bean>
 

+ 9 - 10
target/test-classes/application-context.xml

@@ -1,29 +1,28 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:tx="http://www.springframework.org/schema/tx"
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
+       xmlns="http://www.springframework.org/schema/beans"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
-     http://www.springframework.org/schema/tx
-     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+
+
 
 
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-2.5.xsd">
 
 
-    <context:component-scan base-package="org.es" />
+    <context:component-scan base-package="org.es"/>
 
     <bean id="elasticDataSource" class="org.es.jdbc.api.ElasticSingleConnectionDataSource" destroy-method="destroy">
-        <property name="driverClassName" value="org.es.jdbc.api.ElasticDriver" />
-        <property name="url" value="jdbc:elastic:192.168.0.108:9300/lu-search-cluster" />
-        <property name="suppressClose" value="true" />
+        <property name="driverClassName" value="org.es.jdbc.api.ElasticDriver"/>
+        <property name="url" value="jdbc:elastic:192.168.0.108:9300/lu-search-cluster"/>
+        <property name="suppressClose" value="true"/>
     </bean>
 
 
     <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
-        <property name="dataSource" ref="elasticDataSource" />
+        <property name="dataSource" ref="elasticDataSource"/>
         <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
     </bean>