Merge branch 'master' of git.labs.intellij.net:idea/community
[idea/community.git] / plugins / hg4idea / src / org / zmlx / hg4idea / command / HgAddCommand.java
1 // Copyright 2008-2010 Victor Iacoban
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software distributed under
10 // the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
11 // either express or implied. See the License for the specific language governing permissions and
12 // limitations under the License.
13 package org.zmlx.hg4idea.command;
14
15 import com.intellij.openapi.project.Project;
16 import com.intellij.openapi.vfs.VirtualFile;
17 import org.jetbrains.annotations.NotNull;
18 import org.zmlx.hg4idea.HgFile;
19 import org.zmlx.hg4idea.HgUtil;
20
21 import java.util.Arrays;
22 import java.util.Collection;
23 import java.util.List;
24 import java.util.Map;
25
26 /**
27  * A wrapper for 'hg add' command.
28  */
29 public class HgAddCommand {
30
31   private final Project myProject;
32
33   public HgAddCommand(Project project) {
34     myProject = project;
35   }
36
37   /**
38    * Adds given files to their Mercurial repositories.
39    * @param hgFiles files to be added.
40    */
41   public void execute(@NotNull HgFile... hgFiles) {
42     execute(Arrays.asList(hgFiles));
43   }
44
45   /**
46    * Adds given files to their Mercurial repositories.
47    * @param hgFiles files to be added.
48    */
49   public void execute(@NotNull Collection<HgFile> hgFiles) {
50     for(Map.Entry<VirtualFile, List<String>> entry : HgUtil.getRelativePathsByRepository(hgFiles).entrySet()) {
51       HgCommandService.getInstance(myProject).execute(entry.getKey(), "add", entry.getValue());
52     }
53   }
54
55 }