From 9e4483b5479b4ea99d4e8d1dce1e5cec01411ccb Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Tue, 14 Aug 2018 18:50:19 +0300 Subject: [PATCH] [vcs-log] introduce VcsLogTextFilter.matches(String) method --- .../intellij/vcs/log/VcsLogTextFilter.java | 13 ++++++++++++ .../vcs/log/data/index/IndexDataGetter.java | 5 ++--- .../vcs/log/ui/filter/VcsLogTextFilterImpl.kt | 21 +++---------------- .../src/git4idea/log/GitBekParentFixer.java | 9 +++++--- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogTextFilter.java b/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogTextFilter.java index 47cddad18c2c..25fd2cd0433c 100644 --- a/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogTextFilter.java +++ b/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogTextFilter.java @@ -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 getKey() { return TEXT_FILTER; } + + @Override + default boolean matches(@NotNull VcsCommitMetadata details) { + return matches(details.getFullMessage()); + } } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/IndexDataGetter.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/IndexDataGetter.java index b1f13d275684..55e5f53ff1b4 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/IndexDataGetter.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/IndexDataGetter.java @@ -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 diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/VcsLogTextFilterImpl.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/VcsLogTextFilterImpl.kt index c043053a3915..ffb4838ee37e 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/VcsLogTextFilterImpl.kt +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/VcsLogTextFilterImpl.kt @@ -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) - } } } diff --git a/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java b/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java index 614a156faeba..542aa9ae6cd2 100644 --- a/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java +++ b/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java @@ -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); } };