package org.buddycloud.channelserver.pubsub.model.impl;
import java.util.Date;
import org.buddycloud.channelserver.pubsub.affiliation.Affiliations;
import org.buddycloud.channelserver.pubsub.model.NodeAffiliation;
import org.xmpp.packet.JID;
/**
* Basic implementation of a NodeAffiliation
*/
public class NodeAffiliationImpl implements NodeAffiliation {
private final JID user;
private final String nodeId;
private final Affiliations affiliation;
private final Date lastUpdated;
/**
* Constructs a new object to represent a user's affiliation with a node
*
* @param nodeId
* @param user
*/
public NodeAffiliationImpl(final String nodeId, final JID user, final Affiliations affiliation, final Date lastUpdated) {
this.nodeId = nodeId;
if (user.getResource() == null) {
this.user = user;
} else {
this.user = new JID(user.toBareJID());
}
this.affiliation = affiliation;
this.lastUpdated = lastUpdated;
}
public JID getUser() {
return user;
}
public String getNodeId() {
return nodeId;
}
public Affiliations getAffiliation() {
return affiliation;
}
@Override
public String toString() {
return "NodeAffiliationImpl [user=" + user + ", nodeId=" + nodeId + ", affiliation=" + affiliation + "]";
}
@Override
public final int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((affiliation == null) ? 0 : affiliation.hashCode());
result = prime * result + ((nodeId == null) ? 0 : nodeId.hashCode());
result = prime * result + ((user == null) ? 0 : user.hashCode());
return result;
}
@Override
public final boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof NodeAffiliation)) {
return false;
}
NodeAffiliation other = (NodeAffiliation) obj;
if (affiliation != other.getAffiliation()) {
return false;
}
if (nodeId == null) {
if (other.getNodeId() != null) {
return false;
}
} else if (!nodeId.equals(other.getNodeId())) {
return false;
}
if (user == null) {
if (other.getUser() != null) {
return false;
}
} else if (!user.equals(other.getUser())) {
return false;
}
return true;
}
@Override
public String getUID() {
return toString();
}
@Override
public Date getLastUpdated() {
return lastUpdated;
}
}