diff --git a/java/com/aa/act/interview/org/Organization.java b/java/com/aa/act/interview/org/Organization.java index 5060509..26298ce 100644 --- a/java/com/aa/act/interview/org/Organization.java +++ b/java/com/aa/act/interview/org/Organization.java @@ -5,6 +5,7 @@ public abstract class Organization { private Position root; + private static int employeeNumber; public Organization() { root = createOrganization(); @@ -21,9 +22,27 @@ public Organization() { */ public Optional hire(Name person, String title) { //your code here - return Optional.empty(); + //return Optional.empty(); + addEmployee(root, person, title); + displayEmployeeDetails(root, person, title); + return Optional.of(root); } + private void addEmployee(Position position, Name person, String title) { + if (position.getTitle().equals(title)) { + position.setEmployee(Optional.of(new Employee(++employeeNumber, new Name(person.getFirst(), person.getLast())))); + } + + } + + private void displayEmployeeDetails(Position pos, Name person, String title) { + for (Position p : pos.getDirectReports()) { + addEmployee(p, person, title); + displayEmployeeDetails(p, person, title); + + } + } + @Override public String toString() { return printOrganization(root, "");