Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions src/domain-model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@


# User stories

As a user I want to be able to:
- add tasks to my todo list.
- see all the tasks in my todo list.
- change the status of a task between incomplete and complete.
- to get only the complete tasks.
- to get only the incomplete tasks.
- search for a task and receive a message that says it wasn't found if it doesn't exist.
- remove tasks from my list.
- see all the tasks in my list ordered alphabetically in ascending order.
- see all the tasks in my list ordered alphabetically in descending order.


| Classes | Methods | Scenario | Output |
|----------|--------------------------------------------------------------------------------|-----------------------------------------------|--------------------------------------------|
| ToDoList | void addTask (Map<'String,String> toDoList, String task) | if task not in list | add task to toDoList |
| | | if task already in list | return false |
| | void printTask(Map<'String,String> toDoList) | if toDolist is empty | return false |
| | | if toDoList contains atleast one task | print task(s) in list |
| | void changeStatus(Map<'String,String> toDoList, String task) | if task in toDoList | change status |
| | | if task not in toDoList | return false |
| | List<String'> completeTasks(Map<'String,String> toDoList) | if toDoList contains completed tasks | return completed tasks |
| | | if toDoList does not contain completed tasks | return empty list |
| | List <String'> incompleteTasks(Map<'String,String> toDoList) | if toDoList contains incomplete tasks | return uncompleted tasks |
| | | if toDoList does not contain incomplete tasks | return empty list |
| | String searchTask(Map<'String,String> toDoList, String task) | if task does not exist | "The task was not found" |
| | | if task exist | return false |
| | void removeTask(Map<'String,String> toDoList, String task) | if task is in toDoList | remove task from toDoList |
| | | if task not in toDoList | return false |
| | Map<String,String> ascendingList sortAscending(Map<'String,String> toDoList) | if toDoList not empty | return sorted toDoList in ascending order |
| | | if toDoList is empty | return empty list |
| | Map<String,String> descendingList sortDescending(Map<'String,String> toDoList) | if toDoList not empty | return sorted toDoList in descending order |
| | | if toDoList empty | return empty list |


## User stories
- I want to be able to get a task by a unique ID.
- I want to update the name of a task by providing its ID and a new name.
- I want to be able to change the status of a task by providing its ID.
- I want to be able to see the date and time that I created each task.


| Classes | Methods | Scenario | Output |
|-------------------|--------------------------------------|-------------------------|----------------------|
| TodoListExtension | Task getTask(int id) | if task exist | return Task |
| | | if task not in list | return null |
| | void addTask(Task task) | if task not in list | add task to list |
| | | if task already in list | return false |
| | String getName(int id) | if task in list | return name |
| | | if task not in list | return empty string |
| | boolean changeStatus(id) | if task in list | update status |
| | | if task not in list | return false |
| ----------------- | ------------------------------------ | ----------------------- | -------------------- |
| Task | int getId() | if task exist | return id |
| | | if task not in list | return null |
| | String getName() | if task in list | return name |
| | boolean updateName(String s) | | update name |
| | | | |
| | boolean changeStatus( ) | if task exist | update status |
| | | | |
| | boolean getDate() | if task exist | return date and time |
91 changes: 91 additions & 0 deletions src/main/java/com/booleanuk/core/TodoList.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,96 @@
package com.booleanuk.core;

import java.util.*;

public class TodoList {


public boolean addTask(Map<String,String> toDoList, String task) {
if (!toDoList.containsKey(task)) {
toDoList.put(task, "Incomplete");
return true;
}
return false;
}

public boolean printTask(Map<String,String> toDoList) {
if (!toDoList.isEmpty()){
for(String key : toDoList.keySet()){
System.out.println(key);
}
return true;
}
return false;
}

public Boolean changeStatus(Map<String,String> toDoList, String task) {
if (toDoList.containsKey(task)){
if (Objects.equals(toDoList.get(task), "Completed")){
toDoList.replace(task, "Incomplete");
return true;
} else toDoList.replace(task, "Completed");
return true;
}
return false;
}

public List<String> completeTasks(Map<String,String> toDoList){
List<String> list = new ArrayList<>();
for(String key: toDoList.keySet()){
if(Objects.equals(toDoList.get(key), "Completed")){
list.add(key);
}
}
return list;
}
public List<String> inCompleteTasks(Map<String, String> toDoList) {
List<String> list = new ArrayList<>();
for(String key: toDoList.keySet()){
if(Objects.equals(toDoList.get(key), "Incomplete")){
list.add(key);
}
}
return list;
}


public boolean searchTaskNotFound(Map<String,String> toDoList, String task) {
if (!toDoList.containsKey(task)) {
System.out.println("The task was not found");
return true;
}
return false;
}



public boolean removeTask(Map<String, String> toDoList, String task) {
if (toDoList.containsKey(task)) {
toDoList.remove(task);
return true;
}
return false;
}

public Map<String, String> sortAscending(Map<String, String> toDoList) {
List<String> sortedAscendingList = new ArrayList<>(toDoList.keySet());
Collections.sort(sortedAscendingList);
Map<String, String> sortedAscending = new TreeMap<>();
for(String key : sortedAscendingList){
String value = toDoList.get(key);
sortedAscending.put(key, value);
}
return sortedAscending;

}

public Map<String, String> sortDescending(Map<String, String> toDoList) {
List<String> sortedDescendingList = new ArrayList<>(toDoList.keySet());
Map<String, String> sortedDescending = new TreeMap<>(Comparator.reverseOrder());
for(String key : sortedDescendingList){
String value = toDoList.get(key);
sortedDescending.put(key, value);
}
return sortedDescending;
}
}
44 changes: 44 additions & 0 deletions src/main/java/com/booleanuk/extension/Task.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.booleanuk.extension;

import java.time.LocalDate;
import java.util.Objects;

public class Task {
private static int counter = 0;
public final int id;
private String name;
private String status;
private LocalDate date;

public Task(String name) {
this.id = ++counter;
this.name = name;
this.status = "Incomplete";
this.date = LocalDate.now();
}


public int getId() {
return this.id;
}

public String getName() {
return this.name;
}

public String updateName(String s) {
this.name = s;
return this.name;
}

public boolean changeStatus() {
if(Objects.equals(this.status, "Incomplete")){
this.status = "Completed";
} else this.status = "Incomplete";
return true;
}

public LocalDate getDate() {
return this.date;
}
}
46 changes: 46 additions & 0 deletions src/main/java/com/booleanuk/extension/TodoListExtension.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.booleanuk.extension;

import java.util.ArrayList;
import java.util.List;

public class TodoListExtension {
List<Task> todoList = new ArrayList<>();


public boolean addTask(Task task){
if (!todoList.contains(task)){
todoList.add(task);
return true;
}
return false;

}
public Task getTask(int id){
for(Task task : todoList){
if (task.getId() == id){
return task;
}
}
return null;
}

public String getName(int id) {
for (Task task : todoList) {
if (task.getId() == id) {
return task.getName();
}
} return "";
}

public boolean changeStatus(int id) {
for (Task task : todoList) {
if (task.getId() == id) {
task.changeStatus();
return true;
}
}
return false;
}


}
Loading
Loading