1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.eluder.coveralls.maven.plugin.validation;
25
26 import org.apache.commons.lang3.StringUtils;
27 import org.eluder.coveralls.maven.plugin.domain.Job;
28 import org.eluder.coveralls.maven.plugin.validation.ValidationError.Level;
29
30 import java.util.Collections;
31 import java.util.List;
32
33 public class JobValidator {
34
35 private final Job job;
36
37 public JobValidator(final Job job) {
38 if (job == null) {
39 throw new IllegalArgumentException("job must be defined");
40 }
41 this.job = job;
42 }
43
44 public ValidationErrors validate() {
45 ValidationErrors errors = new ValidationErrors();
46 errors.addAll(repoTokenOrTravis());
47 errors.addAll(git());
48 return errors;
49 }
50
51 private List<ValidationError> repoTokenOrTravis() {
52 if (hasValue(job.getRepoToken())) {
53 return Collections.emptyList();
54 }
55 if (hasValue(job.getServiceName()) && hasValue(job.getServiceJobId())) {
56 return Collections.emptyList();
57 }
58 Level level = (job.isDryRun() ? Level.WARN : Level.ERROR);
59 String message = "Either repository token or service with job id must be defined";
60 return Collections.singletonList(new ValidationError(level, message));
61 }
62
63 private List<ValidationError> git() {
64 if (job.getGit() == null) {
65 return Collections.emptyList();
66 }
67 if (hasValue(job.getGit().getHead().getId())) {
68 return Collections.emptyList();
69 }
70 return Collections.singletonList(new ValidationError(Level.ERROR, "Commit id for HEAD must be defined"));
71 }
72
73 private boolean hasValue(final String value) {
74 return StringUtils.isNotBlank(value);
75 }
76 }