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
24 public List<String> getSources() {
25 List<String> sources = new ArrayList<>();
26 for (MatchPattern pattern : patterns) {
27 sources.add(pattern.getSource());
28 }
29 return sources;
30 }
31
32
33
34
35
36
37
38
39
40
41 public boolean matches(String name, boolean isCaseSensitive) {
42 String[] tokenized = MatchPattern.tokenizePathToString(name, File.separator);
43 return matches(name, tokenized, isCaseSensitive);
44 }
45
46 public boolean matches(String name, String[] tokenizedName, boolean isCaseSensitive) {
47 char[][] tokenizedNameChar = new char[tokenizedName.length][];
48 for (int i = 0; i < tokenizedName.length; i++) {
49 tokenizedNameChar[i] = tokenizedName[i].toCharArray();
50 }
51 return matches(name, tokenizedNameChar, isCaseSensitive);
52 }
53
54 public boolean matches(String name, char[][] tokenizedNameChar, boolean isCaseSensitive) {
55 for (MatchPattern pattern : patterns) {
56 if (pattern.matchPath(name, tokenizedNameChar, isCaseSensitive)) {
57 return true;
58 }
59 }
60 return false;
61 }
62
63 public boolean matchesPatternStart(String name, boolean isCaseSensitive) {
64 for (MatchPattern includesPattern : patterns) {
65 if (includesPattern.matchPatternStart(name, isCaseSensitive)) {
66 return true;
67 }
68 }
69 return false;
70 }
71
72 public static MatchPatterns from(String... sources) {
73 final int length = sources.length;
74 MatchPattern[] result = new MatchPattern[length];
75 for (int i = 0; i < length; i++) {
76 result[i] = MatchPattern.fromString(sources[i]);
77 }
78 return new MatchPatterns(result);
79 }
80
81 public static MatchPatterns from(Iterable<String> strings) {
82 return new MatchPatterns(getMatchPatterns(strings));
83 }
84
85 private static MatchPattern[] getMatchPatterns(Iterable<String> items) {
86 List<MatchPattern> result = new ArrayList<MatchPattern>();
87 for (String string : items) {
88 result.add(MatchPattern.fromString(string));
89 }
90 return result.toArray(new MatchPattern[0]);
91 }
92 }