update copyright
[fedora-idea.git] / plugins / svn4idea / src / org / jetbrains / idea / svn / ignore / FileGroupInfo.java
blob61c2faf1472704fe432a9f7c79d58555e029d7ea
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package org.jetbrains.idea.svn.ignore;
18 import com.intellij.openapi.vfs.VirtualFile;
20 import java.util.HashMap;
21 import java.util.HashSet;
22 import java.util.Map;
23 import java.util.Set;
25 public class FileGroupInfo implements FileIterationListener, IgnoreInfoGetter {
26 private String commonExtension;
27 private final Map<VirtualFile, Set<String>> folders;
29 private int fileCount;
30 private boolean sameExtensionCase;
32 public FileGroupInfo() {
33 fileCount = 0;
34 sameExtensionCase = true;
35 folders = new HashMap<VirtualFile, Set<String>>();
38 public void onFileEnabled(final VirtualFile file) {
39 ++ fileCount;
41 if (sameExtensionCase) {
42 final String extension = file.getExtension();
43 if (extension == null) {
44 sameExtensionCase = false;
45 } else if (commonExtension == null) {
46 commonExtension = extension;
47 } else {
48 sameExtensionCase &= commonExtension.equals(extension);
52 final VirtualFile parentVirtualFile = file.getParent();
54 if (parentVirtualFile != null) {
55 Set<String> namesList = folders.get(parentVirtualFile);
56 if (namesList == null) {
57 namesList = new HashSet<String>();
58 folders.put(parentVirtualFile, namesList);
60 namesList.add(file.getName());
64 public boolean oneFileSelected() {
65 return fileCount == 1;
68 public boolean sameExtension() {
69 return sameExtensionCase;
72 public String getExtensionMask() {
73 return "*." + commonExtension;
76 public Map<VirtualFile, Set<String>> getInfo(final boolean useCommonExtension) {
77 if (! useCommonExtension) {
78 return folders;
80 final Map<VirtualFile, Set<String>> result = new HashMap<VirtualFile, Set<String>>(folders.size(), 1);
81 for (final Map.Entry<VirtualFile, Set<String>> entry : folders.entrySet()) {
82 final Set<String> set = new HashSet<String>();
83 set.add(getExtensionMask());
84 result.put(entry.getKey(), set);
86 return result;
89 public String getFileName() {
90 return folders.values().iterator().next().iterator().next();