View Javadoc
1   package org.kuali.common.devops.model;
2   
3   import static com.google.common.base.Optional.absent;
4   
5   import java.util.Comparator;
6   
7   import org.kuali.common.core.build.ValidatingBuilder;
8   import org.kuali.common.core.validate.annotation.IdiotProofImmutable;
9   import org.kuali.common.devops.metadata.model.EC2Instance;
10  import org.kuali.common.devops.metadata.model.Memory;
11  
12  import com.google.common.base.Optional;
13  
14  @IdiotProofImmutable
15  public final class Environment implements Comparable<Environment> {
16  
17  	private static final Comparator<String> COMPARATOR = new EnvStringComparator();
18  
19  	private final String name;
20  	private final String fqdn;
21  	private final Optional<Integer> httpStatus;
22  	private final EC2Instance server;
23  	private final Optional<String> java;
24  	private final Optional<Tomcat> tomcat;
25  	private final Optional<Application> application;
26  	private final Optional<Memory> memory;
27  	private final Status status;
28  
29  	@Override
30  	public int compareTo(Environment other) {
31  		return COMPARATOR.compare(name, other.getName());
32  	}
33  
34  	private Environment(Builder builder) {
35  		this.name = builder.name;
36  		this.fqdn = builder.fqdn;
37  		this.server = builder.server;
38  		this.tomcat = builder.tomcat;
39  		this.java = builder.java;
40  		this.application = builder.application;
41  		this.status = builder.status;
42  		this.memory = builder.memory;
43  		this.httpStatus = builder.httpStatus;
44  	}
45  
46  	public static Environment create(String name, String fqdn, EC2Instance server) {
47  		return builder().name(name).fqdn(fqdn).server(server).build();
48  	}
49  
50  	public static Builder builder() {
51  		return new Builder();
52  	}
53  
54  	public static class Builder extends ValidatingBuilder<Environment> implements Comparable<Environment.Builder> {
55  
56  		private String name;
57  		private String fqdn;
58  		private Optional<Integer> httpStatus;
59  		private EC2Instance server;
60  		private Optional<Tomcat> tomcat = absent();
61  		private Optional<String> java = absent();
62  		private Optional<Application> application = absent();
63  		private Status status = Status.UNKNOWN;
64  		private Optional<Memory> memory = absent();
65  
66  		@Override
67  		public int compareTo(Environment.Builder other) {
68  			return COMPARATOR.compare(name, other.getName());
69  		}
70  
71  		public Builder withHttpStatus(Optional<Integer> httpStatus) {
72  			this.httpStatus = httpStatus;
73  			return this;
74  		}
75  
76  		public Builder memory(Optional<Memory> memory) {
77  			this.memory = memory;
78  			return this;
79  		}
80  
81  		public Builder memory(Memory memory) {
82  			return memory(Optional.of(memory));
83  		}
84  
85  		public Builder status(String status) {
86  			this.name = status;
87  			return this;
88  		}
89  
90  		public Builder name(String name) {
91  			this.name = name;
92  			return this;
93  		}
94  
95  		public Builder fqdn(String fqdn) {
96  			this.fqdn = fqdn;
97  			return this;
98  		}
99  
100 		public Builder server(EC2Instance server) {
101 			this.server = server;
102 			return this;
103 		}
104 
105 		public Builder tomcat(Optional<Tomcat> tomcat) {
106 			this.tomcat = tomcat;
107 			return this;
108 		}
109 
110 		public Builder tomcat(Tomcat tomcat) {
111 			return tomcat(Optional.of(tomcat));
112 		}
113 
114 		public Builder java(String java) {
115 			return java(Optional.of(java));
116 		}
117 
118 		public Builder java(Optional<String> java) {
119 			this.java = java;
120 			return this;
121 		}
122 
123 		public Builder application(Optional<Application> application) {
124 			this.application = application;
125 			return this;
126 		}
127 
128 		@Override
129 		public Environment build() {
130 			return validate(new Environment(this));
131 		}
132 
133 		public String getName() {
134 			return name;
135 		}
136 
137 		public void setName(String name) {
138 			this.name = name;
139 		}
140 
141 		public String getFqdn() {
142 			return fqdn;
143 		}
144 
145 		public void setFqdn(String fqdn) {
146 			this.fqdn = fqdn;
147 		}
148 
149 		public EC2Instance getServer() {
150 			return server;
151 		}
152 
153 		public void setServer(EC2Instance server) {
154 			this.server = server;
155 		}
156 
157 		public Optional<String> getJava() {
158 			return java;
159 		}
160 
161 		public void setJava(Optional<String> java) {
162 			this.java = java;
163 		}
164 
165 		public Optional<Application> getApplication() {
166 			return application;
167 		}
168 
169 		public void setApplication(Optional<Application> application) {
170 			this.application = application;
171 		}
172 
173 		public Optional<Tomcat> getTomcat() {
174 			return tomcat;
175 		}
176 
177 		public void setTomcat(Optional<Tomcat> tomcat) {
178 			this.tomcat = tomcat;
179 		}
180 
181 		public Status getStatus() {
182 			return status;
183 		}
184 
185 		public void setStatus(Status status) {
186 			this.status = status;
187 		}
188 
189 	}
190 
191 	public String getName() {
192 		return name;
193 	}
194 
195 	public String getFqdn() {
196 		return fqdn;
197 	}
198 
199 	public EC2Instance getServer() {
200 		return server;
201 	}
202 
203 	public Optional<Tomcat> getTomcat() {
204 		return tomcat;
205 	}
206 
207 	public Optional<String> getJava() {
208 		return java;
209 	}
210 
211 	public Optional<Application> getApplication() {
212 		return application;
213 	}
214 
215 	public Status getStatus() {
216 		return status;
217 	}
218 
219 	public Optional<Memory> getMemory() {
220 		return memory;
221 	}
222 
223 	public Optional<Integer> getHttpStatus() {
224 		return httpStatus;
225 	}
226 
227 }