package cryodex;
import java.util.ArrayList;
import java.util.List;
import cryodex.CryodexController.Modules;
import cryodex.modules.Module;
import cryodex.modules.ModulePlayer;
import cryodex.xml.XMLObject;
import cryodex.xml.XMLUtils;
import cryodex.xml.XMLUtils.Element;
public class Player implements Comparable<Player>, XMLObject {
private String name;
private String groupName;
private String saveId;
private String email;
private List<ModulePlayer> moduleInfo;
public Player() {
this("");
}
public Player(String name) {
this.name = name;
moduleInfo = new ArrayList<ModulePlayer>();
}
public Player(Element e) {
this.name = e.getStringFromChild("NAME");
this.groupName = e.getStringFromChild("GROUPNAME");
this.saveId = e.getStringFromChild("SAVEID");
this.email = e.getStringFromChild("EMAIL");
Element moduleInfoElement = e.getChild("MODULE-INFO");
moduleInfo = new ArrayList<ModulePlayer>();
if (moduleInfoElement != null) {
for (Element mp : moduleInfoElement.getChildren()) {
String moduleName = mp.getStringFromChild("MODULE");
Module m = Modules.getModuleByName(moduleName);
moduleInfo.add(m.loadPlayer(this, mp));
}
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGroupName() {
return groupName == null ? "" : groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getSaveId() {
return saveId;
}
public void setSaveId(String saveId) {
this.saveId = saveId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public List<ModulePlayer> getModuleInfo() {
return moduleInfo;
}
public void setModuleInfo(List<ModulePlayer> moduleInfo) {
this.moduleInfo = moduleInfo;
}
public ModulePlayer getModuleInfoByModule(Module m) {
String moduleName = Modules.getNameByModule(m);
for (ModulePlayer mp : getModuleInfo()) {
if (moduleName.equals(mp.getModuleName())) {
return mp;
}
}
ModulePlayer player = m.getNewModulePlayer(this);
getModuleInfo().add(player);
return player;
}
@Override
public String toString() {
return getName();
}
public String toXML() {
StringBuilder sb = new StringBuilder();
appendXML(sb);
return sb.toString();
}
@Override
public StringBuilder appendXML(StringBuilder sb) {
XMLUtils.appendObject(sb, "NAME", getName());
XMLUtils.appendObject(sb, "ID", getSaveId());
XMLUtils.appendObject(sb, "GROUPNAME", getGroupName());
XMLUtils.appendObject(sb, "SAVEID", getSaveId());
XMLUtils.appendObject(sb, "EMAIL", getEmail());
XMLUtils.appendList(sb, "MODULE-INFO", "MODULE-PLAYER", getModuleInfo());
return sb;
}
@Override
public int compareTo(Player arg0) {
return this.getName().toUpperCase()
.compareTo(arg0.getName().toUpperCase());
}
}