package com.rayo.storage.util;
import java.io.Serializable;
import com.voxeo.servlet.xmpp.JID;
public class JIDImpl implements JID, Serializable {
private static final long serialVersionUID = 1L;
private String node;
private String domain;
private String resource;
public JIDImpl(String stringJID) {
int atIndex = stringJID.indexOf("@");
if (atIndex > 0) {
node = stringJID.substring(0, atIndex);
}
int slashIndex = stringJID.indexOf("/");
if (slashIndex > 0) {
resource = stringJID.substring(slashIndex + 1);
domain = stringJID.substring(atIndex + 1, slashIndex);
}
else {
domain = stringJID.substring(atIndex + 1);
}
}
@Override
public Object clone() {
return new JIDImpl(toString());
}
public JID getBareJID() {
if (node != null && node.length() > 0) {
return new JIDImpl(node + "@" + domain);
}
return new JIDImpl(domain);
}
public String getDomain() {
return domain;
}
public String getNode() {
return node;
}
public String getResource() {
return resource;
}
public void setDomain(String domain) {
this.domain = domain;
}
public void setNode(String node) {
this.node = node;
}
public void setResource(String resource) {
this.resource = resource;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((domain == null) ? 0 : domain.hashCode());
result = prime * result + ((node == null) ? 0 : node.hashCode());
result = prime * result + ((resource == null) ? 0 : resource.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
JIDImpl other = (JIDImpl) obj;
if (domain == null) {
if (other.domain != null)
return false;
}
else if (!domain.equals(other.domain))
return false;
if (node == null) {
if (other.node != null)
return false;
}
else if (!node.equals(other.node))
return false;
if (resource == null) {
if (other.resource != null)
return false;
}
else if (!resource.equals(other.resource))
return false;
return true;
}
@Override
public String toString() {
if (node != null && node.length() > 0) {
StringBuffer sb = new StringBuffer();
if (resource != null && resource.length() > 0) {
return sb.append(node).append("@").append(domain).append("/").append(resource).toString();
}
return sb.append(node).append("@").append(domain).toString();
}
else if (resource != null && resource.length() > 0) {
StringBuffer sb = new StringBuffer();
return sb.append(domain).append("/").append(resource).toString();
}
return domain;
}
}