001    package org.kuali.common.deploy.aws.model;
002    
003    import org.kuali.common.util.Assert;
004    
005    public final class SesContext {
006    
007            private final String host;
008            private final SesCredentials credentials;
009            private final boolean debug;
010            private final int port;
011            private final boolean sslEnable;
012            private final boolean auth;
013    
014            public static class Builder {
015    
016                    // Required
017                    private final String host;
018                    private final SesCredentials credentials;
019    
020                    // Optional
021                    private boolean debug = false;
022                    private int port = 465;
023                    private boolean sslEnable = true;
024                    private boolean auth = true;
025    
026                    public Builder(String host, SesCredentials credentials) {
027                            this.host = host;
028                            this.credentials = credentials;
029                    }
030    
031                    public Builder debug(boolean debug) {
032                            this.debug = debug;
033                            return this;
034                    }
035    
036                    public Builder port(int port) {
037                            this.port = port;
038                            return this;
039                    }
040    
041                    public Builder sslEnable(boolean sslEnable) {
042                            this.sslEnable = sslEnable;
043                            return this;
044                    }
045    
046                    public Builder auth(boolean auth) {
047                            this.auth = auth;
048                            return this;
049                    }
050    
051                    public SesContext build() {
052                            Assert.noBlanks(host);
053                            Assert.noNulls(credentials);
054                            Assert.isTrue(port > 0, "port must be a positive integer");
055                            return new SesContext(this);
056                    }
057            }
058    
059            private SesContext(Builder builder) {
060                    this.host = builder.host;
061                    this.credentials = builder.credentials;
062                    this.debug = builder.debug;
063                    this.port = builder.port;
064                    this.sslEnable = builder.sslEnable;
065                    this.auth = builder.auth;
066            }
067    
068            public String getHost() {
069                    return host;
070            }
071    
072            public SesCredentials getCredentials() {
073                    return credentials;
074            }
075    
076            public boolean isDebug() {
077                    return debug;
078            }
079    
080            public int getPort() {
081                    return port;
082            }
083    
084            public boolean isSslEnable() {
085                    return sslEnable;
086            }
087    
088            public boolean isAuth() {
089                    return auth;
090            }
091    
092    }