2021-03-04 16:15:04 -07:00
|
|
|
// reflection/Staff.java
|
2021-01-31 15:42:31 -07:00
|
|
|
// (c)2021 MindView LLC: see Copyright.txt
|
2015-11-15 15:51:35 -08:00
|
|
|
// We make no guarantees that this code is fit for any purpose.
|
2016-09-23 13:23:35 -06:00
|
|
|
// Visit http://OnJava8.com for more book information.
|
2015-06-15 17:47:35 -07:00
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
public class Staff extends ArrayList<Position> {
|
|
|
|
public void add(String title, Person person) {
|
|
|
|
add(new Position(title, person));
|
|
|
|
}
|
|
|
|
public void add(String... titles) {
|
|
|
|
for(String title : titles)
|
|
|
|
add(new Position(title));
|
|
|
|
}
|
|
|
|
public Staff(String... titles) { add(titles); }
|
|
|
|
public boolean positionAvailable(String title) {
|
|
|
|
for(Position position : this)
|
|
|
|
if(position.getTitle().equals(title) &&
|
2015-12-15 11:47:04 -08:00
|
|
|
position.getPerson().empty)
|
2015-06-15 17:47:35 -07:00
|
|
|
return true;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
public void fillPosition(String title, Person hire) {
|
|
|
|
for(Position position : this)
|
|
|
|
if(position.getTitle().equals(title) &&
|
2015-12-15 11:47:04 -08:00
|
|
|
position.getPerson().empty) {
|
2015-06-15 17:47:35 -07:00
|
|
|
position.setPerson(hire);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
throw new RuntimeException(
|
|
|
|
"Position " + title + " not available");
|
|
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
|
|
Staff staff = new Staff("President", "CTO",
|
|
|
|
"Marketing Manager", "Product Manager",
|
|
|
|
"Project Lead", "Software Engineer",
|
|
|
|
"Software Engineer", "Software Engineer",
|
|
|
|
"Software Engineer", "Test Engineer",
|
|
|
|
"Technical Writer");
|
|
|
|
staff.fillPosition("President",
|
|
|
|
new Person("Me", "Last", "The Top, Lonely At"));
|
|
|
|
staff.fillPosition("Project Lead",
|
|
|
|
new Person("Janet", "Planner", "The Burbs"));
|
|
|
|
if(staff.positionAvailable("Software Engineer"))
|
|
|
|
staff.fillPosition("Software Engineer",
|
2017-05-10 11:45:39 -06:00
|
|
|
new Person(
|
|
|
|
"Bob", "Coder", "Bright Light City"));
|
2015-06-15 17:47:35 -07:00
|
|
|
System.out.println(staff);
|
|
|
|
}
|
2015-09-07 11:44:36 -06:00
|
|
|
}
|
|
|
|
/* Output:
|
2017-05-10 11:45:39 -06:00
|
|
|
[Position: President, Employee: Me Last The Top, Lonely
|
|
|
|
At, Position: CTO, Employee: <Empty>, Position:
|
|
|
|
Marketing Manager, Employee: <Empty>, Position: Product
|
|
|
|
Manager, Employee: <Empty>, Position: Project Lead,
|
|
|
|
Employee: Janet Planner The Burbs, Position: Software
|
|
|
|
Engineer, Employee: Bob Coder Bright Light City,
|
|
|
|
Position: Software Engineer, Employee: <Empty>,
|
|
|
|
Position: Software Engineer, Employee: <Empty>,
|
|
|
|
Position: Software Engineer, Employee: <Empty>,
|
2015-12-15 11:47:04 -08:00
|
|
|
Position: Test Engineer, Employee: <Empty>, Position:
|
|
|
|
Technical Writer, Employee: <Empty>]
|
2015-09-07 11:44:36 -06:00
|
|
|
*/
|