package com.lateensoft.pathfinder.toolkit.serialize;
import com.lateensoft.pathfinder.toolkit.model.character.*;
import org.dom4j.Element;
import java.io.InvalidObjectException;
/**
* @author trevsiemens
*/
public class CharacterXMLAdapter extends XMLObjectAdapter<PathfinderCharacter> {
public static final String ELEMENT_NAME = "character";
private static final String NAME_ELMT = "name";
public static final String GOLD_ATTR = "gold";
private AbilitySetXMLAdapter m_abilitySetXMLAdapter = new AbilitySetXMLAdapter();
private CombatStatSetXMLAdapter m_combatStatXMLAdapter = new CombatStatSetXMLAdapter();
private FeatListXMLAdapter m_featListXMLAdapter = new FeatListXMLAdapter();
private FluffXMLAdapter m_fluffXMLAdapter = new FluffXMLAdapter();
private InventoryXMLAdapter m_inventoryXMLAdapter = new InventoryXMLAdapter();
private SaveSetXMLAdapter m_saveSetXMLAdapter = new SaveSetXMLAdapter();
private SkillSetXMLAdapter m_skillSetXMLAdapter = new SkillSetXMLAdapter();
private SpellBookXMLAdapter m_spellbookXMLAdapter = new SpellBookXMLAdapter();
@Override
public String getElementName() {
return ELEMENT_NAME;
}
@Override
protected PathfinderCharacter createObjectForElement(Element element) throws InvalidObjectException {
PathfinderCharacter.Builder builder = new PathfinderCharacter.Builder();
setBuilderContentForElement(builder, element);
return builder.build();
}
protected void setBuilderContentForElement(PathfinderCharacter.Builder builder, Element element) throws InvalidObjectException {
builder.setName(getSubElementText(element, NAME_ELMT))
.setGold(getBoundedDoubleAttribute(element, GOLD_ATTR, 0.0, Double.MAX_VALUE))
.setFluffInfo(getSubObject(element, m_fluffXMLAdapter))
.setAbilitySet(getSubObject(element, m_abilitySetXMLAdapter))
.setCombatStatSet(getSubObject(element, m_combatStatXMLAdapter))
.setFeats(getSubObject(element, m_featListXMLAdapter))
.setInventory(getSubObject(element, m_inventoryXMLAdapter))
.setSaveSet(getSubObject(element, m_saveSetXMLAdapter))
.setSkillSet(getSubObject(element, m_skillSetXMLAdapter))
.setSpellBook(getSubObject(element, m_spellbookXMLAdapter));
}
@Override
protected void setElementContentForObject(Element element, PathfinderCharacter character) {
addSubElementText(element, NAME_ELMT, character.getName());
element.addAttribute(GOLD_ATTR, Double.toString(character.getGold()));
element.add(m_fluffXMLAdapter.toXML(character.getFluff()));
element.add(m_abilitySetXMLAdapter.toXML(character.getAbilitySet()));
element.add(m_combatStatXMLAdapter.toXML(character.getCombatStatSet()));
element.add(m_featListXMLAdapter.toXML(character.getFeatList()));
element.add(m_inventoryXMLAdapter.toXML(character.getInventory()));
element.add(m_saveSetXMLAdapter.toXML(character.getSaveSet()));
element.add(m_skillSetXMLAdapter.toXML(character.getSkillSet()));
element.add(m_spellbookXMLAdapter.toXML(character.getSpellBook()));
}
}