提交 48bdf41c 编写于 作者: J jurgen

Completion processor fix

上级 e6f0f581
......@@ -246,6 +246,7 @@ meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.maxLength.name=Length
meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.required.name=Not Null
meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.scale.name=Scale
meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.precision.name=Precision
meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.sequence.name=Position
meta.org.jkiss.dbeaver.model.impl.struct.AbstractProcedure.name.name=Procedure Name
meta.org.jkiss.dbeaver.model.impl.struct.AbstractProcedure.description.name=Procedure Description
meta.org.jkiss.dbeaver.model.impl.struct.AbstractTable.name.name=Table Name
......
......@@ -295,9 +295,15 @@ public class SQLCompletionProcessor implements IContentAssistProcessor
makeProposalsFromChildren(monitor, childObject, lastToken, proposals);
if (proposals.isEmpty() || tokens.size() == 1) {
// At last - try to find child tables by pattern
DBSStructureAssistant structureAssistant = DBUtils.getAdapter(DBSStructureAssistant.class, childObject);
DBSStructureAssistant structureAssistant = null;
for (DBSObject object = childObject; object != null; object = object.getParentObject()) {
structureAssistant = DBUtils.getAdapter(DBSStructureAssistant.class, object);
if (structureAssistant != null) {
break;
}
}
if (structureAssistant != null) {
makeProposalsFromAssistant(monitor, structureAssistant, rootContainer, lastToken, proposals);
makeProposalsFromAssistant(monitor, structureAssistant, sc, lastToken, proposals);
}
}
}
......
......@@ -44,7 +44,8 @@ public class SQLCompletionProposal implements ICompletionProposal, ICompletionPr
private String displayString;
/** The replacement string. */
private String replacementString;
private String replacementLower;
private String replacementFull;
private String replacementLast;
/** The replacement offset. */
private int replacementOffset;
/** The replacement length. */
......@@ -63,7 +64,13 @@ public class SQLCompletionProposal implements ICompletionProposal, ICompletionPr
this.syntaxManager = syntaxManager;
this.displayString = displayString;
this.replacementString = replacementString;
this.replacementLower = replacementString.toLowerCase();
this.replacementFull = replacementString.toLowerCase();
int divPos = this.replacementFull.lastIndexOf(syntaxManager.getStructSeparator());
if (divPos == -1) {
this.replacementLast = null;
} else {
this.replacementLast = this.replacementFull.substring(divPos + 1);
}
this.cursorPosition = cursorPosition;
this.image = image;
this.contextInformation = contextInformation;
......@@ -165,7 +172,10 @@ public class SQLCompletionProposal implements ICompletionProposal, ICompletionPr
if (divPos != -1) {
wordPart = wordPart.substring(divPos + 1);
}
if (!CommonUtils.isEmpty(wordPart) && replacementLower.startsWith(wordPart.toLowerCase())) {
String wordLower = wordPart.toLowerCase();
if (!CommonUtils.isEmpty(wordPart) &&
(replacementFull.startsWith(wordLower) ||
(this.replacementLast != null && this.replacementLast.startsWith(wordLower)))) {
setPosition(wordDetector);
return true;
} else {
......
......@@ -65,6 +65,17 @@ public class GenericStructureAssistant extends JDBCStructureAssistant
};
}
public DBSObjectType[] getHyperlinkObjectTypes()
{
return getSupportedObjectTypes();
}
@Override
public DBSObjectType[] getAutoCompleteObjectTypes()
{
return getSupportedObjectTypes();
}
@Override
protected void findObjectsByMask(JDBCSession session, DBSObjectType objectType, DBSObject parentObject, String objectNameMask, boolean caseSensitive, int maxResults, List<DBSObjectReference> references) throws DBException, SQLException
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册