Remove pure findBy method completion from proposal list

This commit is contained in:
aboyko
2023-03-23 18:48:11 -04:00
parent 755ec97900
commit 3330e4e33e
2 changed files with 8 additions and 6 deletions

View File

@@ -31,7 +31,7 @@ public class DataRepositoryQueryStartCompletionProvider implements DataRepositor
String localPrefix = DataRepositoryPrefixSensitiveCompletionProvider.findLastJavaIdentifierPart(prefix);
for(QueryMethodSubject queryMethodSubject : QueryMethodSubject.QUERY_METHOD_SUBJECTS){
String toInsert = queryMethodSubject.key() + "By";
if(prefix == null || toInsert.startsWith(localPrefix)||isOffsetAfterWhitespace(doc, offset)) {
if(prefix == null || (toInsert.length() > localPrefix.length() && toInsert.startsWith(localPrefix)) || isOffsetAfterWhitespace(doc, offset)) {
completions.add(FindByCompletionProposal.createProposal(offset, CompletionItemKind.Text, prefix, toInsert, toInsert, true));
}
}

View File

@@ -42,10 +42,12 @@ public class DataRepositoryPrefixSensitiveCompletionProvider implements DataRepo
DataRepositoryMethodNameParseResult parseResult = new DataRepositoryMethodParser(localPrefix, repoDef).parseLocalPrefixForCompletion();
if(parseResult != null && parseResult.performFullCompletion()){
Map<String, DomainProperty> propertiesByName = getPropertiesByName(repoDef.getDomainType().getProperties());
addMethodCompletionProposal(completions, offset, repoDef, localPrefix, prefix, parseResult, propertiesByName);
if (parseResult.lastWord() != null || !localPrefix.endsWith("By")) {
addMethodCompletionProposal(completions, offset, repoDef, localPrefix, prefix, parseResult, propertiesByName);
}
if (parseResult.lastWord() == null || !propertiesByName.containsKey(parseResult.lastWord())) {
addPropertyProposals(completions, offset, repoDef, parseResult);
addPropertyProposals(completions, offset, propertiesByName, parseResult);
}
addPredicateKeywordProposals(completions, offset, prefix, parseResult, propertiesByName);
}
@@ -79,9 +81,9 @@ public class DataRepositoryPrefixSensitiveCompletionProvider implements DataRepo
return lastWord;
}
private void addPropertyProposals(Collection<ICompletionProposal> completions, int offset, DataRepositoryDefinition repoDef, DataRepositoryMethodNameParseResult parseResult) {
for(DomainProperty property : repoDef.getDomainType().getProperties()){
String toReplace = property.getName();
private void addPropertyProposals(Collection<ICompletionProposal> completions, int offset, Map<String, DomainProperty> propertiesByName, DataRepositoryMethodNameParseResult parseResult) {
for (Map.Entry<String, DomainProperty> e : propertiesByName.entrySet()) {
String toReplace = e.getKey();
createLastWordReplacementCompletion(completions, offset, parseResult, parseResult.lastWord(), toReplace);
}
}