public class EmployeeStateDelegate extends Employee {
  static final int LAST_NAME = 1;
  static final int FIRST_NAME = 2;
  static final int SS = 3;
  static final int SALARY = 4;
  static final int DIVISION_ID = 5;

  private EmployeeStateManager stateManager;

  public EmployeeStateDelegate(String id, String lastName,
      String firstName, String ss, float salary,
      String divisionId) {
    super(id, lastName, firstName, ss, salary, divisionId);
  }

  public EmployeeStateDelegate(Employee e) {
    super(e.id, e.lastName, e.firstName,
        e.ss, e.salary, e.divisionId);
  }

  public EmployeeStateDelegate(String employeeId) {
    super(employeeId);
  }

  public EmployeeStateDelegate(String employeeId,
      EmployeeStateManager stateManager) {
    super(employeeId);
    this.stateManager = stateManager;
  }

  public void setStateManager(
      EmployeeStateManager stateManager) {
    this.stateManager = stateManager;
  }

  public String getFirstName() {
    stateManager.load(FIRST_NAME);
    return firstName;
  }

  public String getDivisionId() {
    stateManager.load(DIVISION_ID);
    return divisionId;
  }

  public String getLastName() {
    stateManager.load(LAST_NAME);
    return lastName;
  }

  public String getSS() {
    stateManager.load(SS);
    return ss;
  }

  public float getSalary() {
    stateManager.load(SALARY);
    return salary;
  }

  public EmployeeStateManager getStateManager() {
    return stateManager;
  }
}