Updating versions of project dependencies: rkernelVersion->master.130
[idea/community.git] / java / idea-ui / src / com / intellij / ide / util / projectWizard / importSources / JavaModuleSourceRoot.java
1 /*
2  * Copyright 2000-2011 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.ide.util.projectWizard.importSources;
17
18 import com.intellij.openapi.util.NlsSafe;
19 import com.intellij.openapi.util.text.StringUtil;
20 import com.intellij.util.containers.ContainerUtil;
21 import org.jetbrains.annotations.Nls;
22 import org.jetbrains.annotations.NotNull;
23 import org.jetbrains.annotations.Nullable;
24
25 import java.io.File;
26 import java.util.ArrayList;
27 import java.util.List;
28
29 public class JavaModuleSourceRoot extends DetectedSourceRoot {
30   private final List<@Nls(capitalization = Nls.Capitalization.Sentence) String> myLanguages;
31   private final boolean myWithModuleInfoFile; // module-info.java
32
33   public JavaModuleSourceRoot(File directory, @Nullable String packagePrefix, @Nls(capitalization = Nls.Capitalization.Sentence) @NotNull String language) {
34     super(directory, packagePrefix);
35     myLanguages = new ArrayList<>();
36     myLanguages.add(language);
37     myWithModuleInfoFile = false;
38   }
39
40   public JavaModuleSourceRoot(File directory, @Nls(capitalization = Nls.Capitalization.Sentence) @NotNull String language, boolean withModuleInfoFile) {
41     super(directory, "");
42     myLanguages = new ArrayList<>();
43     myLanguages.add(language);
44     myWithModuleInfoFile = withModuleInfoFile;
45   }
46
47   private JavaModuleSourceRoot(File directory, String packagePrefix, List<@Nls(capitalization = Nls.Capitalization.Sentence) String> languages) {
48     super(directory, packagePrefix);
49     myLanguages = languages;
50     myWithModuleInfoFile = false;
51   }
52
53   @NotNull
54   @Override
55   public @Nls(capitalization = Nls.Capitalization.Sentence) String getRootTypeName() {
56     @NlsSafe String result = StringUtil.join(myLanguages, ", ");
57     return result;
58   }
59
60   @Override
61   public DetectedProjectRoot combineWith(@NotNull DetectedProjectRoot root) {
62     if (root instanceof JavaModuleSourceRoot) {
63       return combineWith((JavaModuleSourceRoot)root);
64     }
65     return null;
66   }
67
68   @NotNull
69   public JavaModuleSourceRoot combineWith(@NotNull JavaModuleSourceRoot root) {
70     List<@Nls(capitalization = Nls.Capitalization.Sentence) String> union = new ArrayList<>(myLanguages.size() + root.myLanguages.size());
71     union.addAll(myLanguages);
72     union.addAll(root.myLanguages);
73     ContainerUtil.removeDuplicates(union);
74     return new JavaModuleSourceRoot(getDirectory(), getPackagePrefix(), union);
75   }
76
77   public boolean isWithModuleInfoFile() {
78     return myWithModuleInfoFile;
79   }
80 }