View Javadoc
1   package org.kuali.common.devops.jenkins.monitor.model;
2   
3   import static com.google.common.collect.Lists.newArrayList;
4   import static org.kuali.common.util.base.Precondition.checkMax;
5   
6   import java.util.List;
7   
8   import javax.validation.constraints.Min;
9   
10  import org.kuali.common.core.build.ValidatingBuilder;
11  import org.kuali.common.core.validate.annotation.IdiotProofImmutable;
12  
13  import com.fasterxml.jackson.annotation.JsonProperty;
14  import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
15  import com.google.common.collect.ImmutableList;
16  
17  @IdiotProofImmutable
18  @JsonDeserialize(builder = JenkinsMaster.Builder.class)
19  public final class JenkinsMaster {
20  
21  	private final String displayName;
22  
23  	@Min(0)
24  	private final int busyExecutors;
25  
26  	@Min(0)
27  	private final int totalExecutors;
28  
29  	@JsonProperty("computer")
30  	private final ImmutableList<JenkinsNode> nodes;
31  
32  	public static Builder builder() {
33  		return new Builder();
34  	}
35  
36  	private JenkinsMaster(Builder builder) {
37  		this.displayName = builder.displayName;
38  		this.busyExecutors = builder.busyExecutors;
39  		this.totalExecutors = builder.totalExecutors;
40  		this.nodes = ImmutableList.copyOf(builder.nodes);
41  	}
42  
43  	public static class Builder extends ValidatingBuilder<JenkinsMaster> {
44  
45  		private String displayName;
46  		private int busyExecutors;
47  		private int totalExecutors;
48  		@JsonProperty("computer")
49  		private List<JenkinsNode> nodes = newArrayList();
50  
51  		public Builder withNodes(List<JenkinsNode> nodes) {
52  			this.nodes = nodes;
53  			return this;
54  		}
55  
56  		public Builder withDisplayName(String displayName) {
57  			this.displayName = displayName;
58  			return this;
59  		}
60  
61  		public Builder withBusyExecutors(int busyExecutors) {
62  			this.busyExecutors = busyExecutors;
63  			return this;
64  		}
65  
66  		public Builder withTotalExecutors(int totalExecutors) {
67  			this.totalExecutors = totalExecutors;
68  			return this;
69  		}
70  
71  		@Override
72  		public JenkinsMaster build() {
73  			return checkInstance(validate(new JenkinsMaster(this)));
74  		}
75  
76  		private static JenkinsMaster checkInstance(JenkinsMaster instance) {
77  			checkMax(instance.getBusyExecutors(), instance.getTotalExecutors(), "busyExecutors");
78  			return instance;
79  		}
80  	}
81  
82  	public String getDisplayName() {
83  		return displayName;
84  	}
85  
86  	public int getBusyExecutors() {
87  		return busyExecutors;
88  	}
89  
90  	public int getTotalExecutors() {
91  		return totalExecutors;
92  	}
93  
94  	public List<JenkinsNode> getNodes() {
95  		return nodes;
96  	}
97  
98  }