1 package org.kuali.common.devops.jenkins.scan;
2
3 import static com.google.common.collect.Lists.newArrayList;
4
5 import java.util.List;
6
7 import org.kuali.common.core.build.ValidatingBuilder;
8 import org.kuali.common.core.validate.annotation.IdiotProofImmutable;
9
10 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
11 import com.google.common.collect.ImmutableList;
12
13 @IdiotProofImmutable
14 @JsonDeserialize(builder = Job.Builder.class)
15 public final class Job {
16
17 private final String name;
18 private final ImmutableList<JobExecution> executions;
19
20 private Job(Builder builder) {
21 this.name = builder.name;
22 this.executions = ImmutableList.copyOf(builder.executions);
23 }
24
25 public static Job build(String name, List<JobExecution> executions) {
26 return builder().withName(name).withExecutions(executions).build();
27 }
28
29 public static Job build(String name) {
30 return build(name, ImmutableList.<JobExecution> of());
31 }
32
33 public static Builder builder() {
34 return new Builder();
35 }
36
37 public static class Builder extends ValidatingBuilder<Job> {
38
39 private String name;
40 private List<JobExecution> executions = newArrayList();
41
42 public Builder withName(String name) {
43 this.name = name;
44 return this;
45 }
46
47 public Builder withExecutions(List<JobExecution> executions) {
48 this.executions = executions;
49 return this;
50 }
51
52 @Override
53 public Job build() {
54 return validate(new Job(this));
55 }
56 }
57
58 public String getName() {
59 return name;
60 }
61
62 public List<JobExecution> getExecutions() {
63 return executions;
64 }
65
66 }