cleanup (inspection "Java | Class structure | Utility class is not 'final'")
[idea/community.git] / platform / dvcs-impl / src / com / intellij / dvcs / branch / DvcsBranchUtil.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.dvcs.branch;
3
4 import com.intellij.dvcs.repo.Repository;
5 import com.intellij.openapi.util.text.StringUtil;
6 import com.intellij.openapi.vcs.changes.Change;
7 import com.intellij.openapi.vcs.changes.ContentRevision;
8 import com.intellij.util.containers.ContainerUtil;
9 import org.jetbrains.annotations.NotNull;
10 import org.jetbrains.annotations.Nullable;
11
12 import java.util.Collection;
13 import java.util.List;
14
15 public final class DvcsBranchUtil {
16   @Nullable
17   public static <T extends DvcsBranchInfo> T find(@Nullable final Collection<T> branches,
18                                                   @Nullable Repository repository,
19                                                   @NotNull String sourceBranch) {
20     if (branches == null) return null;
21     return ContainerUtil.find(branches, targetInfo -> repoAndSourceAreEqual(repository, sourceBranch, targetInfo));
22   }
23
24   private static boolean repoAndSourceAreEqual(@Nullable Repository repository,
25                                                @NotNull String sourceBranch,
26                                                @NotNull DvcsBranchInfo targetInfo) {
27     return getPathFor(repository).equals(targetInfo.repoPath) && StringUtil.equals(targetInfo.sourceName, sourceBranch);
28   }
29
30   @NotNull
31   public static String getPathFor(@Nullable Repository repository) {
32     return repository == null ? "" : repository.getRoot().getPath();
33   }
34
35   @NotNull
36   public static List<Change> swapRevisions(@NotNull List<? extends Change> changes) {
37     return ContainerUtil.map(changes, change -> {
38       ContentRevision beforeRevision = change.getBeforeRevision();
39       ContentRevision afterRevision = change.getAfterRevision();
40       if (beforeRevision == null || afterRevision == null) return new Change(afterRevision, beforeRevision);
41       return new Change(afterRevision, beforeRevision, change.getFileStatus());
42     });
43   }
44 }