EmailAccount.java
package org.ferris.resiste.console.email;
import java.util.Properties;
import javax.enterprise.inject.Vetoed;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* This class is a data model object representing email account data.
*
* @author Michael Remijan mjremijan@yahoo.com @mjremijan
*/
@Vetoed
public class EmailAccount {
@NotNull(message = "{EmailAccount.host.NotNull.message}")
@Size(message = "{EmailAccount.host.Size.message}", min = 4, max = 54)
private String host;
@NotNull(message = "{EmailAccount.port.NotNull.message}")
@Min(message = "{EmailAccount.port.Min.message}", value = 1)
@Max(message = "{EmailAccount.port.Max.message}", value = 65535)
private Integer port;
@NotNull(message = "{EmailAccount.sslEnabled.NotNull.message}")
private Boolean sslEnabled;
@NotNull(message = "{EmailAccount.username.NotNull.message}")
@Size(message = "{EmailAccount.username.Size.message}", min = 5, max = 35)
private String username;
@NotNull(message = "{EmailAccount.password.NotNull.message}")
@Size(message = "{EmailAccount.password.Size.message}", min = 5, max = 35)
private transient String password;
@NotNull(message = "{EmailAccount.emailAddress.NotNull.message}")
@Pattern(message = "{EmailAccount.emailAddress.Pattern.message}", regexp = ".+\\@.+\\..+")
private String emailAddress;
private String sendToAddress;
public EmailAccount() {};
protected EmailAccount init(Properties props) {
setHost(props);
setPort(props);
setSslEnabled(props);
setUsername(props);
setPassword(props);
setEmailAddress(props);
setSendToAddress(props);
return this;
}
private void setSendToAddress(Properties props) {
sendToAddress = props.getProperty("sendToAddress", props.getProperty("emailAddress", null));
}
public String getSendToAddress() {
return sendToAddress;
}
private void setEmailAddress(Properties props) {
emailAddress = props.getProperty("emailAddress", null);
}
private void setPassword(Properties props) {
password = props.getProperty("password", null);
}
private void setUsername(Properties props) {
username = props.getProperty("username", null);
}
private void setSslEnabled(Properties props) {
String boolStr = props.getProperty("sslEnabled", null);
if (boolStr != null) {
if ("true".equalsIgnoreCase(boolStr)) {
sslEnabled = Boolean.TRUE;
} else if ("false".equalsIgnoreCase(boolStr)) {
sslEnabled = Boolean.FALSE;
} else {
sslEnabled = null;
}
}
}
private void setPort(Properties props) {
String portStr = props.getProperty("port", null);
if (portStr != null) {
try {
port = new Integer(portStr);
} catch (NumberFormatException ignore) {
port = null;
}
}
}
private void setHost(Properties props) {
this.host = props.getProperty("host", null);
}
public String getHost() {
return host;
}
public Integer getPort() {
return port;
}
public Boolean isSslEnabled() {
return sslEnabled;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getEmailAddress() {
return emailAddress;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringBuilder.getDefaultStyle(), false);
}
}