1 package org.kuali.common.devops.jenkins.updates.model;
2
3 import static com.google.common.collect.Maps.newHashMap;
4
5 import java.util.Map;
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.ImmutableMap;
12
13 @IdiotProofImmutable
14 @JsonDeserialize(builder = JenkinsUpdateCenter.Builder.class)
15 public final class JenkinsUpdateCenter {
16
17 private final String id;
18 private final String connectionCheckUrl;
19 private final JenkinsCore core;
20 private final JenkinsSignature signature;
21 private final ImmutableMap<String, JenkinsPlugin> plugins;
22
23 private JenkinsUpdateCenter(Builder builder) {
24 this.id = builder.id;
25 this.connectionCheckUrl = builder.connectionCheckUrl;
26 this.core = builder.core;
27 this.signature = builder.signature;
28 this.plugins = ImmutableMap.copyOf(builder.plugins);
29 }
30
31 public static Builder builder() {
32 return new Builder();
33 }
34
35 public static class Builder extends ValidatingBuilder<JenkinsUpdateCenter> {
36
37 private String id;
38 private String connectionCheckUrl;
39 private JenkinsCore core;
40 private JenkinsSignature signature;
41 private Map<String, JenkinsPlugin> plugins = newHashMap();
42
43 public Builder withId(String id) {
44 this.id = id;
45 return this;
46 }
47
48 public Builder withConnectionCheckUrl(String connectionCheckUrl) {
49 this.connectionCheckUrl = connectionCheckUrl;
50 return this;
51 }
52
53 public Builder withCore(JenkinsCore core) {
54 this.core = core;
55 return this;
56 }
57
58 public Builder withSignature(JenkinsSignature signature) {
59 this.signature = signature;
60 return this;
61 }
62
63 public Builder withPlugins(Map<String, JenkinsPlugin> plugins) {
64 this.plugins = plugins;
65 return this;
66 }
67
68 @Override
69 public JenkinsUpdateCenter build() {
70 return validate(new JenkinsUpdateCenter(this));
71 }
72 }
73
74 public String getId() {
75 return id;
76 }
77
78 public String getConnectionCheckUrl() {
79 return connectionCheckUrl;
80 }
81
82 public JenkinsCore getCore() {
83 return core;
84 }
85
86 public JenkinsSignature getSignature() {
87 return signature;
88 }
89
90 public Map<String, JenkinsPlugin> getPlugins() {
91 return plugins;
92 }
93
94 }