/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando is a free software;
* You can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpmail.aps.services.mail;
import java.util.Map;
import java.util.TreeMap;
import com.agiletec.plugins.jpmail.aps.services.JpmailSystemConstants;
/**
* Bean class containing the basic configuration for the IMailManager service.
* @author E.Santoboni, E.Mezzano
*/
public class MailConfig implements Cloneable {
@Override
protected Object clone() throws CloneNotSupportedException {
MailConfig config = new MailConfig();
config.setActive(this.isActive());
config.setDebug(this.isDebug());
config.setSmtpHost(this.getSmtpHost());
config.setSmtpPort(this.getSmtpPort());
config.setSmtpTimeout(this.getSmtpTimeout());
config.setSmtpUserName(this.getSmtpUserName());
config.setSmtpUserName(this.getSmtpUserName());
config.setSmtpPassword(this.getSmtpPassword());
config.setSmtpProtocol(this.getSmtpProtocol());
config.setSenders(new TreeMap<String, String>(this.getSenders()));
return config;
}
public boolean isActive() {
return _active;
}
public void setActive(boolean active) {
this._active = active;
}
/**
* Return true if mail configuration expects an anonymous authentication.<br/>
* NOTE: an anonymous authentication occurs whenever the username and the
* associated password are <b>not</b> provided <b>and</b> no security
* encapsulation protocol is specified.
* @return True if the username and the password are not provided
*/
public boolean hasAnonimousAuth() {
return (((null == this._smtpUserName || this._smtpUserName.length() == 0)
&& (null == this._smtpPassword || this._smtpPassword.length() == 0)) &&
!hasSecureSmtp());
}
/**
* Return true if the mail transport uses a secure connection.
* @return true if the selected encapsulation protocol is SSL or TLS
*/
public boolean hasSecureSmtp() {
if (null == this._smtpProtocol ||
this._smtpProtocol == JpmailSystemConstants.PROTO_STD) return false;
return true;
}
/**
* Returns the smtp host name.
* @return The smtp host name.
*/
public String getSmtpHost() {
return _smtpHost;
}
/**
* Sets the smtp host name.
* @param smtpHost The smtp host name.
*/
public void setSmtpHost(String smtpHost) {
this._smtpHost = smtpHost;
}
/**
* Return the smtp port.
* @return The smtp port.
*/
public Integer getSmtpPort() {
return _smtpPort;
}
/**
* Sets the smtp port.
* @param port The smtp port.
*/
public void setSmtpPort(Integer smtpPort) {
this._smtpPort = smtpPort;
}
/**
* Return the smtp timeout.
* @return The smtp timeout.
*/
public Integer getSmtpTimeout() {
return _smtpTimeout;
}
/**
* Sets the smtp timeout. If 0 or null uses default.
* @param port The smtp timeout.
*/
public void setSmtpTimeout(Integer smtpTimeout) {
this._smtpTimeout = smtpTimeout;
}
/**
* Returns the password for the smtp access.
* @return The password for the smtp access.
*/
public String getSmtpPassword() {
return _smtpPassword;
}
/**
* Sets the password for the smtp access.
* @param smtpPassword The password for the smtp access.
*/
public void setSmtpPassword(String smtpPassword) {
this._smtpPassword = smtpPassword;
}
/**
* Returns the username for the smtp access.
* @return The username for the smtp access.
*/
public String getSmtpUserName() {
return _smtpUserName;
}
/**
* Sets the username for the smtp access.
* @param smtpUserName The username for the smtp access.
*/
public void setSmtpUserName(String smtpUserName) {
this._smtpUserName = smtpUserName;
}
/**
* Returns the senders, mapped as code/address.
* @return The senders, mapped as code/address.
*/
public Map<String, String> getSenders() {
return _senders;
}
/**
* Sets the senders, mapped as code/address.
* @param senders The senders, mapped as code/address.
*/
public void setSenders(Map<String, String> senders) {
this._senders = senders;
}
/**
* Add a sender address.
* @param code The code of the sender.
* @param sender The address of the sender.
*/
public void addSender(String code, String sender) {
this._senders.put(code, sender);
}
/**
* The sender address with given code.
* @param code the code of the sender.
* @return The sender with given code.
*/
public String getSender(String code) {
return (String) this._senders.get(code);
}
/**
* Returns the debug flag, used to trace debug informations.
* @return The debug flag.
*/
public boolean isDebug() {
return _debug;
}
/**
* Sets the debug flag, used to trace debug informations.
* @param debug The debug flag.
*/
public void setDebug(boolean debug) {
this._debug = debug;
}
public void setSmtpProtocol(Integer smtpProtocol) {
this._smtpProtocol = smtpProtocol;
}
public Integer getSmtpProtocol() {
return _smtpProtocol;
}
private boolean _active;
private Map<String, String> _senders = new TreeMap<String, String>();
private String _smtpHost;
private Integer _smtpPort;
private Integer _smtpTimeout;
private String _smtpUserName;
private String _smtpPassword;
private Integer _smtpProtocol;
private boolean _debug;
}