1 package net.sourceforge.pmd.lang;
2
3 import java.io.File;
4 import java.io.FilenameFilter;
5 import java.util.Collections;
6 import java.util.List;
7 import java.util.Set;
8
9
10
11
12
13
14
15
16 public class LanguageFilenameFilter implements FilenameFilter {
17
18 private final Set<Language> languages;
19
20
21
22
23
24 public LanguageFilenameFilter(Language language) {
25 this(Collections.singleton(language));
26 }
27
28
29
30
31
32 public LanguageFilenameFilter(Set<Language> languages) {
33 this.languages = languages;
34 }
35
36
37
38
39
40 public boolean accept(File dir, String name) {
41
42 int lastDotIndex = name.lastIndexOf('.');
43 if (lastDotIndex < 0) {
44 return false;
45 }
46
47 String extension = name.substring(1 + lastDotIndex).toUpperCase();
48 for (Language language : languages) {
49 for (String ext : language.getExtensions()) {
50 if (extension.equalsIgnoreCase(ext)) {
51 return true;
52 }
53 }
54 }
55 return false;
56 }
57
58 public String toString() {
59 StringBuilder buffer = new StringBuilder("(Extension is one of: ");
60 for (Language language : languages) {
61 List<String> extensions = language.getExtensions();
62 for (int i = 0; i < extensions.size(); i++) {
63 if (i > 0) {
64 buffer.append(", ");
65 }
66 buffer.append(extensions.get(i));
67 }
68 }
69 buffer.append(')');
70 return buffer.toString();
71 }
72 }