#10858 Retrieve rule manager from the completion context

上级 82097d2e
......@@ -40,6 +40,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableParametrized;
import org.jkiss.dbeaver.model.sql.*;
import org.jkiss.dbeaver.model.sql.parser.SQLParserPartitions;
import org.jkiss.dbeaver.model.sql.parser.SQLRuleManager;
import org.jkiss.dbeaver.model.sql.parser.SQLWordPartDetector;
import org.jkiss.dbeaver.model.sql.parser.tokens.SQLTokenType;
import org.jkiss.dbeaver.model.struct.*;
......@@ -812,9 +813,10 @@ public class SQLCompletionAnalyzer implements DBRRunnableParametrized<DBRProgres
@Nullable
private Pair<String, String> extractTableName(@Nullable String tableAlias, boolean allowPartialMatch) {
final IDocument document = request.getDocument();
final TPRuleBasedScanner scanner = request.getScanner();
final SQLScriptElement activeQuery = request.getActiveQuery();
final SQLRuleManager ruleManager = request.getContext().getRuleManager();
final TPRuleBasedScanner scanner = new TPRuleBasedScanner();
scanner.setRules(ruleManager.getAllRules());
scanner.setRange(document, activeQuery.getOffset(), activeQuery.getLength());
/*
......
......@@ -24,6 +24,7 @@ import org.jkiss.dbeaver.model.DBPKeywordType;
import org.jkiss.dbeaver.model.DBPNamedObject;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.sql.SQLSyntaxManager;
import org.jkiss.dbeaver.model.sql.parser.SQLRuleManager;
import java.util.Map;
......@@ -42,6 +43,8 @@ public interface SQLCompletionContext {
SQLSyntaxManager getSyntaxManager();
SQLRuleManager getRuleManager();
boolean isUseFQNames();
boolean isReplaceWords();
......
......@@ -18,10 +18,7 @@ package org.jkiss.dbeaver.model.sql.completion;
import org.eclipse.jface.text.IDocument;
import org.jkiss.dbeaver.model.sql.SQLScriptElement;
import org.jkiss.dbeaver.model.sql.SQLSyntaxManager;
import org.jkiss.dbeaver.model.sql.parser.SQLRuleManager;
import org.jkiss.dbeaver.model.sql.parser.SQLWordPartDetector;
import org.jkiss.dbeaver.model.text.parser.TPRuleBasedScanner;
public class SQLCompletionRequest {
......@@ -38,7 +35,6 @@ public class SQLCompletionRequest {
private final SQLScriptElement activeQuery;
private final boolean simpleMode;
private final TPRuleBasedScanner scanner;
private final SQLWordPartDetector wordDetector;
private String wordPart;
......@@ -52,15 +48,6 @@ public class SQLCompletionRequest {
this.activeQuery = activeQuery;
this.simpleMode = simpleMode;
final SQLSyntaxManager syntaxManager = new SQLSyntaxManager();
syntaxManager.init(context.getDataSource());
final SQLRuleManager ruleManager = new SQLRuleManager(syntaxManager);
ruleManager.loadRules(context.getDataSource(), false);
this.scanner = new TPRuleBasedScanner();
this.scanner.setRules(ruleManager.getAllRules());
this.wordDetector = new SQLWordPartDetector(document, context.getSyntaxManager(), documentOffset);
this.wordPart = wordDetector.getWordPart();
}
......@@ -85,10 +72,6 @@ public class SQLCompletionRequest {
return simpleMode;
}
public TPRuleBasedScanner getScanner() {
return scanner;
}
public SQLWordPartDetector getWordDetector() {
return wordDetector;
}
......
......@@ -251,6 +251,14 @@ public abstract class SQLEditorBase extends BaseTextEditor implements DBPContext
return syntaxManager;
}
@Nullable
public SQLRuleManager getRuleManager() {
if (parserContext == null) {
return null;
}
return parserContext.getRuleManager();
}
@NotNull
public SQLRuleScanner getRuleScanner() {
return ruleScanner;
......
......@@ -28,6 +28,7 @@ import org.jkiss.dbeaver.model.sql.SQLSyntaxManager;
import org.jkiss.dbeaver.model.sql.completion.SQLCompletionContext;
import org.jkiss.dbeaver.model.sql.completion.SQLCompletionProposalBase;
import org.jkiss.dbeaver.model.sql.completion.SQLCompletionRequest;
import org.jkiss.dbeaver.model.sql.parser.SQLRuleManager;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase;
import org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants;
......@@ -59,6 +60,11 @@ public class SQLEditorCompletionContext implements SQLCompletionContext
return editor.getSyntaxManager();
}
@Override
public SQLRuleManager getRuleManager() {
return editor.getRuleManager();
}
@Override
public boolean isUseFQNames() {
return getActivePreferenceStore().getBoolean(SQLPreferenceConstants.PROPOSAL_ALWAYS_FQ);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册