diff options
Diffstat (limited to 'plugins/hg4idea/src')
-rw-r--r-- | plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java | 45 |
1 files changed, 14 insertions, 31 deletions
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java b/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java index 53cb43d9e457..9fc2b16aedaf 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java @@ -19,20 +19,14 @@ package org.zmlx.hg4idea.log; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.VcsKey; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ArrayUtil; import com.intellij.util.Consumer; -import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.vcs.log.*; -import com.intellij.vcs.log.data.VcsLogBranchFilter; -import com.intellij.vcs.log.data.VcsLogDateFilter; -import com.intellij.vcs.log.data.VcsLogStructureFilter; -import com.intellij.vcs.log.data.VcsLogUserFilter; -import com.intellij.vcs.log.ui.filter.VcsLogTextFilter; +import com.intellij.vcs.log.VcsLogTextFilter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.zmlx.hg4idea.HgNameWithHashInfo; @@ -162,33 +156,28 @@ public class HgLogProvider implements VcsLogProvider { @NotNull @Override public List<? extends VcsFullCommitDetails> getFilteredDetails(@NotNull final VirtualFile root, - @NotNull Collection<VcsLogFilter> filters, + @NotNull Collection<VcsLogBranchFilter> branchFilters, + @NotNull Collection<VcsLogUserFilter> userFilters, + @NotNull Collection<VcsLogDateFilter> dateFilters, + @NotNull Collection<VcsLogTextFilter> textFilters, + @NotNull Collection<VcsLogStructureFilter> structureFilters, int maxCount) throws VcsException { List<String> filterParameters = ContainerUtil.newArrayList(); - List<VcsLogBranchFilter> branchFilters = ContainerUtil.findAll(filters, VcsLogBranchFilter.class); + // branch filter and user filter may be used several times without delimiter + // or -r options with appropriate revset arguments delimited by '|' or 'and'. if (!branchFilters.isEmpty()) { - String branchFilter = joinFilters(branchFilters, new Function<VcsLogBranchFilter, String>() { - @Override - public String fun(VcsLogBranchFilter filter) { - return filter.getBranchName(); - } - }); - filterParameters.add(prepareParameter("branch", branchFilter)); + for (VcsLogBranchFilter branchFilter : branchFilters) { + filterParameters.add(prepareParameter("branch", branchFilter.getBranchName())); + } } - List<VcsLogUserFilter> userFilters = ContainerUtil.findAll(filters, VcsLogUserFilter.class); if (!userFilters.isEmpty()) { - String authorFilter = joinFilters(userFilters, new Function<VcsLogUserFilter, String>() { - @Override - public String fun(VcsLogUserFilter filter) { - return filter.getUserName(root); - } - }); - filterParameters.add(prepareParameter("user", authorFilter)); + for (VcsLogUserFilter authorFilter : userFilters) { + filterParameters.add(prepareParameter("user", authorFilter.getUserName(root))); + } } - List<VcsLogDateFilter> dateFilters = ContainerUtil.findAll(filters, VcsLogDateFilter.class); if (!dateFilters.isEmpty()) { StringBuilder args = new StringBuilder(); final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); @@ -208,7 +197,6 @@ public class HgLogProvider implements VcsLogProvider { filterParameters.add(args.toString()); } - List<VcsLogTextFilter> textFilters = ContainerUtil.findAll(filters, VcsLogTextFilter.class); if (textFilters.size() > 1) { LOG.warn("Expected only one text filter: " + textFilters); } @@ -217,7 +205,6 @@ public class HgLogProvider implements VcsLogProvider { filterParameters.add(prepareParameter("keyword", textFilter)); } - List<VcsLogStructureFilter> structureFilters = ContainerUtil.findAll(filters, VcsLogStructureFilter.class); if (!structureFilters.isEmpty()) { for (VcsLogStructureFilter filter : structureFilters) { for (VirtualFile file : filter.getFiles(root)) { @@ -249,8 +236,4 @@ public class HgLogProvider implements VcsLogProvider { private static String prepareParameter(String paramName, String value) { return "--" + paramName + "=" + value; // no value escaping needed, because the parameter itself will be quoted by GeneralCommandLine } - - private static <T> String joinFilters(List<T> filters, Function<T, String> toString) { - return StringUtil.join(filters, toString, "\\|"); - } } |