Skip to content

Commit 37754d1

Browse files
weixue123weixue123
authored andcommitted
Added task loading and saving functionality (Level-7)
1 parent 5740a19 commit 37754d1

7 files changed

Lines changed: 113 additions & 4 deletions

File tree

data/duke.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
T | 1 | CS2107 Revision |
2+
D | 1 | CS2103 Post-Lecture Quiz | 5 Feb 2021 2:00 AM
3+
E | 0 | BT4013 Nano-Quiz 4 | 8 Feb 2021 10:00 AM to 10:30 AM

src/main/java/Duke.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ public static void main(String[] args) {
77
System.out.println("Hello! I'm Duke");
88
System.out.println("What can I do for you?");
99

10-
boolean appIsRunning = true;
1110
Scanner sc = new Scanner(System.in);
12-
TaskList tasks = new TaskList();
11+
Loader loader = new Loader();
12+
TaskCollection tasks = loader.loadTasks();
13+
14+
boolean appIsRunning = true;
1315

1416
while (appIsRunning) {
1517
InputHandler handler = new InputHandler(sc.nextLine());
@@ -27,6 +29,7 @@ public static void main(String[] args) {
2729
case "bye":
2830
System.out.println("Bye. Hope to see you again soon!");
2931
appIsRunning = false;
32+
loader.saveTasks(tasks);
3033
break;
3134

3235
case "list":

src/main/java/Loader.java

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import Tasks.*;
2+
3+
import java.io.File;
4+
import java.io.FileNotFoundException;
5+
import java.io.FileWriter;
6+
import java.io.IOException;
7+
import java.util.Scanner;
8+
9+
public class Loader {
10+
private final String path = "data/duke.txt";
11+
12+
public TaskCollection loadTasks() {
13+
TaskCollection tasks = new TaskCollection();
14+
File file = new File(this.path);
15+
16+
try {
17+
Scanner sc = new Scanner(file);
18+
while (sc.hasNextLine()) {
19+
String taskDetails = sc.nextLine();
20+
Task newTask = createTask(taskDetails);
21+
tasks.addTask(newTask);
22+
}
23+
return tasks;
24+
} catch (FileNotFoundException e) {
25+
return tasks;
26+
}
27+
}
28+
29+
public void saveTasks(TaskCollection tasks) {
30+
try {
31+
FileWriter writer = new FileWriter(this.path);
32+
33+
for (Task task : tasks.getListOfTasks()) {
34+
writer.write(convertToSavableString(task));
35+
}
36+
37+
writer.close();
38+
39+
} catch (IOException e) {
40+
e.printStackTrace();
41+
}
42+
43+
}
44+
45+
private Task createTask(String taskDetails) {
46+
String[] taskDetailsArray = taskDetails.split("\\|", 4);
47+
String taskType = taskDetailsArray[0].trim();
48+
String done = taskDetailsArray[1].trim();
49+
String description = taskDetailsArray[2].trim();
50+
String time = taskDetailsArray[3].trim();
51+
52+
Task newTask;
53+
if (taskType.equals("T")) {
54+
newTask = new ToDo(description);
55+
} else if (taskType.equals("D")) {
56+
newTask = new Deadline(description, time);
57+
} else {
58+
newTask = new Event(description, time);
59+
}
60+
61+
if (done.equals("1")) {
62+
newTask.markAsDone();
63+
}
64+
65+
return newTask;
66+
}
67+
68+
private String convertToSavableString(Task task) {
69+
String time = "";
70+
String taskType;
71+
72+
if (task instanceof Deadline) {
73+
taskType = "D";
74+
time = ((Deadline) task).getBy();
75+
} else if (task instanceof Event) {
76+
taskType = "E";
77+
time = ((Event) task).getAt();
78+
} else {
79+
taskType = "T";
80+
}
81+
82+
String done = task.isDone() ? "1" : "0";
83+
String description = task.getDescription();
84+
85+
return taskType + " | " + done + " | " + description + " | " + time + "\n";
86+
}
87+
}
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33

44
import java.util.ArrayList;
55

6-
public class TaskList {
6+
public class TaskCollection {
77
private final ArrayList<Task> tasks;
88

9-
public TaskList() {
9+
public TaskCollection() {
1010
tasks = new ArrayList<>();
1111
}
1212

13+
public ArrayList<Task> getListOfTasks() {
14+
return this.tasks;
15+
}
16+
1317
public void addTask(Task task) {
1418
this.tasks.add(task);
1519
}

src/main/java/Tasks/Deadline.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ private String getByString() {
1212
return "(by: " + this.by + ")";
1313
}
1414

15+
public String getBy() {
16+
return this.by;
17+
}
18+
1519
public String getStatusString() {
1620
return "[D]" + super.getStatusString() + " " + this.getByString();
1721
}

src/main/java/Tasks/Event.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ private String getAtString() {
1212
return "(at: " + this.at + ")";
1313
}
1414

15+
public String getAt() {
16+
return this.at;
17+
}
18+
1519
public String getStatusString() {
1620
return "[E]" + super.getStatusString() + " " + this.getAtString();
1721
}

src/main/java/Tasks/Task.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ public void markAsDone() {
1313
this.isDone = true;
1414
}
1515

16+
public boolean isDone() {
17+
return this.isDone;
18+
}
19+
1620
private String getStatusIcon() {
1721
return this.isDone ? "X" : " ";
1822
}

0 commit comments

Comments
 (0)