From 33e3e7cfc18395f582c3d4e137be12f4c675bf1f Mon Sep 17 00:00:00 2001 From: diwakar1920 Date: Wed, 28 Jun 2023 10:46:16 -0500 Subject: [PATCH 1/3] "Worked on hire method" --- .idea/.gitignore | 3 ++ .idea/jpa-buddy.xml | 6 ++++ .idea/misc.xml | 9 +++++ .idea/modules.xml | 8 +++++ .idea/vcs.xml | 6 ++++ coding-evaluation.iml | 11 ++++++ java/com/aa/act/interview/org/Employee.java | 4 +-- .../aa/act/interview/org/MyOrganization.java | 4 +-- java/com/aa/act/interview/org/Name.java | 6 ++-- .../aa/act/interview/org/Organization.java | 35 ++++++++++++++----- 10 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/jpa-buddy.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 coding-evaluation.iml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/jpa-buddy.xml b/.idea/jpa-buddy.xml new file mode 100644 index 0000000..966d5f5 --- /dev/null +++ b/.idea/jpa-buddy.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..bf719a9 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..d0e089a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/coding-evaluation.iml b/coding-evaluation.iml new file mode 100644 index 0000000..908ad4f --- /dev/null +++ b/coding-evaluation.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java/com/aa/act/interview/org/Employee.java b/java/com/aa/act/interview/org/Employee.java index 0e40b90..c8d1a7a 100644 --- a/java/com/aa/act/interview/org/Employee.java +++ b/java/com/aa/act/interview/org/Employee.java @@ -11,11 +11,11 @@ public Employee(int identifier, Name name) { this.identifier = identifier; this.name = name; } - + public int getIdentifier() { return identifier; } - + public Name getName() { return name; } diff --git a/java/com/aa/act/interview/org/MyOrganization.java b/java/com/aa/act/interview/org/MyOrganization.java index a6048da..7c4cf07 100644 --- a/java/com/aa/act/interview/org/MyOrganization.java +++ b/java/com/aa/act/interview/org/MyOrganization.java @@ -1,7 +1,6 @@ package com.aa.act.interview.org; public class MyOrganization extends Organization { - @Override protected Position createOrganization() { Position ceo = new Position("CEO"); @@ -27,7 +26,7 @@ protected Position createOrganization() { vpt.addDirectReport(dct); Position s = new Position("Salesperson"); vps.addDirectReport(s); - + return ceo; } @@ -44,6 +43,7 @@ public static final void main(String... args) { myOrg.hire(new Name("Head", "Geek"), "VP Technology"); myOrg.hire(new Name("Steve", "Dent"), "VP Infrastructure"); myOrg.hire(new Name("Slick", "Willie"), "Salesperson"); + //System.out.println(myOrg); System.out.println(myOrg); } } diff --git a/java/com/aa/act/interview/org/Name.java b/java/com/aa/act/interview/org/Name.java index edb78b1..6b02895 100644 --- a/java/com/aa/act/interview/org/Name.java +++ b/java/com/aa/act/interview/org/Name.java @@ -4,7 +4,7 @@ public class Name { private String first; private String last; - + public Name(String first, String last) { if(first == null) throw new IllegalArgumentException("first name cannot be null"); @@ -13,11 +13,11 @@ public Name(String first, String last) { this.first = first; this.last = last; } - + public String getFirst() { return first; } - + public String getLast() { return last; } diff --git a/java/com/aa/act/interview/org/Organization.java b/java/com/aa/act/interview/org/Organization.java index e1c8ed1..f5a0918 100644 --- a/java/com/aa/act/interview/org/Organization.java +++ b/java/com/aa/act/interview/org/Organization.java @@ -1,34 +1,53 @@ package com.aa.act.interview.org; +import java.util.LinkedList; import java.util.Optional; +import java.util.Queue; +import java.util.concurrent.atomic.AtomicInteger; public abstract class Organization { private Position root; - + private AtomicInteger employeeCounter; + public Organization() { root = createOrganization(); + employeeCounter = new AtomicInteger(0); } - + 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(); +public Optional hire(Name person, String title) { + Queue queue = new LinkedList<>(); + queue.add(root); + + while (!queue.isEmpty()) { + Position position = queue.poll(); + + if (position.getTitle().equals(title) && !position.isFilled()) { + Employee newEmployee = new Employee(employeeCounter.incrementAndGet(), person); + position.setEmployee(Optional.of(newEmployee)); + return Optional.of(position); + } + + queue.addAll(position.getDirectReports()); } + return Optional.empty(); +} + @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()) { From 29e7f72693aa224c14deb8562ec2913c34fd6c5e Mon Sep 17 00:00:00 2001 From: diwakar1920 <125209897+diwakar1920@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:52:56 -0500 Subject: [PATCH 2/3] Update Organization.java --- java/com/aa/act/interview/org/Organization.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/com/aa/act/interview/org/Organization.java b/java/com/aa/act/interview/org/Organization.java index f5a0918..5426e14 100644 --- a/java/com/aa/act/interview/org/Organization.java +++ b/java/com/aa/act/interview/org/Organization.java @@ -37,6 +37,8 @@ public Optional hire(Name person, String title) { return Optional.of(position); } + + queue.addAll(position.getDirectReports()); } From f1fd96daa0bc15400e270e6cc3b8f40baee114ed Mon Sep 17 00:00:00 2001 From: diwakar1920 <125209897+diwakar1920@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:56:13 -0500 Subject: [PATCH 3/3] UPDATED organization.java with hire method --- java/com/aa/act/interview/org/Organization.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/java/com/aa/act/interview/org/Organization.java b/java/com/aa/act/interview/org/Organization.java index 5426e14..0a0e502 100644 --- a/java/com/aa/act/interview/org/Organization.java +++ b/java/com/aa/act/interview/org/Organization.java @@ -36,9 +36,6 @@ public Optional hire(Name person, String title) { position.setEmployee(Optional.of(newEmployee)); return Optional.of(position); } - - - queue.addAll(position.getDirectReports()); }