package org.springframework.roo.addon.email;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* Protocols known to the email add-on.
*
* @author Stefan Schmidt
* @since 1.0
*/
public class MailProtocol implements Comparable<MailProtocol> {
public static final MailProtocol IMAP = new MailProtocol("IMAP", "imap");
public static final MailProtocol POP3 = new MailProtocol("POP3", "pop3");
public static final MailProtocol SMTP = new MailProtocol("SMTP", "smtp");
private final String protocol;
private final String protocolLabel;
public MailProtocol(final String protocolLabel, final String protocol) {
Validate.notNull(protocolLabel, "Protocol label required");
Validate.notNull(protocol, "protocol required");
this.protocolLabel = protocolLabel;
this.protocol = protocol;
}
public final int compareTo(final MailProtocol o) {
if (o == null) {
return -1;
}
final int result = protocolLabel.compareTo(o.protocolLabel);
return result;
}
@Override
public final boolean equals(final Object obj) {
return obj instanceof MailProtocol
&& compareTo((MailProtocol) obj) == 0;
}
public String getKey() {
return protocolLabel;
}
public String getProtocol() {
return protocol;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ (protocolLabel == null ? 0 : protocolLabel.hashCode());
return result;
}
@Override
public String toString() {
final ToStringBuilder builder = new ToStringBuilder(this);
builder.append("provider", protocolLabel);
return builder.toString();
}
}