jsr-299 libs and facets
[idea/community.git] / platform / vcs-impl / src / com / intellij / openapi / vcs / changes / DirtBuilder.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.vcs.changes;
17
18 import com.intellij.openapi.vcs.FilePathImpl;
19 import com.intellij.openapi.vcs.VcsRoot;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 public class DirtBuilder implements DirtBuilderReader {
25   private final VcsGuess myGuess;
26
27   private final List<FilePathUnderVcs> myFiles;
28   private final List<FilePathUnderVcs> myDirs;
29   private boolean myEverythingDirty;
30
31   public DirtBuilder(final VcsGuess guess) {
32     myGuess = guess;
33     myDirs = new ArrayList<FilePathUnderVcs>();
34     myFiles = new ArrayList<FilePathUnderVcs>();
35     myEverythingDirty = false;
36   }
37
38   public DirtBuilder(final DirtBuilder builder) {
39     myGuess = builder.myGuess;
40     myDirs = new ArrayList<FilePathUnderVcs>(builder.myDirs);
41     myFiles = new ArrayList<FilePathUnderVcs>(builder.myFiles);
42     myEverythingDirty = builder.myEverythingDirty;
43   }
44
45   public void reset() {
46     myFiles.clear();
47     myDirs.clear();
48     myEverythingDirty = false;
49   }
50
51   public void everythingDirty() {
52     myEverythingDirty = true;
53   }
54
55   public void addDirtyFile(final VcsRoot root) {
56     myFiles.add(new FilePathUnderVcs(new FilePathImpl(root.path), root.vcs));
57   }
58
59   public void addDirtyDirRecursively(final VcsRoot root) {
60     myDirs.add(new FilePathUnderVcs(new FilePathImpl(root.path), root.vcs));
61   }
62
63   public void addDirtyFile(final FilePathUnderVcs root) {
64     myFiles.add(root);
65   }
66
67   public void addDirtyDirRecursively(final FilePathUnderVcs root) {
68     myDirs.add(root);
69   }
70
71   public boolean isEverythingDirty() {
72     return myEverythingDirty;
73   }
74
75   public List<FilePathUnderVcs> getFilesForVcs() {
76     return myFiles;
77   }
78
79   public List<FilePathUnderVcs> getDirsForVcs() {
80     return myDirs;
81   }
82
83   public boolean isEmpty() {
84     return myFiles.isEmpty() && myDirs.isEmpty();
85   }
86 }