diff --git a/java/.idea/.gitignore b/java/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/java/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/java/.idea/compiler.xml b/java/.idea/compiler.xml
new file mode 100644
index 00000000..aeefdee1
--- /dev/null
+++ b/java/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/jarRepositories.xml b/java/.idea/jarRepositories.xml
new file mode 100644
index 00000000..712ab9d9
--- /dev/null
+++ b/java/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/libraries/Maven__junit_junit_4_13_1.xml b/java/.idea/libraries/Maven__junit_junit_4_13_1.xml
new file mode 100644
index 00000000..9fa24fcb
--- /dev/null
+++ b/java/.idea/libraries/Maven__junit_junit_4_13_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/java/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 00000000..f58bbc11
--- /dev/null
+++ b/java/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/libraries/Maven__org_hamcrest_java_hamcrest_2_0_0_0.xml b/java/.idea/libraries/Maven__org_hamcrest_java_hamcrest_2_0_0_0.xml
new file mode 100644
index 00000000..654d5d50
--- /dev/null
+++ b/java/.idea/libraries/Maven__org_hamcrest_java_hamcrest_2_0_0_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/misc.xml b/java/.idea/misc.xml
new file mode 100644
index 00000000..5ac47e8d
--- /dev/null
+++ b/java/.idea/misc.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/modules.xml b/java/.idea/modules.xml
new file mode 100644
index 00000000..c9e5ceef
--- /dev/null
+++ b/java/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/uiDesigner.xml b/java/.idea/uiDesigner.xml
new file mode 100644
index 00000000..e96534fb
--- /dev/null
+++ b/java/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/java/.idea/vcs.xml b/java/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/java/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/src/main/java/com/codurance/training/tasks/AddService.java b/java/src/main/java/com/codurance/training/tasks/AddService.java
new file mode 100644
index 00000000..9ba90993
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/AddService.java
@@ -0,0 +1,7 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public interface AddService {
+ public void CRUD(String commandLine, PrintWriter out);
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/AddTask.java b/java/src/main/java/com/codurance/training/tasks/AddTask.java
new file mode 100644
index 00000000..ed43184c
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/AddTask.java
@@ -0,0 +1,26 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Map;
+
+import com.codurance.training.tasks.Task;
+import com.codurance.training.tasks.TaskList;
+
+public class AddTask implements AddService{
+ private long lastId = 0;
+ @Override
+ public void CRUD(String commandLine, PrintWriter out) {
+ String[] subcommandRest = commandLine.split(" ", 2);
+ String[] projectTask = subcommandRest[1].split(" ", 2);
+ String project = projectTask[0];
+ String description = projectTask[1];
+ List projectTasks = TaskList.tasks.get(project);
+ if (projectTasks == null) {
+ out.printf("Could not find a project with the name \"%s\".", project);
+ out.println();
+ return;
+ }
+ projectTasks.add(new Task(++lastId, description, false));
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/CheckService.java b/java/src/main/java/com/codurance/training/tasks/CheckService.java
new file mode 100644
index 00000000..1ef10e07
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/CheckService.java
@@ -0,0 +1,7 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public interface CheckService {
+ public void setDone (String idString, boolean done, PrintWriter out);
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/CheckServiceImpl.java b/java/src/main/java/com/codurance/training/tasks/CheckServiceImpl.java
new file mode 100644
index 00000000..c61d24e5
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/CheckServiceImpl.java
@@ -0,0 +1,22 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Map;
+
+public class CheckServiceImpl implements CheckService{
+ @Override
+ public void setDone(String idString, boolean done, PrintWriter out) {
+ int id = Integer.parseInt(idString);
+ for (Map.Entry> project : TaskList.tasks.entrySet()) {
+ for (Task task : project.getValue()) {
+ if (task.getId() == id) {
+ task.setDone(done);
+ return;
+ }
+ }
+ }
+ out.printf("Could not find a task with an ID of %d.", id);
+ out.println();
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/CommandService.java b/java/src/main/java/com/codurance/training/tasks/CommandService.java
new file mode 100644
index 00000000..08975a1f
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/CommandService.java
@@ -0,0 +1,7 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public interface CommandService {
+ public void error(String command, PrintWriter out);
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/CommandServiceImpl.java b/java/src/main/java/com/codurance/training/tasks/CommandServiceImpl.java
new file mode 100644
index 00000000..5afad671
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/CommandServiceImpl.java
@@ -0,0 +1,11 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public class CommandServiceImpl implements CommandService{
+ @Override
+ public void error(String command, PrintWriter out) {
+ out.printf("I don't know what the command \"%s\" is.", command);
+ out.println();
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/CustomIdentifierImpl.java b/java/src/main/java/com/codurance/training/tasks/CustomIdentifierImpl.java
new file mode 100644
index 00000000..de6d5ef5
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/CustomIdentifierImpl.java
@@ -0,0 +1,29 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Map;
+
+import static com.codurance.training.tasks.TaskList.tasks;
+
+public class CustomIdentifierImpl implements AddService{
+ @Override
+ public void CRUD(String commandLine, PrintWriter out) {
+ String [] commandLineSplit = commandLine.split(" ",2);
+ int taskId = Integer.parseInt(commandLineSplit[0]);
+ String customid = commandLineSplit[1];
+ if (!customid.matches("[a-zA-Z0-9]+")) {
+ out.println("Invalid custom id.Only alphanumeric characters are allowed.");
+ return;
+ }
+ for (Map.Entry> project : tasks.entrySet()) {
+ for (Task task : project.getValue()) {
+ if (task.getId() == taskId) {
+ task.setCustomId(customid);
+ return;
+ }
+ }
+ }
+ out.printf("Could not find a task with an ID of %d.", taskId);
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/DeadLineImpl.java b/java/src/main/java/com/codurance/training/tasks/DeadLineImpl.java
new file mode 100644
index 00000000..cb4d0b93
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/DeadLineImpl.java
@@ -0,0 +1,34 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static com.codurance.training.tasks.TaskList.tasks;
+
+public class DeadLineImpl implements AddService{
+ @Override
+ public void CRUD(String commandLine, PrintWriter out) {
+ String [] commandLineSplit = commandLine.split(" ");
+ int taskId = Integer.parseInt(commandLineSplit[0]);
+ String deadlineString = commandLineSplit[1];
+ try {
+ SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
+ Date deadLine = dateFormat.parse(deadlineString);
+ for (Map.Entry> project : tasks.entrySet()) {
+ for (Task task : project.getValue()) {
+ if (task.getId() == taskId) {
+ task.setDeadline(deadLine);
+ return;
+ }
+ }
+ }
+ out.printf("Could not find a task with an ID of %d.", taskId);
+ out.println();
+ } catch (Exception e) {
+ System.out.println("Invalid date format! Please enter date in DD/MM/YYYY format.");
+ }
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/DeleteImpl.java b/java/src/main/java/com/codurance/training/tasks/DeleteImpl.java
new file mode 100644
index 00000000..58f72fb4
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/DeleteImpl.java
@@ -0,0 +1,24 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.List;
+
+import static com.codurance.training.tasks.TaskList.tasks;
+
+public class DeleteImpl implements AddService{
+ @Override
+ public void CRUD(String id, PrintWriter out) {
+ for (List taskList : tasks.values()) {
+ Iterator iterator = taskList.iterator();
+ while (iterator.hasNext()) {
+ Task task = iterator.next();
+ if (task.getId() == Integer.parseInt(id)) {
+ iterator.remove();
+ return;
+ }
+ }
+ }
+ out.printf("Could not find a task with an ID of %s.", id);
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/HelpService.java b/java/src/main/java/com/codurance/training/tasks/HelpService.java
new file mode 100644
index 00000000..5f0043de
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/HelpService.java
@@ -0,0 +1,7 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public interface HelpService {
+ public void userHelp(PrintWriter out) ;
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/HelpServiceImpl.java b/java/src/main/java/com/codurance/training/tasks/HelpServiceImpl.java
new file mode 100644
index 00000000..f0c4c010
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/HelpServiceImpl.java
@@ -0,0 +1,16 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public class HelpServiceImpl implements HelpService{
+ @Override
+ public void userHelp(PrintWriter out) {
+ out.println("Commands:");
+ out.println(" show");
+ out.println(" add project ");
+ out.println(" add task ");
+ out.println(" check ");
+ out.println(" uncheck ");
+ out.println();
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/ShowByCreatedDate.java b/java/src/main/java/com/codurance/training/tasks/ShowByCreatedDate.java
new file mode 100644
index 00000000..62f096a0
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/ShowByCreatedDate.java
@@ -0,0 +1,32 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static com.codurance.training.tasks.TaskList.tasks;
+
+public class ShowByCreatedDate implements ShowByDateService{
+ @Override
+ public void show(PrintWriter out, String date) {
+ try {
+ SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
+ Date requiredDate = dateFormatter.parse(date);
+ for (Map.Entry> project : tasks.entrySet()) {
+ out.println(project.getKey());
+ for (Task task : project.getValue()) {
+ if( LocalDate.from(task.getCreatedDate().toInstant().atZone(ZoneId.systemDefault())).isEqual(LocalDate.from(requiredDate.toInstant().atZone(ZoneId.systemDefault()))))
+ out.printf(" [%c] %d( %s ): %s %s%n", (task.isDone() ? 'x' : ' '), task.getId(),(task.getCustomId()!=null?task.getCustomId():""), task.getDescription(), (task.getDeadline()!= null ? dateFormatter.format(task.getDeadline()):""));
+ }
+ out.println();
+ }
+ }
+ catch (Exception e){
+ System.out.println("Invalid date format! Please enter date in DD/MM/YYYY format.");
+ }
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/ShowByDateService.java b/java/src/main/java/com/codurance/training/tasks/ShowByDateService.java
new file mode 100644
index 00000000..11657d23
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/ShowByDateService.java
@@ -0,0 +1,7 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public interface ShowByDateService {
+ public void show(PrintWriter out, String date);
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/ShowByDeadLine.java b/java/src/main/java/com/codurance/training/tasks/ShowByDeadLine.java
new file mode 100644
index 00000000..5c9ff271
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/ShowByDeadLine.java
@@ -0,0 +1,31 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static com.codurance.training.tasks.TaskList.tasks;
+
+public class ShowByDeadLine implements ShowByDateService{
+ @Override
+ public void show(PrintWriter out, String date) {
+ try {
+ SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
+ Date requiredDate = dateFormatter.parse(date);
+ for (Map.Entry> project : tasks.entrySet()) {
+ out.println(project.getKey());
+ for (Task task : project.getValue()) {
+ if (task.getDeadline() != null && LocalDate.from(task.getDeadline().toInstant().atZone(ZoneId.systemDefault())).isEqual(LocalDate.from(requiredDate.toInstant().atZone(ZoneId.systemDefault()))))
+ out.printf(" [%c] %d( %s ): %s %s%n", (task.isDone() ? 'x' : ' '), task.getId(), (task.getCustomId() != null ? task.getCustomId() : ""), task.getDescription(), (task.getDeadline() != null ? dateFormatter.format(task.getDeadline()) : ""));
+ }
+ out.println();
+ }
+ } catch (Exception e) {
+ System.out.println("Invalid date format! Please enter date in DD/MM/YYYY format.");
+ }
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/ShowByProjectId.java b/java/src/main/java/com/codurance/training/tasks/ShowByProjectId.java
new file mode 100644
index 00000000..602a87aa
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/ShowByProjectId.java
@@ -0,0 +1,26 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Map;
+
+import static com.codurance.training.tasks.TaskList.tasks;
+
+public class ShowByProjectId implements ShowByProjectService{
+ SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
+ @Override
+ public void show(PrintWriter out, String projectId) {
+ for (Map.Entry> project : tasks.entrySet()) {
+ if(project.getKey().equals(projectId)) {
+ out.println(project.getKey());
+ for (Task task : project.getValue()) {
+ out.printf(" [%c] %d( %s ): %s %s%n", (task.isDone() ? 'x' : ' '), task.getId(), (task.getCustomId() != null ? task.getCustomId() : ""), task.getDescription(), (task.getDeadline() != null ? dateFormatter.format(task.getDeadline()) : ""));
+ }
+ out.println();
+ return;
+ }
+ }
+ out.println("cannot find project with projectId "+projectId);
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/ShowByProjectService.java b/java/src/main/java/com/codurance/training/tasks/ShowByProjectService.java
new file mode 100644
index 00000000..f5c3e8d1
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/ShowByProjectService.java
@@ -0,0 +1,7 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public interface ShowByProjectService {
+ public void show(PrintWriter out, String projectId);
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/ShowService.java b/java/src/main/java/com/codurance/training/tasks/ShowService.java
new file mode 100644
index 00000000..17e02004
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/ShowService.java
@@ -0,0 +1,7 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+
+public interface ShowService {
+ public void show(PrintWriter out);
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/ShowServiceImpl.java b/java/src/main/java/com/codurance/training/tasks/ShowServiceImpl.java
new file mode 100644
index 00000000..ec5d8c1a
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/ShowServiceImpl.java
@@ -0,0 +1,20 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Map;
+
+import static com.codurance.training.tasks.TaskList.tasks;
+
+public class ShowServiceImpl implements ShowService{
+ @Override
+ public void show(PrintWriter out) {
+ for (Map.Entry> project : tasks.entrySet()) {
+ out.println(project.getKey());
+ for (Task task : project.getValue()) {
+ out.printf(" [%c] %d: %s%n", (task.isDone() ? 'x' : ' '), task.getId(), task.getDescription());
+ }
+ out.println();
+ }
+ }
+}
diff --git a/java/src/main/java/com/codurance/training/tasks/Task.java b/java/src/main/java/com/codurance/training/tasks/Task.java
index 31b39c98..aa0f4141 100644
--- a/java/src/main/java/com/codurance/training/tasks/Task.java
+++ b/java/src/main/java/com/codurance/training/tasks/Task.java
@@ -1,14 +1,20 @@
package com.codurance.training.tasks;
+import java.util.Date;
+
public final class Task {
private final long id;
private final String description;
private boolean done;
+ private Date deadline;
+ private String customId;
+ private Date createdDate;
public Task(long id, String description, boolean done) {
this.id = id;
this.description = description;
this.done = done;
+ this.createdDate = new Date();
}
public long getId() {
@@ -26,4 +32,28 @@ public boolean isDone() {
public void setDone(boolean done) {
this.done = done;
}
+
+ public Date getDeadline() {
+ return deadline;
+ }
+
+ public void setDeadline(Date deadline) {
+ this.deadline = deadline;
+ }
+
+ public String getCustomId() {
+ return customId;
+ }
+
+ public void setCustomId(String customId) {
+ this.customId = customId;
+ }
+
+ public Date getCreatedDate() {
+ return createdDate;
+ }
+
+ public void setCreatedDate(Date createdDate) {
+ this.createdDate = createdDate;
+ }
}
diff --git a/java/src/main/java/com/codurance/training/tasks/TaskList.java b/java/src/main/java/com/codurance/training/tasks/TaskList.java
index 9a4a8202..554f4894 100644
--- a/java/src/main/java/com/codurance/training/tasks/TaskList.java
+++ b/java/src/main/java/com/codurance/training/tasks/TaskList.java
@@ -12,11 +12,25 @@
public final class TaskList implements Runnable {
private static final String QUIT = "quit";
- private final Map> tasks = new LinkedHashMap<>();
+ public static Map> tasks = new LinkedHashMap<>();
private final BufferedReader in;
private final PrintWriter out;
- private long lastId = 0;
+ public static long lastId = 0;
+
+ public AddService addTask = new AddTask();
+ public AddService addProject = new addProject();
+ public CommandService errorCommand = new CommandServiceImpl();
+ public HelpService help = new HelpServiceImpl();
+ public CheckService check = new CheckServiceImpl();
+ public ShowService showSer = new ShowServiceImpl();
+ public AddService addDeadline = new DeadLineImpl();
+ public AddService customId = new CustomIdentifierImpl();
+ public AddService deleteImpl = new DeleteImpl();
+ public ShowByDateService showByDeadLine = new ShowByDeadLine();
+ public ShowByDateService showByDateCreated = new ShowByCreatedDate();
+ public ShowByProjectService showByProjectId = new ShowByProjectId();
+
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
@@ -51,99 +65,53 @@ private void execute(String commandLine) {
String command = commandRest[0];
switch (command) {
case "show":
- show();
+ showSer.show(out);
break;
case "add":
- add(commandRest[1]);
+ String[] subcommandRest = commandLine.split(" ", 2);
+ String subcommand = subcommandRest[0];
+ if (subcommand.equals("project")) {
+ addProject.CRUD(commandRest[1],out);
+ } else if (subcommand.equals("task")) {
+ addTask.CRUD(commandRest[1],out);
+ }
break;
case "check":
- check(commandRest[1]);
+ check.setDone(commandRest[1],true,out);
break;
case "uncheck":
- uncheck(commandRest[1]);
+ check.setDone(commandRest[1],false,out);
break;
case "help":
- help();
+ help.userHelp(out);
break;
- default:
- error(command);
+ case "deadline" :
+ addDeadline.CRUD(commandRest[1],out);
break;
- }
- }
-
- private void show() {
- for (Map.Entry> project : tasks.entrySet()) {
- out.println(project.getKey());
- for (Task task : project.getValue()) {
- out.printf(" [%c] %d: %s%n", (task.isDone() ? 'x' : ' '), task.getId(), task.getDescription());
- }
- out.println();
- }
- }
-
- private void add(String commandLine) {
- String[] subcommandRest = commandLine.split(" ", 2);
- String subcommand = subcommandRest[0];
- if (subcommand.equals("project")) {
- addProject(subcommandRest[1]);
- } else if (subcommand.equals("task")) {
- String[] projectTask = subcommandRest[1].split(" ", 2);
- addTask(projectTask[0], projectTask[1]);
- }
- }
-
- private void addProject(String name) {
- tasks.put(name, new ArrayList());
- }
-
- private void addTask(String project, String description) {
- List projectTasks = tasks.get(project);
- if (projectTasks == null) {
- out.printf("Could not find a project with the name \"%s\".", project);
- out.println();
- return;
- }
- projectTasks.add(new Task(nextId(), description, false));
- }
-
- private void check(String idString) {
- setDone(idString, true);
- }
-
- private void uncheck(String idString) {
- setDone(idString, false);
- }
-
- private void setDone(String idString, boolean done) {
- int id = Integer.parseInt(idString);
- for (Map.Entry> project : tasks.entrySet()) {
- for (Task task : project.getValue()) {
- if (task.getId() == id) {
- task.setDone(done);
- return;
+ case "customid":
+ customId.CRUD(commandRest[1],out);
+ break;
+ case "delete":
+ deleteImpl.CRUD(commandRest[1],out);
+ break;
+ case "viewby" :
+ subcommandRest = commandRest[1].split(" ", 2);
+ subcommand = subcommandRest[0];
+ switch (subcommand) {
+ case "date":
+ showByDateCreated.show(out, subcommandRest[1]);
+ break;
+ case "deadline":
+ showByDeadLine.show(out, subcommandRest[1]);
+ break;
+ case "project":
+ showByProjectId.show(out,subcommandRest[1]);
+ break;
}
- }
+ break;
+ default:
+ errorCommand.error(command, out);
+ break;
}
- out.printf("Could not find a task with an ID of %d.", id);
- out.println();
- }
-
- private void help() {
- out.println("Commands:");
- out.println(" show");
- out.println(" add project ");
- out.println(" add task ");
- out.println(" check ");
- out.println(" uncheck ");
- out.println();
- }
-
- private void error(String command) {
- out.printf("I don't know what the command \"%s\" is.", command);
- out.println();
- }
-
- private long nextId() {
- return ++lastId;
}
}
diff --git a/java/src/main/java/com/codurance/training/tasks/addProject.java b/java/src/main/java/com/codurance/training/tasks/addProject.java
new file mode 100644
index 00000000..d3137e12
--- /dev/null
+++ b/java/src/main/java/com/codurance/training/tasks/addProject.java
@@ -0,0 +1,13 @@
+package com.codurance.training.tasks;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+
+public class addProject implements AddService{
+ @Override
+ public void CRUD(String commandLine, PrintWriter out) {
+ String[] subcommandRest = commandLine.split(" ", 2);
+ String name = subcommandRest[1];
+ TaskList.tasks.put(name, new ArrayList<>());
+ }
+}