1
2
3
4
5
6
7
8
9
10 package org.jenkinsci.plugins.darcs;
11
12 import hudson.model.User;
13 import hudson.scm.ChangeLogSet;
14 import hudson.scm.EditType;
15
16 import java.util.ArrayList;
17 import java.util.Arrays;
18 import java.util.List;
19
20 import org.kohsuke.stapler.export.Exported;
21
22
23
24
25
26
27
28
29
30 public class DarcsChangeSet extends ChangeLogSet.Entry {
31
32
33
34
35 private String author;
36
37
38
39 private String date;
40
41
42
43 private String localDate;
44
45
46
47 private boolean inverted;
48
49
50
51 private String hash;
52
53
54
55 private String name;
56
57
58
59 private String comment;
60
61
62
63 private List<String> added = new ArrayList<String>();
64
65
66
67 private List<String> deleted = new ArrayList<String>();
68
69
70
71 private List<String> modified = new ArrayList<String>();
72
73
74
75
76
77
78
79
80 @Exported
81 public User getAuthor() {
82 return User.get(getPlainAuthor());
83 }
84
85
86
87
88
89
90 public String getPlainAuthor() {
91 return author;
92 }
93
94
95
96
97
98
99 @Exported
100 public String getComment() {
101 return comment;
102 }
103
104
105
106
107
108
109 @Exported
110 public String getDate() {
111 return date;
112 }
113
114
115
116
117
118
119 @Exported
120 public String getHash() {
121 return hash;
122 }
123
124
125
126
127
128
129 @Exported
130 public boolean isInverted() {
131 return inverted;
132 }
133
134
135
136
137
138
139 @Exported
140 public String getLocalDate() {
141 return localDate;
142 }
143
144
145
146
147
148
149 @Exported
150 public String getName() {
151 return name;
152 }
153
154
155
156
157
158
159
160
161 @Override
162 public String getMsg() {
163 return getComment();
164 }
165
166
167
168
169
170
171
172
173 public void setAuthor(final String anAuthor) {
174 author = anAuthor;
175 }
176
177
178
179
180
181
182
183
184 public void setComment(final String aComment) {
185 comment = aComment;
186 }
187
188
189
190
191
192
193
194
195 public void setDate(final String aDate) {
196 date = aDate;
197 }
198
199
200
201
202
203
204
205
206 public void setHash(final String aHash) {
207 hash = aHash;
208 }
209
210
211
212
213
214
215
216
217 public void setInverted(final boolean isInverted) {
218 inverted = isInverted;
219 }
220
221
222
223
224
225
226
227
228 public void setLocalDate(final String aLocalDate) {
229 localDate = aLocalDate;
230 }
231
232
233
234
235
236
237
238
239 public void setName(final String aName) {
240 name = aName;
241 }
242
243
244
245
246
247
248 @Override
249 public List<String> getAffectedPaths() {
250 return new ArrayList<String>() {
251 {
252 addAll(added);
253 addAll(deleted);
254 addAll(modified);
255 }
256 };
257 }
258
259
260
261
262
263
264 @Exported
265 public List<String> getAddedPaths() {
266 return added;
267 }
268
269
270
271
272
273
274 @Exported
275 public List<String> getDeletedPaths() {
276 return deleted;
277 }
278
279
280
281
282
283
284 @Exported
285 public List<String> getModifiedPaths() {
286 return modified;
287 }
288
289
290
291
292
293
294
295 public List<String> getPaths(final EditType kind) {
296 if (kind == EditType.ADD) {
297 return getAddedPaths();
298 }
299
300 if (kind == EditType.EDIT) {
301 return getModifiedPaths();
302 }
303
304 if (kind == EditType.DELETE) {
305 return getDeletedPaths();
306 }
307
308 return null;
309 }
310
311 @Override
312 protected void setParent(final ChangeLogSet parent) {
313 super.setParent(parent);
314 }
315
316
317
318
319
320
321 public List<EditType> getEditTypes() {
322 return Arrays.asList(EditType.ADD, EditType.EDIT, EditType.DELETE);
323 }
324
325 @Override
326 public String toString() {
327 return "DarcsChangeSet{"
328 + "hash=" + hash
329 + ", name=" + name
330 + ", author=" + author
331 + ", date=" + date
332 + ", localDate=" + localDate
333 + ", inverted=" + inverted
334 + ", added=" + added
335 + ", modified=" + modified
336 + ", deleted=" + deleted
337 + '}';
338 }
339
340 @Override
341 public int hashCode() {
342 return Arrays.hashCode(new Object[]{
343 added,
344 author,
345 comment,
346 date,
347 deleted,
348 hash,
349 inverted,
350 localDate,
351 modified,
352 name,
353 });
354 }
355
356 @Override
357 public boolean equals(final Object obj) {
358 if (!(obj instanceof DarcsChangeSet)) {
359 return false;
360 }
361
362 final DarcsChangeSet other = (DarcsChangeSet) obj;
363
364 if (!equal(added, other.added)) {
365 return false;
366 }
367
368 if (!equal(author, other.author)) {
369 return false;
370 }
371
372 if (!equal(comment, other.comment)) {
373 return false;
374 }
375
376 if (!equal(date, other.date)) {
377 return false;
378 }
379
380 if (!equal(deleted, other.deleted)) {
381 return false;
382 }
383
384 if (!equal(hash, other.hash)) {
385 return false;
386 }
387
388 if (!equal(localDate, other.localDate)) {
389 return false;
390 }
391
392 if (!equal(modified, other.modified)) {
393 return false;
394 }
395
396 if (!equal(inverted, other.inverted)) {
397 return false;
398 }
399
400 if (!equal(name, other.name)) {
401 return false;
402 }
403
404 return true;
405 }
406
407
408
409
410
411
412
413
414 private static boolean equal(final Object a, final Object b) {
415 return a == b || (a != null && a.equals(b));
416 }
417
418 }