1
2
3
4
5 package org.apache.maven.api.model;
6
7 import java.io.Serializable;
8 import java.util.ArrayList;
9 import java.util.Collection;
10 import java.util.Collections;
11 import java.util.HashMap;
12 import java.util.List;
13 import java.util.Map;
14 import java.util.Objects;
15 import java.util.Optional;
16 import java.util.Set;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
19 import org.apache.maven.api.annotations.Experimental;
20 import org.apache.maven.api.annotations.Generated;
21 import org.apache.maven.api.annotations.Immutable;
22 import org.apache.maven.api.annotations.Nonnull;
23 import org.apache.maven.api.annotations.NotThreadSafe;
24 import org.apache.maven.api.annotations.ThreadSafe;
25
26
27
28
29 @Experimental
30 @Generated @ThreadSafe @Immutable
31 public class FileSet
32 extends PatternSet
33 implements Serializable, InputLocationTracker
34 {
35
36
37
38
39 final String directory;
40
41
42
43
44
45 protected FileSet(Builder builder) {
46 super(builder);
47 this.directory = builder.directory != null ? builder.directory : (builder.base != null ? builder.base.directory : null);
48 }
49
50
51
52
53
54
55
56 public String getDirectory() {
57 return this.directory;
58 }
59
60
61
62
63
64
65 @Nonnull
66 public Builder with() {
67 return newBuilder(this);
68 }
69
70
71
72
73
74
75 @Nonnull
76 public FileSet withIncludes(Collection<String> includes) {
77 return newBuilder(this, true).includes(includes).build();
78 }
79
80
81
82
83
84
85 @Nonnull
86 public FileSet withExcludes(Collection<String> excludes) {
87 return newBuilder(this, true).excludes(excludes).build();
88 }
89
90
91
92
93
94
95 @Nonnull
96 public FileSet withDirectory(String directory) {
97 return newBuilder(this, true).directory(directory).build();
98 }
99
100
101
102
103
104
105
106
107 @Nonnull
108 public static FileSet newInstance() {
109 return newInstance(true);
110 }
111
112
113
114
115
116
117
118
119 @Nonnull
120 public static FileSet newInstance(boolean withDefaults) {
121 return newBuilder(withDefaults).build();
122 }
123
124
125
126
127
128
129
130
131 @Nonnull
132 public static Builder newBuilder() {
133 return newBuilder(true);
134 }
135
136
137
138
139
140
141
142 @Nonnull
143 public static Builder newBuilder(boolean withDefaults) {
144 return new Builder(withDefaults);
145 }
146
147
148
149
150
151
152
153
154 @Nonnull
155 public static Builder newBuilder(FileSet from) {
156 return newBuilder(from, false);
157 }
158
159
160
161
162
163
164
165
166 @Nonnull
167 public static Builder newBuilder(FileSet from, boolean forceCopy) {
168 return new Builder(from, forceCopy);
169 }
170
171
172
173
174
175
176 @NotThreadSafe
177 public static class Builder
178 extends PatternSet.Builder
179 {
180 FileSet base;
181 String directory;
182
183 protected Builder(boolean withDefaults) {
184 super(withDefaults);
185 if (withDefaults) {
186 }
187 }
188
189 protected Builder(FileSet base, boolean forceCopy) {
190 super(base, forceCopy);
191 if (forceCopy) {
192 this.directory = base.directory;
193 this.locations = base.locations;
194 this.importedFrom = base.importedFrom;
195 } else {
196 this.base = base;
197 }
198 }
199
200 @Nonnull
201 public Builder includes(Collection<String> includes) {
202 this.includes = includes;
203 return this;
204 }
205
206 @Nonnull
207 public Builder excludes(Collection<String> excludes) {
208 this.excludes = excludes;
209 return this;
210 }
211
212 @Nonnull
213 public Builder directory(String directory) {
214 this.directory = directory;
215 return this;
216 }
217
218
219 @Nonnull
220 public Builder location(Object key, InputLocation location) {
221 if (location != null) {
222 if (!(this.locations instanceof HashMap)) {
223 this.locations = this.locations != null ? new HashMap<>(this.locations) : new HashMap<>();
224 }
225 this.locations.put(key, location);
226 }
227 return this;
228 }
229
230 @Nonnull
231 public Builder importedFrom(InputLocation importedFrom) {
232 this.importedFrom = importedFrom;
233 return this;
234 }
235
236 @Nonnull
237 public FileSet build() {
238
239 if (base != null
240 && (includes == null || includes == base.includes)
241 && (excludes == null || excludes == base.excludes)
242 && (directory == null || directory == base.directory)
243 ) {
244 return base;
245 }
246 return new FileSet(this);
247 }
248
249 }
250
251
252
253
254
255
256 public String toString() {
257 return "FileSet {directory: " + getDirectory() + ", " + super.toString() + "}";
258 }
259
260
261 }