package org.nutz.lang.meta;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
public class Email implements Cloneable {
private String account;
private String host;
public Email() {}
public Email(String str) {
try {
int pos = str.indexOf('@');
this.account = str.substring(0, pos);
this.host = str.substring(pos + 1, str.length());
}
catch (Exception e) {
throw Lang.makeThrow("Error email format [%s]", str);
}
if (Strings.isBlank(account) || Strings.isBlank(host) || host.indexOf('.') < 0)
throw Lang.makeThrow("Error email format [%s]", str);
}
public Email(String account, String host) {
this.account = account;
this.host = host;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
@Override
public int hashCode() {
if (null == account)
return 0;
return account.hashCode();
}
@Override
public Email clone() throws CloneNotSupportedException {
return new Email(account, host);
}
@Override
public boolean equals(Object obj) {
if (null == obj)
return false;
if (!Email.class.isAssignableFrom(obj.getClass()))
return false;
if (!account.equals(((Email) obj).account))
return false;
if (!host.equals(((Email) obj).host))
return false;
return true;
}
@Override
public String toString() {
return String.format("%s@%s", account, host);
}
}