1 package org.codehaus.plexus.util;
2
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.List;
6
7
8
9
10
11
12 public class MatchPatterns {
13 private final MatchPattern[] patterns;
14
15 private MatchPatterns(MatchPattern[] patterns) {
16 this.patterns = patterns;
17 }
18
19
20
21
22
23 public List<String> getSources() {
24 List<String> sources = new ArrayList<>();
25 for (MatchPattern pattern : patterns) {
26 sources.add(pattern.getSource());
27 }
28 return sources;
29 }
30
31
32
33
34
35
36
37
38
39
40 public boolean matches(String name, boolean isCaseSensitive) {
41 String[] tokenized = MatchPattern.tokenizePathToString(name, File.separator);
42 return matches(name, tokenized, isCaseSensitive);
43 }
44
45 public boolean matches(String name, String[] tokenizedName, boolean isCaseSensitive) {
46 char[][] tokenizedNameChar = new char[tokenizedName.length][];
47 for (int i = 0; i < tokenizedName.length; i++) {
48 tokenizedNameChar[i] = tokenizedName[i].toCharArray();
49 }
50 return matches(name, tokenizedNameChar, isCaseSensitive);
51 }
52
53 public boolean matches(String name, char[][] tokenizedNameChar, boolean isCaseSensitive) {
54 for (MatchPattern pattern : patterns) {
55 if (pattern.matchPath(name, tokenizedNameChar, isCaseSensitive)) {
56 return true;
57 }
58 }
59 return false;
60 }
61
62 public boolean matchesPatternStart(String name, boolean isCaseSensitive) {
63 for (MatchPattern includesPattern : patterns) {
64 if (includesPattern.matchPatternStart(name, isCaseSensitive)) {
65 return true;
66 }
67 }
68 return false;
69 }
70
71 public static MatchPatterns from(String... sources) {
72 final int length = sources.length;
73 MatchPattern[] result = new MatchPattern[length];
74 for (int i = 0; i < length; i++) {
75 result[i] = MatchPattern.fromString(sources[i]);
76 }
77 return new MatchPatterns(result);
78 }
79
80 public static MatchPatterns from(Iterable<String> strings) {
81 return new MatchPatterns(getMatchPatterns(strings));
82 }
83
84 private static MatchPattern[] getMatchPatterns(Iterable<String> items) {
85 List<MatchPattern> result = new ArrayList<MatchPattern>();
86 for (String string : items) {
87 result.add(MatchPattern.fromString(string));
88 }
89 return result.toArray(new MatchPattern[0]);
90 }
91 }