View Javadoc
1   package org.kuali.common.devops.jenkins.archive.model;
2   
3   import static com.google.common.collect.Lists.newArrayList;
4   import static java.lang.Integer.parseInt;
5   
6   import java.nio.file.Path;
7   import java.util.List;
8   
9   import org.kuali.common.core.build.ValidatingBuilder;
10  import org.kuali.common.core.validate.annotation.ExistingDirectory;
11  import org.kuali.common.core.validate.annotation.IdiotProofImmutable;
12  
13  import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
14  import com.google.common.base.StandardSystemProperty;
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 hostname;
22  	@ExistingDirectory
23  	private final Path home;
24  	private final ImmutableList<JenkinsJob> jobs;
25  	private final String archiveDir;
26  	private final int threads;
27  
28  	private JenkinsMaster(Builder builder) {
29  		this.hostname = builder.hostname;
30  		this.home = builder.home;
31  		this.archiveDir = builder.archiveDir;
32  		this.jobs = ImmutableList.copyOf(builder.jobs);
33  		this.threads = builder.threads;
34  	}
35  
36  	public static Builder builder() {
37  		return new Builder();
38  	}
39  
40  	public static class Builder extends ValidatingBuilder<JenkinsMaster> {
41  
42  		private String hostname;
43  		private Path home;
44  		private List<JenkinsJob> jobs = newArrayList();
45  		private String archiveDir = StandardSystemProperty.USER_HOME.value() + "/.s3/archive.kuali.org";
46  		private int threads = parseInt(System.getProperty("jenkins.threads", "5"));
47  
48  		public Builder withArchiveDir(String archiveDir) {
49  			this.archiveDir = archiveDir;
50  			return this;
51  		}
52  
53  		public Builder withHostname(String hostname) {
54  			this.hostname = hostname;
55  			return this;
56  		}
57  
58  		public Builder withHome(Path home) {
59  			this.home = home;
60  			return this;
61  		}
62  
63  		public Builder withJobs(List<JenkinsJob> jobs) {
64  			this.jobs = jobs;
65  			return this;
66  		}
67  
68  		@Override
69  		public JenkinsMaster build() {
70  			return validate(new JenkinsMaster(this));
71  		}
72  	}
73  
74  	public String getHostname() {
75  		return hostname;
76  	}
77  
78  	public List<JenkinsJob> getJobs() {
79  		return jobs;
80  	}
81  
82  	public Path getHome() {
83  		return home;
84  	}
85  
86  	public String getArchiveDir() {
87  		return archiveDir;
88  	}
89  
90  	public int getThreads() {
91  		return threads;
92  	}
93  
94  }