package ring.players;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import ring.nrapi.business.BusinessObject;
import ring.persistence.DataStoreFactory;
@XmlRootElement
/**
* Class representing a player and their collection of characters.
* This class holds information such as last logon date, password,
* etc.
* @author projectmoon
*
*/
public class Player extends BusinessObject {
private String name;
private String password;
private Date lastLogon;
private List<String> charIDs = new ArrayList<String>();
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getPassword() {
return password;
}
public void setPassword(String pw) {
password = pw;
}
@XmlElement
public Date getLastLogon() {
return lastLogon;
}
public void setLastLogon(Date lastLogon) {
this.lastLogon = lastLogon;
}
@XmlElementWrapper(name = "characters")
@XmlElement(name = "character")
public List<String> getCharacterIDs() {
return charIDs;
}
public void setCharacterIDs(List<String> ids) {
this.charIDs = ids;
}
public PlayerCharacter getCharacter(String name) {
return DataStoreFactory.getDefaultStore().retrievePlayerCharacter(name);
}
public void addCharacter(PlayerCharacter pc) {
charIDs.add(pc.getID());
}
public boolean removeCharacter(PlayerCharacter pc) {
return charIDs.remove(pc.getID());
}
public void addCharacter(String name) {
charIDs.add(name);
}
public boolean removeCharacter(String name) {
return charIDs.remove(name);
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((charIDs == null) ? 0 : charIDs.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result
+ ((password == null) ? 0 : password.hashCode());
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
Player other = (Player) obj;
if (charIDs == null) {
if (other.charIDs != null)
return false;
} else if (!charIDs.equals(other.charIDs))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
return true;
}
}