diff --git a/core/src/main/java/datart/core/base/consts/Const.java b/core/src/main/java/datart/core/base/consts/Const.java index 32c598588..e1c15f88a 100644 --- a/core/src/main/java/datart/core/base/consts/Const.java +++ b/core/src/main/java/datart/core/base/consts/Const.java @@ -48,7 +48,7 @@ public class Const { public static final String DEFAULT_VARIABLE_QUOTE = "$"; //变量匹配符 public static final Pattern VARIABLE_PATTERN = Pattern.compile("\\$\\S+\\$"); - + //变量正则模板 public static final String VARIABLE_PATTERN_TEMPLATE = "\\$%s\\$"; /** diff --git a/data-providers/src/main/java/datart/data/provider/jdbc/PermissionVariablePlaceholder.java b/data-providers/src/main/java/datart/data/provider/jdbc/PermissionVariablePlaceholder.java deleted file mode 100644 index 56f4bfa2b..000000000 --- a/data-providers/src/main/java/datart/data/provider/jdbc/PermissionVariablePlaceholder.java +++ /dev/null @@ -1,65 +0,0 @@ -///* -// * Datart -// *
-// * Copyright 2021 -// *
-// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// *
-// * http://www.apache.org/licenses/LICENSE-2.0 -// *
-// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -// -//package datart.data.provider.jdbc; -// -//import datart.core.base.consts.Const; -//import datart.core.data.provider.ScriptVariable; -//import datart.data.provider.calcite.SqlNodeUtils; -//import datart.data.provider.script.ReplacementPair; -//import datart.data.provider.script.VariablePlaceholder; -//import org.apache.calcite.sql.SqlCall; -//import org.apache.calcite.sql.SqlDialect; -//import org.springframework.util.CollectionUtils; -// -//import java.io.Serializable; -// -//public class PermissionVariablePlaceholder extends VariablePlaceholder { -// -// public PermissionVariablePlaceholder(ScriptVariable variable, SqlDialect sqlDialect, SqlCall sqlCall, String originalSqlFragment) { -// super(variable, sqlDialect, sqlCall, originalSqlFragment); -// } -// -// @Override -// public ReplacementPair replacementPair() { -// -// if (CollectionUtils.isEmpty(variable.getValues())) { -// return new ReplacementPair(originalSqlFragment, SqlScriptRender.FALSE_CONDITION); -// } -// -// for (Serializable value : variable.getValues()) { -// if (Const.ALL_PERMISSION.equals(value.toString())) { -// return new ReplacementPair(originalSqlFragment, SqlScriptRender.TRUE_CONDITION); -// } -// } -// -// if (variable.getValues().size() == 1) { -// replaceVariable(sqlCall); -// -// return new ReplacementPair(originalSqlFragment, SqlNodeUtils.toSql(sqlCall, sqlDialect)); -// } -// -// //权限变量为多值,需要解析SQL条件表达式,根据权限变量值修改关系运算符 -// SqlCall fixSqlCall = autoFixSqlCall(); -// -// return new ReplacementPair(originalSqlFragment, SqlNodeUtils.toSql(fixSqlCall, sqlDialect)); -// -// } -// -// -//} diff --git a/data-providers/src/main/java/datart/data/provider/jdbc/QueryVariablePlaceholder.java b/data-providers/src/main/java/datart/data/provider/jdbc/QueryVariablePlaceholder.java deleted file mode 100644 index 0d91f6705..000000000 --- a/data-providers/src/main/java/datart/data/provider/jdbc/QueryVariablePlaceholder.java +++ /dev/null @@ -1,48 +0,0 @@ -///* -// * Datart -// *
-// * Copyright 2021 -// *
-// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// *
-// * http://www.apache.org/licenses/LICENSE-2.0 -// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package datart.data.provider.jdbc;
-//
-//import datart.core.data.provider.ScriptVariable;
-//import datart.data.provider.calcite.SqlNodeUtils;
-//import datart.data.provider.script.ReplacementPair;
-//import datart.data.provider.script.VariablePlaceholder;
-//import org.apache.calcite.sql.SqlCall;
-//import org.apache.calcite.sql.SqlDialect;
-//import org.springframework.util.CollectionUtils;
-//
-//public class QueryVariablePlaceholder extends VariablePlaceholder {
-//
-// public QueryVariablePlaceholder(ScriptVariable variable, SqlDialect sqlDialect, SqlCall sqlCall, String originalSqlFragment) {
-// super(variable, sqlDialect, sqlCall, originalSqlFragment);
-// }
-//
-// @Override
-// public ReplacementPair replacementPair() {
-// if (CollectionUtils.isEmpty(variable.getValues())) {
-// SqlCall isNullSqlCall = createIsNullSqlCall(sqlCall.getOperandList().get(0));
-// return new ReplacementPair(originalSqlFragment, SqlNodeUtils.toSql(isNullSqlCall, sqlDialect));
-// }
-// if (variable.getValues().size() == 1) {
-// replaceVariable(sqlCall);
-// return new ReplacementPair(originalSqlFragment, SqlNodeUtils.toSql(sqlCall, sqlDialect));
-// }
-// SqlCall fixedCall = autoFixSqlCall();
-// return new ReplacementPair(originalSqlFragment, SqlNodeUtils.toSql(fixedCall, sqlDialect));
-// }
-//}
diff --git a/data-providers/src/main/java/datart/data/provider/jdbc/RegexVariableResolver.java b/data-providers/src/main/java/datart/data/provider/jdbc/RegexVariableResolver.java
index bdf9b7d2c..1b7951b54 100644
--- a/data-providers/src/main/java/datart/data/provider/jdbc/RegexVariableResolver.java
+++ b/data-providers/src/main/java/datart/data/provider/jdbc/RegexVariableResolver.java
@@ -59,6 +59,7 @@ private static VariablePlaceholder createPlaceholder(SqlDialect sqlDialect, Stri
String variableExpression = tryMatchVariableExpression(sql, variableFragment);
SqlCall sqlCall = parseAsSqlCall(variableExpression, variableFragment);
+
if (sqlCall == null) {
return new SimpleVariablePlaceholder(variable, sqlDialect, variableFragment);
} else {
diff --git a/data-providers/src/main/java/datart/data/provider/jdbc/SimpleVariablePlaceholder.java b/data-providers/src/main/java/datart/data/provider/jdbc/SimpleVariablePlaceholder.java
index 126f0a76e..f842a914f 100644
--- a/data-providers/src/main/java/datart/data/provider/jdbc/SimpleVariablePlaceholder.java
+++ b/data-providers/src/main/java/datart/data/provider/jdbc/SimpleVariablePlaceholder.java
@@ -55,35 +55,6 @@ public ReplacementPair replacementPair() {
return new ReplacementPair(originalSqlFragment, formatValue(variable));
}
- private String formatValue(ScriptVariable variable) {
- switch (variable.getValueType()) {
- case NUMERIC:
- case KEYWORD:
- case SNIPPET:
- case FRAGMENT:
- case IDENTIFIER:
- return formatWithoutQuote(variable.getValues());
- default:
- return formatWithQuote(variable.getValues());
- }
- }
-
- private String formatWithoutQuote(Set
-// * Copyright 2021
-// *
-// * Licensed under the Apache License, Version 2.0 (the "License");
-// * you may not use this file except in compliance with the License.
-// * You may obtain a copy of the License at
-// *
-// * http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package datart.data.provider.jdbc;
-//
-//import datart.core.data.provider.ScriptVariable;
-//import datart.data.provider.script.ReplacementPair;
-//import datart.data.provider.script.VariablePlaceholder;
-//import org.apache.calcite.sql.SqlCall;
-//import org.apache.calcite.sql.SqlDialect;
-//
-//public class TrueVariablePlaceholder extends VariablePlaceholder {
-//
-// public TrueVariablePlaceholder(ScriptVariable variable, SqlDialect sqlDialect, SqlCall sqlCall, String originalSqlFragment) {
-// super(variable, sqlDialect, sqlCall, originalSqlFragment);
-// }
-//
-// public TrueVariablePlaceholder(String originalSqlFragment) {
-// this(null, null, null, originalSqlFragment);
-// }
-//
-// @Override
-// public ReplacementPair replacementPair() {
-// return new ReplacementPair(originalSqlFragment, SqlScriptRender.TRUE_CONDITION);
-// }
-//}
diff --git a/data-providers/src/main/java/datart/data/provider/script/VariablePlaceholder.java b/data-providers/src/main/java/datart/data/provider/script/VariablePlaceholder.java
index 7c0e02330..8ebb77309 100644
--- a/data-providers/src/main/java/datart/data/provider/script/VariablePlaceholder.java
+++ b/data-providers/src/main/java/datart/data/provider/script/VariablePlaceholder.java
@@ -289,11 +289,40 @@ protected ReplacementPair replaceAsSting() {
Matcher matcher = variablePattern.matcher(originalSqlFragment);
if (matcher.find()) {
String group = matcher.group();
- SqlNode sqlNode = SqlNodeUtils.toSingleSqlLiteral(variable, SqlParserPos.ZERO);
- replacement = replacement.replace(group, sqlNode.toSqlString(sqlDialect).getSql());
+ replacement = replacement.replace(group, formatValue(variable));
}
}
return new ReplacementPair(originalSqlFragment, replacement);
}
+ protected String formatValue(ScriptVariable variable) {
+ switch (variable.getValueType()) {
+ case NUMERIC:
+ case KEYWORD:
+ case SNIPPET:
+ case FRAGMENT:
+ case IDENTIFIER:
+ return formatWithoutQuote(variable.getValues());
+ default:
+ return formatWithQuote(variable.getValues());
+ }
+ }
+
+ protected String formatWithoutQuote(Set