001    package org.kuali.common.deploy.dns.model;
002    
003    import org.kuali.common.util.Assert;
004    
005    public final class DnsContext {
006    
007            private final String domain;
008            private final String prefix;
009            private final String subdomain;
010            private final String hostname;
011    
012            public String getDomain() {
013                    return domain;
014            }
015    
016            public String getPrefix() {
017                    return prefix;
018            }
019    
020            public String getSubdomain() {
021                    return subdomain;
022            }
023    
024            public String getHostname() {
025                    return hostname;
026            }
027    
028            public static class Builder {
029    
030                    // Required
031                    private final String prefix;
032                    private final String subdomain;
033                    private final String domain;
034    
035                    // Defaults to prefix + subdomain + domain if not provided
036                    private String hostname;
037    
038                    public Builder(String prefix, String subdomain, String domain) {
039                            this.prefix = prefix;
040                            this.subdomain = subdomain;
041                            this.domain = domain;
042                    }
043    
044                    public Builder hostname(String hostname) {
045                            this.hostname = hostname;
046                            return this;
047                    }
048    
049                    public DnsContext build() {
050                            Assert.noBlanks(prefix, subdomain, domain);
051                            if (hostname == null) {
052                                    this.hostname = DnsUtils.getHostname(prefix, subdomain, domain);
053                            } else {
054                                    Assert.noBlanks(hostname);
055                            }
056                            return new DnsContext(this);
057                    }
058    
059            }
060    
061            private DnsContext(Builder builder) {
062                    this.domain = builder.domain;
063                    this.hostname = builder.hostname;
064                    this.prefix = builder.prefix;
065                    this.subdomain = builder.subdomain;
066            }
067    
068    }