cleanup (inspection "Java | Class structure | Utility class is not 'final'")
[idea/community.git] / platform / vcs-impl / src / com / intellij / openapi / vcs / update / UpdateFilesHelper.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.openapi.vcs.update;
3
4 import com.intellij.openapi.util.Couple;
5 import com.intellij.util.Consumer;
6
7 import java.util.List;
8
9 public final class UpdateFilesHelper {
10   private UpdateFilesHelper() {
11   }
12
13   public static void iterateFileGroupFilesDeletedOnServerFirst(final UpdatedFiles updatedFiles, final Callback callback) {
14     final FileGroup changedOnServer = updatedFiles.getGroupById(FileGroup.CHANGED_ON_SERVER_ID);
15     if (changedOnServer != null) {
16       final List<FileGroup> children = changedOnServer.getChildren();
17       for (FileGroup child : children) {
18         if (FileGroup.REMOVED_FROM_REPOSITORY_ID.equals(child.getId())) {
19           iterateGroup(child, callback);
20         }
21       }
22     }
23
24     final List<FileGroup> groups = updatedFiles.getTopLevelGroups();
25     for (FileGroup group : groups) {
26       iterateGroup(group, callback);
27
28       for (FileGroup childGroup : group.getChildren()) {
29         if (! FileGroup.REMOVED_FROM_REPOSITORY_ID.equals(childGroup.getId())) {
30           iterateGroup(childGroup, callback);
31         }
32       }
33     }
34   }
35
36   private static void iterateGroup(final FileGroup group, final Callback callback) {
37     for (String file : group.getFiles()) {
38       callback.onFile(file, group.getId());
39     }
40   }
41
42   public static void iterateFileGroupFiles(final UpdatedFiles updatedFiles, final Callback callback) {
43     final List<FileGroup> groups = updatedFiles.getTopLevelGroups();
44     for (FileGroup group : groups) {
45       iterateGroup(group, callback);
46
47       // for changed on server
48       for (FileGroup childGroup : group.getChildren()) {
49         iterateGroup(childGroup, callback);
50       }
51     }
52   }
53
54   private static void iterateGroup(final FileGroup group, final Consumer<? super Couple<String>> callback) {
55     for (FileGroup.UpdatedFile updatedFile : group.getUpdatedFiles()) {
56       callback.consume(Couple.of(updatedFile.getPath(), updatedFile.getVcsName()));
57     }
58   }
59
60   public static void iterateAffectedFiles(final UpdatedFiles updatedFiles, final Consumer<? super Couple<String>> callback) {
61     final List<FileGroup> groups = updatedFiles.getTopLevelGroups();
62     for (FileGroup group : groups) {
63       iterateGroup(group, callback);
64
65       // for changed on server
66       for (FileGroup childGroup : group.getChildren()) {
67         iterateGroup(childGroup, callback);
68       }
69     }
70   }
71
72   public interface Callback {
73     void onFile(final String filePath, final String groupId);
74   }
75 }