提交 5b9a0f7e 编写于 作者: S Serge Rider

#1969 DBUtils refactoring

上级 e307ca13
......@@ -22,6 +22,7 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.exec.DBCStatistics;
import org.jkiss.dbeaver.model.sql.SQLControlCommand;
......@@ -52,9 +53,8 @@ public class SQLCommandInclude implements SQLControlCommandHandler {
throw new DBException("Empty input file");
}
fileName = GeneralUtils.replaceVariables(fileName, new GeneralUtils.MapResolver(scriptContext.getVariables())).trim();
if (fileName.startsWith("\"") && fileName.endsWith("\"")) {
fileName = fileName.substring(1, fileName.length() - 1);
}
fileName = DBUtils.getUnQuotedIdentifier(fileName, "\"");
fileName = DBUtils.getUnQuotedIdentifier(fileName, "'");
File curFile = scriptContext.getSourceFile();
File incFile = curFile == null ? new File(fileName) : new File(curFile.getParent(), fileName);
......
......@@ -280,7 +280,6 @@ class SQLCompletionAnalyzer
final List<String> nameList = new ArrayList<>();
SQLDialect sqlDialect = ((SQLDataSource) dataSource).getSQLDialect();
String quoteString = sqlDialect.getIdentifierQuoteString();
{
// Regex matching MUST be very fast.
// Otherwise UI will freeze during SQL typing.
......@@ -333,8 +332,9 @@ class SQLCompletionAnalyzer
// Fix names (convert case or remove quotes)
for (int i = 0; i < nameList.size(); i++) {
String name = nameList.get(i);
if (quoteString != null && name.startsWith(quoteString) && name.endsWith(quoteString)) {
name = name.substring(1, name.length() - 1);
String unquotedName = DBUtils.getUnQuotedIdentifier(dataSource, name);
if (!unquotedName.equals(name)) {
name = unquotedName;
} else {
name = DBObjectNameCaseTransformer.transformName(sc.getDataSource(), name);
}
......
......@@ -67,9 +67,7 @@ public final class DBUtils {
if (quote == null) {
quote = SQLConstants.DEFAULT_IDENTIFIER_QUOTE;
}
if (str.startsWith(quote) && str.endsWith(quote)) {
return str.substring(quote.length(), str.length() - quote.length());
}
str = getUnQuotedIdentifier(str, quote, quote);
}
return str;
}
......@@ -77,8 +75,14 @@ public final class DBUtils {
@NotNull
public static String getUnQuotedIdentifier(@NotNull String str, String quote)
{
if (quote != null && str.startsWith(quote) && str.endsWith(quote)) {
return str.substring(quote.length(), str.length() - quote.length());
return getUnQuotedIdentifier(str, quote, quote);
}
@NotNull
public static String getUnQuotedIdentifier(@NotNull String str, String quote1, String quote2)
{
if (quote1 != null && quote2 != null && str.startsWith(quote1) && str.endsWith(quote2)) {
return str.substring(quote1.length(), str.length() - quote2.length());
}
return str;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册