diff --git a/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Demo.java b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Demo.java new file mode 100644 index 0000000000000000000000000000000000000000..75a7cfab5210a08bc6e4cf532ae5dc7ad04e85ea --- /dev/null +++ b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Demo.java @@ -0,0 +1,54 @@ +package edu.unl.cse.soft160.project_plan; + +public class Demo { + public static void main(String... arguments) { + Team alpha = new Team("Team Alpha"); + alpha.addMember(TeamMemberRole.TEAM_LEAD, "Eve", "eve@example.com"); + alpha.addMember(TeamMemberRole.CODING_LEAD, "Carol", "carol@example.com"); + alpha.addMember(TeamMemberRole.UX_LEAD, "Bob", "bob@example.com"); + alpha.addMember(TeamMemberRole.VERIFICATION_LEAD, "Alice", "alice@example.com"); + for (String name : new String[] { "Alice", "Bob", "Carol", "Dan", "Eve" }) { + System.out.print("Email for " + name + ": "); + try { + System.out.println(alpha.getEmail(name)); + } catch (IllegalArgumentException exception) { + System.out.println(exception.getMessage()); + } + } + System.out.println(); + Project bravo = new Project("Bravo", alpha); + Task gatherRequirements = new Task("Gather Requirements"); + Task implementLogic = new Task("Implement Logic"); + Task implementBackend = new Task("Implement Backend"); + Task implementUI = new Task("Implement UI"); + Task verify = new Task("Verify"); + verify.addPredecessor(implementLogic); + verify.addPredecessor(implementBackend); + verify.addPredecessor(implementUI); + implementLogic.addPredecessor(gatherRequirements); + implementBackend.addPredecessor(gatherRequirements); + implementUI.addPredecessor(gatherRequirements); + bravo.addTask(gatherRequirements); + bravo.addTask(implementLogic); + bravo.addTask(implementBackend); + bravo.addTask(implementUI); + bravo.addTask(verify); + System.out.println(bravo); + System.out.println(); + gatherRequirements.complete(); + System.out.println(bravo); + System.out.println(); + implementLogic.complete(); + System.out.println(bravo); + System.out.println(); + implementBackend.complete(); + System.out.println(bravo); + System.out.println(); + implementUI.complete(); + System.out.println(bravo); + System.out.println(); + verify.complete(); + System.out.println(bravo); + System.out.println(); + } +} diff --git a/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Project.java b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Project.java new file mode 100644 index 0000000000000000000000000000000000000000..93c772c6c058e4f38e4401542f0cb91e19b2fdaf --- /dev/null +++ b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Project.java @@ -0,0 +1,41 @@ +package edu.unl.cse.soft160.project_plan; + +import java.util.HashSet; +import java.util.Set; + +public class Project { + private String name; + private Team team; + private Set<Task> tasks; + + public Project(String name, Team team) { + this.name = name; + this.team = team; + tasks = new HashSet<Task>(); + } + + public void addTask(Task task) { + tasks.add(task); + } + + public Set<Task> getTasks(TaskStatus status) { + Set<Task> result = new HashSet<Task>(); + for (Task task : tasks) { + if (task.getStatus() == status) { + result.add(task); + } + } + return result; + } + + public String toString() { + String result = "Project " + name + " (assigned to " + team + "):\n"; + for (TaskStatus status : TaskStatus.values()) { + result += " " + status + ":\n"; + for (Task task : getTasks(status)) { + result += " " + task + "\n"; + } + } + return result + "End Project"; + } +} diff --git a/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Task.java b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Task.java new file mode 100644 index 0000000000000000000000000000000000000000..a4f6e63af5ab98028fef8856e3bd0d6977f49cc2 --- /dev/null +++ b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Task.java @@ -0,0 +1,25 @@ +package edu.unl.cse.soft160.project_plan; + +public class Task { + public Task(String name) { + // TODO: replace stub + } + + public void addPredecessor(Task other) { + // TODO: replace stub + } + + public TaskStatus getStatus() { + // TODO: replace stub + return TaskStatus.BLOCKED; + } + + public void complete() { + // TODO: replace stub + } + + public String toString() { + // TODO: replace stub + return "〈Placeholder〉"; + } +} diff --git a/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/TaskStatus.java b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/TaskStatus.java new file mode 100644 index 0000000000000000000000000000000000000000..17e060ea18d4de5dd3755ed28ed519001d67b2ef --- /dev/null +++ b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/TaskStatus.java @@ -0,0 +1,5 @@ +package edu.unl.cse.soft160.project_plan; + +public enum TaskStatus { + READY, BLOCKED, COMPLETED, +} diff --git a/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Team.java b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Team.java index cbcbe262b7adc621329bd0e8fdbb5b48d6538e39..3fbf5cef9b39c25fbc8e4c4654963e528b90f07a 100644 --- a/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Team.java +++ b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/Team.java @@ -6,23 +6,34 @@ public class Team { private String teamLeadEmail; private String codingLeadName; private String codingLeadEmail; - private String userExperienceLeadName; - private String userExperienceLeadEmail; + private String UXLeadName; + private String UXLeadEmail; private String verificationLeadName; private String verificationLeadEmail; - public Team(String teamName, String teamLeadName, String teamLeadEmail, String codingLeadName, - String codingLeadEmail, String userExperienceLeadName, String userExperienceLeadEmail, - String verificationLeadName, String verificationLeadEmail) { + public Team(String teamName) { this.teamName = teamName; - this.teamLeadName = teamLeadName; - this.teamLeadEmail = teamLeadEmail; - this.codingLeadName = codingLeadName; - this.codingLeadEmail = codingLeadEmail; - this.userExperienceLeadName = userExperienceLeadName; - this.userExperienceLeadEmail = userExperienceLeadEmail; - this.verificationLeadName = verificationLeadName; - this.verificationLeadEmail = verificationLeadEmail; + } + + public void addMember(TeamMemberRole role, String name, String email) { + switch (role) { + case TEAM_LEAD: + teamLeadName = name; + teamLeadEmail = email; + break; + case CODING_LEAD: + codingLeadName = name; + codingLeadEmail = email; + break; + case UX_LEAD: + UXLeadName = name; + UXLeadEmail = email; + break; + case VERIFICATION_LEAD: + verificationLeadName = name; + verificationLeadEmail = email; + break; + } } public String getEmail(String name) { @@ -32,8 +43,8 @@ public class Team { if (name.equals(codingLeadName)) { return codingLeadEmail; } - if (name.equals(userExperienceLeadName)) { - return userExperienceLeadEmail; + if (name.equals(UXLeadName)) { + return UXLeadEmail; } if (name.equals(verificationLeadName)) { return verificationLeadEmail; diff --git a/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/TeamMemberRole.java b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/TeamMemberRole.java new file mode 100644 index 0000000000000000000000000000000000000000..13b359015a136b015403fb119be729ac636e2907 --- /dev/null +++ b/project_plan/src/main/java/edu/unl/cse/soft160/project_plan/TeamMemberRole.java @@ -0,0 +1,5 @@ +package edu.unl.cse.soft160.project_plan; + +public enum TeamMemberRole { + TEAM_LEAD, CODING_LEAD, UX_LEAD, VERIFICATION_LEAD, +}