View Javadoc
1   package org.kuali.common.devops.jenkins.upgrade.model;
2   
3   import static com.google.common.base.Preconditions.checkNotNull;
4   import static com.google.common.collect.Lists.newArrayList;
5   import static org.kuali.common.devops.jenkins.upgrade.Jenkins.buildJobs;
6   import static org.kuali.common.util.base.Exceptions.illegalState;
7   import static org.kuali.common.util.base.Precondition.checkNotBlank;
8   
9   import java.io.IOException;
10  import java.util.List;
11  
12  import org.kuali.common.core.io.UnixFile;
13  
14  import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
15  import com.google.common.collect.ImmutableList;
16  
17  @JsonDeserialize(builder = JenkinsSummary.Builder.class)
18  public final class JenkinsSummary {
19  
20  	private final UnixFile basedir;
21  	private final ImmutableList<JobSummary> jobs;
22  	private final String timeZoneId;
23  
24  	private JenkinsSummary(Builder builder) {
25  		this.basedir = builder.basedir;
26  		this.timeZoneId = builder.timeZoneId;
27  		this.jobs = ImmutableList.copyOf(builder.jobs);
28  	}
29  
30  	public static JenkinsSummary build(UnixFile basedir, String timeZoneId, long startedBefore) {
31  		try {
32  			List<JobSummary> jobs = buildJobs(basedir, timeZoneId, startedBefore);
33  			return builder().withBasedir(basedir).withJobs(jobs).withTimeZoneId(timeZoneId).build();
34  		} catch (IOException e) {
35  			throw illegalState(e);
36  		}
37  	}
38  
39  	public static Builder builder() {
40  		return new Builder();
41  	}
42  
43  	public static class Builder implements org.apache.commons.lang3.builder.Builder<JenkinsSummary> {
44  
45  		private UnixFile basedir;
46  		private List<JobSummary> jobs = newArrayList();
47  		private String timeZoneId;
48  
49  		public Builder withTimeZoneId(String timeZoneId) {
50  			this.timeZoneId = timeZoneId;
51  			return this;
52  		}
53  
54  		public Builder withBasedir(UnixFile basedir) {
55  			this.basedir = basedir;
56  			return this;
57  		}
58  
59  		public Builder withJobs(List<JobSummary> jobs) {
60  			this.jobs = jobs;
61  			return this;
62  		}
63  
64  		@Override
65  		public JenkinsSummary build() {
66  			return validate(new JenkinsSummary(this));
67  		}
68  
69  		private static JenkinsSummary validate(JenkinsSummary instance) {
70  			checkNotNull(instance.basedir, "basedir");
71  			checkNotNull(instance.jobs, "jobs");
72  			checkNotBlank(instance.timeZoneId, "timeZoneId");
73  			return instance;
74  		}
75  	}
76  
77  	public UnixFile getBasedir() {
78  		return basedir;
79  	}
80  
81  	public List<JobSummary> getJobs() {
82  		return jobs;
83  	}
84  
85  	public String getTimeZoneId() {
86  		return timeZoneId;
87  	}
88  
89  }