1 package org.apache.maven.shared.utils.io;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.StringTokenizer;
26 import java.util.regex.Pattern;
27
28 import javax.annotation.Nonnull;
29
30
31
32
33
34
35
36
37
38 @Deprecated
39 public class MatchPattern
40 {
41 private final String source;
42
43 private final String regexPattern;
44
45 private final Pattern regexPatternRegex;
46
47 private final String separator;
48
49 private final String[] tokenized;
50
51 private MatchPattern( @Nonnull String source, @Nonnull String separator )
52 {
53 regexPattern = SelectorUtils.isRegexPrefixedPattern( source ) ? source.substring(
54 SelectorUtils.REGEX_HANDLER_PREFIX.length(),
55 source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length() ) : null;
56 regexPatternRegex = regexPattern != null ? Pattern.compile( regexPattern ) : null;
57 this.source = SelectorUtils.isAntPrefixedPattern( source ) ? source.substring(
58 SelectorUtils.ANT_HANDLER_PREFIX.length(),
59 source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length() ) : source;
60 this.separator = separator;
61 tokenized = tokenizePathToString( this.source, separator );
62 }
63
64
65
66
67
68
69
70 public boolean matchPath( String str, boolean isCaseSensitive )
71 {
72 if ( regexPattern != null )
73 {
74 return regexPatternRegex.matcher( str ).matches();
75 }
76 else
77 {
78 return SelectorUtils.matchAntPathPattern( this, str, separator, isCaseSensitive );
79 }
80 }
81
82 boolean matchPath( String str, String[] strDirs, boolean isCaseSensitive )
83 {
84 if ( regexPattern != null )
85 {
86 return regexPatternRegex.matcher( str ).matches();
87 }
88 else
89 {
90 return SelectorUtils.matchAntPathPattern( getTokenizedPathString(), strDirs, isCaseSensitive );
91 }
92 }
93
94
95
96
97
98
99 public boolean matchPatternStart( @Nonnull String str, boolean isCaseSensitive )
100 {
101 if ( regexPattern != null )
102 {
103
104
105 return true;
106 }
107 else
108 {
109 String altStr = source.replace( '\\', '/' );
110
111 return SelectorUtils.matchAntPathPatternStart( this, str, File.separator, isCaseSensitive )
112 || SelectorUtils.matchAntPathPatternStart( this, altStr, "/", isCaseSensitive );
113 }
114 }
115
116
117
118
119 public String[] getTokenizedPathString()
120 {
121 return tokenized;
122 }
123
124
125
126
127
128
129 public boolean startsWith( String string )
130 {
131 return source.startsWith( string );
132 }
133
134
135 static String[] tokenizePathToString( @Nonnull String path, @Nonnull String separator )
136 {
137 List<String> ret = new ArrayList<String>();
138 StringTokenizer st = new StringTokenizer( path, separator );
139 while ( st.hasMoreTokens() )
140 {
141 ret.add( st.nextToken() );
142 }
143 return ret.toArray( new String[ret.size()] );
144 }
145
146
147
148
149
150 public static MatchPattern fromString( String source )
151 {
152 return new MatchPattern( source, File.separator );
153 }
154
155 }