Skip to content

Commit d25b22a

Browse files
committed
level-7
1 parent 7f66def commit d25b22a

File tree

7 files changed

+111
-13
lines changed

7 files changed

+111
-13
lines changed

data/duke.txt.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
T | 1 | read book
2+
D | 0 | return book | June 6th
3+
E | 0 | project meeting | Aug 6th 2-4pm
4+
T | 1 | join sports club

src/main/java/Deadline.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ public class Deadline extends Task {
22

33
protected String by;
44

5-
public Deadline(String description, String by) {
6-
super(description);
5+
public Deadline(String description, boolean isDone, String by) {
6+
super(description, isDone);
77
this.by = by;
88
}
99

10+
public String getDate(){
11+
return this.by;
12+
}
1013
@Override
1114
public String toString() {
1215
return "[D]" + super.toString() + " (by: " + by + ")";

src/main/java/Duke.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
import java.io.FileNotFoundException;
12
import java.util.Scanner;
23
import java.util.ArrayList;
4+
import java.io.IOException;
5+
36

47
public class Duke {
5-
public static void main(String[] args) {
8+
public void run() throws IOException {
69
Scanner sc = new Scanner(System.in);
710
System.out.println("Hello! I'm Duke\n"+"What can I do for you?");
8-
ArrayList<Task> listOfItems = new ArrayList<Task>();
11+
ArrayList<Task> listOfItems = FileReader.loadTaskFromFile();
912
String echo= sc.nextLine();
1013
while(!echo.equals("bye")) {
1114
try {
@@ -34,7 +37,7 @@ else if (tempArray[0].equals("done")) {
3437
if(tempArray.length == 1) {
3538
throw new InvalidTodoException();
3639
}
37-
Todo newTodo = new Todo(echo.substring(5));
40+
Todo newTodo = new Todo(echo.substring(5), false);
3841
listOfItems.add(newTodo);
3942
System.out.println("Got it. I've added this task:\n" + newTodo.toString() +
4043
"\nNow you have " + listOfItems.size() + " tasks in total");
@@ -45,7 +48,7 @@ else if (tempArray[0].equals("deadline")) {
4548
throw new InvalidDeadlineException();
4649
}
4750
String[] tempString = echo.substring(9).split(" /by");
48-
Deadline newDeadline = new Deadline(tempString[0], tempString[1]);
51+
Deadline newDeadline = new Deadline(tempString[0], false, tempString[1]);
4952
listOfItems.add(newDeadline);
5053
System.out.println("Got it. I've added this task:\n" + newDeadline.toString()
5154
+ "\nNow you have " + listOfItems.size() + " tasks in total");
@@ -56,7 +59,7 @@ else if (tempArray[0].equals("event")) {
5659
throw new InvalidEventException();
5760
}
5861
String[] tempString = echo.substring(7).split(" /at");
59-
Event newEvent = new Event(tempString[0], tempString[1]);
62+
Event newEvent = new Event(tempString[0], false, tempString[1]);
6063
listOfItems.add(newEvent);
6164
System.out.println("Got it. I've added this task:\n" + newEvent.toString()
6265
+ "\nNow you have " + listOfItems.size() + " tasks in total");
@@ -71,6 +74,16 @@ else if (tempArray[0].equals("event")) {
7174
}
7275
echo = sc.nextLine();
7376
}
77+
FileReader.writeToFile(listOfItems);
7478
System.out.println("Bye. Hope to see you again soon!");
7579
}
80+
81+
public static void main(String[] args){
82+
try {
83+
Duke duke = new Duke();
84+
duke.run();
85+
} catch (IOException e){
86+
System.out.println(e);
87+
}
88+
}
7689
}

src/main/java/Event.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ public class Event extends Task {
22

33
protected String at;
44

5-
public Event(String description, String at) {
6-
super(description);
5+
public Event(String description, boolean isDone, String at) {
6+
super(description, isDone);
77
this.at = at;
88
}
9-
9+
public String getTime(){
10+
return this.at;
11+
}
1012
@Override
1113
public String toString() {
1214
return "[E]" + super.toString() + " (at: " + at + ")";

src/main/java/FileReader.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import java.util.ArrayList;
2+
import java.util.Scanner;
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.io.FileWriter;
6+
7+
public class FileReader {
8+
9+
public static ArrayList<Task> loadTaskFromFile() throws IOException {
10+
File f = new File("data/duke.txt");
11+
f.createNewFile();
12+
Scanner sc = new Scanner(f);
13+
ArrayList<Task> listOfTask = new ArrayList<>();
14+
while (sc.hasNext()) {
15+
String[] task = sc.nextLine().split("|");
16+
String type = task[0];
17+
boolean isDone = Integer.parseInt(task[1]) == 1;
18+
String description = task[2];
19+
20+
if(type.equals("T")) {
21+
listOfTask.add(new Todo(description, isDone));
22+
}
23+
24+
if(type.equals("D")) {
25+
String date = task[3];
26+
listOfTask.add(new Deadline(description, isDone, date));
27+
}
28+
29+
if(type.equals("E")) {
30+
String time = task[3];
31+
listOfTask.add(new Event(description, isDone, time));
32+
}
33+
}
34+
35+
return listOfTask;
36+
}
37+
38+
public static void writeToFile(ArrayList<Task> taskList) throws IOException {
39+
FileWriter fw = new FileWriter("data/duke.txt");
40+
String stringToAppend = "";
41+
42+
for (Task currentTask : taskList) {
43+
String currentLine = "";
44+
String isTaskDone = currentTask.checkDone() ? "1" : "0";
45+
String description = currentTask.getDescription();
46+
if (currentTask instanceof Todo) {
47+
currentLine += "T" + "|" + isTaskDone + "|" + description;
48+
}
49+
50+
if (currentTask instanceof Deadline) {
51+
currentLine += "D" + isTaskDone + "|" + description + "|" + ((Deadline) currentTask).getDate();
52+
}
53+
54+
if (currentTask instanceof Event) {
55+
currentLine += "E" + isTaskDone + "|" + description + "|" + ((Event) currentTask).getTime();
56+
}
57+
58+
stringToAppend += currentLine + "\n";
59+
60+
}
61+
fw.write(stringToAppend);
62+
fw.close();
63+
}
64+
}

src/main/java/Task.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,23 @@ public Task(String description) {
77
this.isDone = false;
88
}
99

10+
public Task(String description, boolean isDone) {
11+
this.description = description;
12+
this.isDone = isDone;
13+
}
14+
1015
public String getStatusIcon() {
1116
return (isDone ? "\u2713" : "\u2718"); //return tick or X symbols
1217
}
1318

19+
public String getDescription(){
20+
return this.description;
21+
}
22+
23+
public boolean checkDone(){
24+
return this.isDone;
25+
}
26+
1427
public void markDone(){
1528
this.isDone = true;
1629
}

src/main/java/Todo.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
public class Todo extends Task {
2-
3-
public Todo(String description) {
4-
super(description);
2+
public Todo(String description, boolean isDone) {
3+
super(description, isDone);
54
}
65

76
@Override

0 commit comments

Comments
 (0)