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