1 package org.apache.maven.shared.model.fileset.mappers;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class GlobPatternMapper
35 implements FileNameMapper
36 {
37
38
39
40 protected String fromPrefix = null;
41
42
43
44
45 protected String fromPostfix = null;
46
47
48
49
50 protected int prefixLength;
51
52
53
54
55 protected int postfixLength;
56
57
58
59
60 protected String toPrefix = null;
61
62
63
64
65 protected String toPostfix = null;
66
67 private boolean handleDirSep = false;
68
69 private boolean caseSensitive = true;
70
71
72
73
74
75
76 public void setHandleDirSep( boolean handleDirSep )
77 {
78 this.handleDirSep = handleDirSep;
79 }
80
81
82
83
84
85
86
87 public void setCaseSensitive( boolean caseSensitive )
88 {
89 this.caseSensitive = caseSensitive;
90 }
91
92 @Override
93 public void setFrom( String from )
94 {
95 int index = from.lastIndexOf( "*" );
96 if ( index == -1 )
97 {
98 fromPrefix = from;
99 fromPostfix = "";
100 }
101 else
102 {
103 fromPrefix = from.substring( 0, index );
104 fromPostfix = from.substring( index + 1 );
105 }
106 prefixLength = fromPrefix.length();
107 postfixLength = fromPostfix.length();
108 }
109
110 @Override
111 public void setTo( String to )
112 {
113 int index = to.lastIndexOf( "*" );
114 if ( index == -1 )
115 {
116 toPrefix = to;
117 toPostfix = "";
118 }
119 else
120 {
121 toPrefix = to.substring( 0, index );
122 toPostfix = to.substring( index + 1 );
123 }
124 }
125
126 @Override
127 public String mapFileName( String sourceFileName )
128 {
129 if ( fromPrefix == null || !modifyName( sourceFileName ).startsWith( modifyName( fromPrefix ) )
130 || !modifyName( sourceFileName ).endsWith( modifyName( fromPostfix ) ) )
131 {
132 return null;
133 }
134 return toPrefix + extractVariablePart( sourceFileName ) + toPostfix;
135 }
136
137
138
139
140
141
142
143 protected String extractVariablePart( String name )
144 {
145 return name.substring( prefixLength, name.length() - postfixLength );
146 }
147
148
149
150
151
152
153 private String modifyName( String name )
154 {
155 if ( !caseSensitive )
156 {
157 name = name.toLowerCase();
158 }
159 if ( handleDirSep )
160 {
161 if ( name.indexOf( '\\' ) != -1 )
162 {
163 name = name.replace( '\\', '/' );
164 }
165 }
166 return name;
167 }
168 }