import java.util.*;
/******************************************************************************/
/** Candidate class for storing and manipulating individual records.
 *
 * @author Duncan Buell
 *
 * written: 29 March 2008
**/
public class Candidate
{
  private String birthPlace;
  private String firstName;
  private String lastName;
  private String party;
  private String state;

/******************************************************************************/
/** Construct a new candidate with empty strings for all instance variables
**/
  public Candidate()
  {
    this.setFirstName("");
    this.setLastName("");
    this.setParty("");
    this.setState("");
    this.setBirthPlace("");
  }

/******************************************************************************/
/** Construct a new candidate using only first and last names
**/
  public Candidate(String inFirstName, String inLastName)
  {
    this.setFirstName(inFirstName);
    this.setLastName(inLastName);
    this.setParty("");
    this.setState("");
    this.setBirthPlace("");
  }

/******************************************************************************/
/** Construct a new candidate with values supplied for all instance variables
**/
  public Candidate(String inFirstName, String inLastName, String inParty,
                   String inState, String inBirthPlace)
  {
    this.setFirstName(inFirstName);
    this.setLastName(inLastName);
    this.setParty(inParty);
    this.setState(inState);
    this.setBirthPlace(inBirthPlace);
  }

/******************************************************************************/
/* Accessors                                                                  */
/******************************************************************************/
/******************************************************************************/
  public String getBirthPlace()
  {
    return this.birthPlace;
  }
   
/******************************************************************************/
  public String getField(Fields which)
  {
    String returnString = "";

    if(Fields.BIRTHPLACE == which)
    {
      returnString = this.birthPlace;
    }
    else if(Fields.FIRSTNAME == which)
    {
      returnString = this.firstName;
    }
    else if(Fields.LASTNAME == which)
    {
      returnString = this.lastName;
    }
    else if(Fields.PARTY == which)
    {
      returnString = this.party;
    }
    else if(Fields.STATE == which)
    {
      returnString = this.state;
    }

    return returnString;
  } // public String getField(Fields.which)
   
/******************************************************************************/
  public String getFirstName()
  {
    return this.firstName;
  }
   
/******************************************************************************/
  public String getLastName()
  {
    return this.lastName;
  }
   
/******************************************************************************/
  public String getParty()
  {
    return this.party;
  }
   
/******************************************************************************/
  public String getState()
  {
    return this.state;
  }
   

/******************************************************************************/
/* Mutators                                                                   */
/******************************************************************************/
/******************************************************************************/
  public void setBirthPlace(String inBirthPlace)
  {
    this.birthPlace = inBirthPlace;
  }
   
/******************************************************************************/
  public void setFirstName(String inFirstName)
  {
    this.firstName = inFirstName;
  }
   
/******************************************************************************/
  public void setLastName(String inLastName)
  {
    this.lastName = inLastName;
  }
   
/******************************************************************************/
  public void setParty(String inParty)
  {
    this.party = inParty;
  }
   
/******************************************************************************/
  public void setState(String inState)
  {
    this.state = inState;
  }

/******************************************************************************/
/* Utility methods for an instance of a single candidate                      */
/******************************************************************************/
/******************************************************************************/
  public void getData(Scanner inDataFile)
  {
    String inString = "";

    inString = inDataFile.next();
    this.setFirstName(inString);

    inString = inDataFile.next();
    this.setLastName(inString);

    inString = inDataFile.next();
    this.setParty(inString);

    inString = inDataFile.next();
    this.setState(inString);

    inString = inDataFile.next();
    this.setBirthPlace(inString);

  }

/******************************************************************************/
/** This header string should match up in format and columns the 'toString'
 *  format and columns.
**/
  public String getPrintHeaderString()
  {
    String returnString = "";

    returnString = String.format("%20s %20s %4s %3s %20s",
                                 "FIRSTNAME","LASTNAME","PRTY","ST","BIRTHPLACE");
    return returnString;
  }
   
/******************************************************************************/
  public String toString()
  {
    String returnString = "";

    returnString = String.format("%20s %20s %4s %3s %20s",
                                 this.getFirstName(),this.getLastName(),this.getParty(),
                                 this.getState(),this.getBirthPlace());
    return returnString;
  }

} // public class Candidate

