package com.iluwatar.stepbuilder;

import java.util.List;

/**
 * The class with many parameters.
 */
public class Character {

  private String name;
  private String fighterClass;
  private String wizardClass;
  private String weapon;
  private String spell;
  private List<String> abilities;

  public Character(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getFighterClass() {
    return fighterClass;
  }

  public void setFighterClass(String fighterClass) {
    this.fighterClass = fighterClass;
  }

  public String getWizardClass() {
    return wizardClass;
  }

  public void setWizardClass(String wizardClass) {
    this.wizardClass = wizardClass;
  }

  public String getWeapon() {
    return weapon;
  }

  public void setWeapon(String weapon) {
    this.weapon = weapon;
  }

  public String getSpell() {
    return spell;
  }

  public void setSpell(String spell) {
    this.spell = spell;
  }

  public List<String> getAbilities() {
    return abilities;
  }

  public void setAbilities(List<String> abilities) {
    this.abilities = abilities;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("This is a ");
    sb.append(fighterClass != null ? fighterClass : wizardClass);
    sb.append(" named ");
    sb.append(name);
    sb.append(" armed with a ");
    sb.append(weapon != null ? weapon : spell != null ? spell : "with nothing");
    sb.append(abilities != null ? (" and wielding " + abilities + " abilities") : "");
    sb.append(".");
    return sb.toString();
  }
}
