From e454789d6495c40f01d28392895c3f8a1745be4a Mon Sep 17 00:00:00 2001 From: charishma-g Date: Tue, 7 Nov 2023 16:56:43 -0500 Subject: [PATCH] made changes to hire method to make the code work --- .../aa/act/interview/org/Organization.java | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/java/com/aa/act/interview/org/Organization.java b/java/com/aa/act/interview/org/Organization.java index e1c8ed1..99d38f6 100644 --- a/java/com/aa/act/interview/org/Organization.java +++ b/java/com/aa/act/interview/org/Organization.java @@ -5,35 +5,44 @@ public abstract class Organization { private Position root; - + private int identifier = 1; + public Organization() { root = createOrganization(); } - + protected abstract Position createOrganization(); - - /** - * hire the given person as an employee in the position that has that title - * - * @param person - * @param title - * @return the newly filled position or empty if no position has that title - */ public Optional hire(Name person, String title) { - //your code here - return Optional.empty(); + Employee employee = new Employee(identifier++, person); + Optional position = Optional.of(isPositionAvailable(root, title)); + position.ifPresent(value -> value.setEmployee(Optional.of(employee))); + return position; + } + + public Position isPositionAvailable(Position pos, String title) { + if (pos.getTitle().equals(title)) { + return pos; + } else { + for (Position p : pos.getDirectReports()) { + Position foundPosition = isPositionAvailable(p, title); + if (foundPosition != null) { + return foundPosition; + } + } + } + return null; } @Override public String toString() { return printOrganization(root, ""); } - + private String printOrganization(Position pos, String prefix) { - StringBuffer sb = new StringBuffer(prefix + "+-" + pos.toString() + "\n"); - for(Position p : pos.getDirectReports()) { + StringBuilder sb = new StringBuilder(prefix + "+-" + pos.toString() + "\n"); + for (Position p : pos.getDirectReports()) { sb.append(printOrganization(p, prefix + " ")); } return sb.toString(); } -} +} \ No newline at end of file