mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] introduce VcsLogTextFilter.matches(String) method
This commit is contained in:
@@ -44,9 +44,22 @@ public interface VcsLogTextFilter extends VcsLogDetailsFilter {
|
||||
*/
|
||||
boolean matchesCase();
|
||||
|
||||
/**
|
||||
* Checks whether a specified commit message matches this filter.
|
||||
*
|
||||
* @param message a commit message to check
|
||||
* @return true if commit message matches this filter
|
||||
*/
|
||||
boolean matches(@NotNull String message);
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
default VcsLogFilterCollection.FilterKey<VcsLogTextFilter> getKey() {
|
||||
return TEXT_FILTER;
|
||||
}
|
||||
|
||||
@Override
|
||||
default boolean matches(@NotNull VcsCommitMetadata details) {
|
||||
return matches(details.getFullMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import com.intellij.vcs.log.*;
|
||||
import com.intellij.vcs.log.data.VcsLogStorage;
|
||||
import com.intellij.vcs.log.history.FileNamesData;
|
||||
import com.intellij.vcs.log.impl.FatalErrorHandler;
|
||||
import com.intellij.vcs.log.ui.filter.VcsLogTextFilterImpl;
|
||||
import com.intellij.vcs.log.util.TroveUtil;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import gnu.trove.TIntHashSet;
|
||||
@@ -205,7 +204,7 @@ public class IndexDataGetter {
|
||||
try {
|
||||
String value = myIndexStorage.messages.get(commit);
|
||||
if (value != null) {
|
||||
if (VcsLogTextFilterImpl.matches(filter, value)) {
|
||||
if (filter.matches(value)) {
|
||||
result.add(commit);
|
||||
}
|
||||
}
|
||||
@@ -224,7 +223,7 @@ public class IndexDataGetter {
|
||||
if (resultByTrigrams != null) return resultByTrigrams;
|
||||
}
|
||||
|
||||
return filter(myIndexStorage.messages, message -> VcsLogTextFilterImpl.matches(filter, message));
|
||||
return filter(myIndexStorage.messages, filter::matches);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -15,12 +15,9 @@
|
||||
*/
|
||||
package com.intellij.vcs.log.ui.filter
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.vcs.log.VcsCommitMetadata
|
||||
import com.intellij.vcs.log.VcsLogDetailsFilter
|
||||
import com.intellij.vcs.log.VcsLogTextFilter
|
||||
import com.intellij.vcs.log.util.VcsLogUtil
|
||||
|
||||
import java.util.regex.Pattern
|
||||
import java.util.regex.PatternSyntaxException
|
||||
|
||||
@@ -37,8 +34,9 @@ class VcsLogTextFilterImpl(private val text: String,
|
||||
// used in upsource
|
||||
constructor(text: String) : this(text, false, false)
|
||||
|
||||
override fun matches(details: VcsCommitMetadata): Boolean {
|
||||
return matches(this, details.fullMessage)
|
||||
override fun matches(message: String): Boolean {
|
||||
if (pattern != null) return pattern.matcher(message).find()
|
||||
return message.contains(text, !matchCase)
|
||||
}
|
||||
|
||||
override fun getText(): String {
|
||||
@@ -69,18 +67,5 @@ class VcsLogTextFilterImpl(private val text: String,
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun matches(filter: VcsLogTextFilter, message: String): Boolean {
|
||||
val pattern = if (filter is VcsLogTextFilterImpl) {
|
||||
filter.pattern
|
||||
}
|
||||
else {
|
||||
createPattern(filter.text, filter.isRegex, filter.matchesCase())
|
||||
}
|
||||
if (pattern != null) return pattern.matcher(message).find()
|
||||
|
||||
return if (filter.matchesCase()) message.contains(filter.text) else StringUtil.containsIgnoreCase(message, filter.text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,10 @@ package git4idea.log;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.vcs.log.*;
|
||||
import com.intellij.vcs.log.Hash;
|
||||
import com.intellij.vcs.log.TimedVcsCommit;
|
||||
import com.intellij.vcs.log.VcsLogFilterCollection;
|
||||
import com.intellij.vcs.log.VcsLogTextFilter;
|
||||
import com.intellij.vcs.log.impl.VcsLogFilterCollectionImpl.VcsLogFilterCollectionBuilder;
|
||||
import com.intellij.vcs.log.util.BekUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -100,8 +103,8 @@ class GitBekParentFixer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(@NotNull VcsCommitMetadata details) {
|
||||
return details.getFullMessage().contains(MAGIC_TEXT);
|
||||
public boolean matches(@NotNull String message) {
|
||||
return message.contains(MAGIC_TEXT);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user