1+ import java .io .*;
12import java .util .Scanner ;
23import java .util .ArrayList ;
34import java .util .List ;
@@ -6,7 +7,7 @@ public class Duke {
67
78 Scanner sc = new Scanner (System .in );
89
9- public static void main (String [] args ) {
10+ public static void main (String [] args ) throws DukeException , IOException {
1011 String logo = " ____ _ \n "
1112 + "| _ \\ _ _| | _____ \n "
1213 + "| | | | | | | |/ / _ \\ \n "
@@ -18,16 +19,16 @@ public static void main(String[] args) {
1819 duke .chatDuke ();
1920 }
2021
21- public void chatDuke () {
22+ public void chatDuke () throws IOException {
2223
23- List <Task > allTasks = new ArrayList <>();
24+ Save save = new Save ();
25+ List <Task > allTasks = save .loadTxtFile ();
2426
2527 this .printGreetingMessage ();
2628
2729 boolean saidBye = false ;
2830 while (!saidBye ) {
2931 String command = sc .nextLine ();
30-
3132 try {
3233 if (command .equals ("list" )) {
3334 this .printCommandList (allTasks );
@@ -43,21 +44,24 @@ public void chatDuke() {
4344 allTasks .size ());
4445 allTasks .set (taskIndex , todo );
4546 todo .markAsDone ();
47+ save .saveListToFile (command , todo , allTasks );
4648 } else if (oldTask .getTaskType ().equals ("[D]" )) {
4749 Deadline deadline = new Deadline (oldTask .getTaskNumber (),
4850 true , oldTask .getTask (),
4951 oldTask .getDeadline (), allTasks .size ());
5052 allTasks .set (taskIndex , deadline );
5153 deadline .markAsDone ();
54+ save .saveListToFile (command , deadline , allTasks );
5255 } else if (oldTask .getTaskType ().equals ("[E]" )) {
5356 Event event = new Event (oldTask .getTaskNumber (),
5457 true , oldTask .getTask (),
5558 oldTask .getEventStartTime (),
5659 oldTask .getEventEndTime (), allTasks .size ());
5760 allTasks .set (taskIndex , event );
5861 event .markAsDone ();
62+ save .saveListToFile (command , event , allTasks );
5963 }
60- } else if (command .startsWith ("unmark" )) {
64+ }else if (command .startsWith ("unmark" )) {
6165 missingIndexException (command );
6266 invalidIndexException (command , allTasks .size ());
6367 String [] str = command .split (" " );
@@ -69,19 +73,22 @@ public void chatDuke() {
6973 allTasks .size ());
7074 allTasks .set (taskIndex , todo );
7175 todo .unmarkAsUndone ();
76+ save .saveListToFile (command , todo , allTasks );
7277 } else if (oldTask .getTaskType ().equals ("[D]" )) {
7378 Deadline deadline = new Deadline (oldTask .getTaskNumber (),
7479 false , oldTask .getTask (),
7580 oldTask .getDeadline (), allTasks .size ());
7681 allTasks .set (taskIndex , deadline );
7782 deadline .unmarkAsUndone ();
83+ save .saveListToFile (command , deadline , allTasks );
7884 } else if (oldTask .getTaskType ().equals ("[E]" )) {
7985 Event event = new Event (oldTask .getTaskNumber (),
8086 false , oldTask .getTask (),
8187 oldTask .getEventStartTime (),
8288 oldTask .getEventEndTime (), allTasks .size ());
8389 allTasks .set (taskIndex , event );
8490 event .unmarkAsUndone ();
91+ save .saveListToFile (command , event , allTasks );
8592 }
8693 } else if (command .startsWith ("todo" )) {
8794 emptyCommandException (command );
@@ -91,6 +98,7 @@ public void chatDuke() {
9198 taskName , allTasks .size () + 1 );
9299 allTasks .add (todo );
93100 todo .printToDoTask ();
101+ save .saveListToFile (command , todo , allTasks );
94102 } else if (command .startsWith ("deadline" )) {
95103 emptyCommandException (command );
96104 missingTimingException (command );
@@ -101,6 +109,7 @@ public void chatDuke() {
101109 taskName , taskDeadline , allTasks .size () + 1 );
102110 allTasks .add (deadline );
103111 deadline .printDeadlineTask ();
112+ save .saveListToFile (command , deadline , allTasks );
104113 } else if (command .startsWith ("event" )) {
105114 emptyCommandException (command );
106115 missingTimingException (command );
@@ -113,14 +122,16 @@ public void chatDuke() {
113122 taskName , eventStartTime , eventEndTime , allTasks .size () + 1 );
114123 allTasks .add (event );
115124 event .printEventTask ();
125+ save .saveListToFile (command , event , allTasks );
116126 } else if (command .startsWith ("delete" )) {
117127 missingIndexException (command );
118128 invalidIndexException (command , allTasks .size ());
119129 String [] str = command .split (" " );
120130 int taskIndex = Integer .parseInt (str [1 ]) - 1 ;
121131 Task task = allTasks .get (taskIndex );
122- task .printDelete ();
132+ task .printDelete (allTasks );
123133 allTasks .remove (taskIndex );
134+ save .saveListToFile (command , task , allTasks );
124135 } else if (command .equals ("bye" )){
125136 saidBye = true ;
126137 this .printByeMessage ();
@@ -133,6 +144,8 @@ public void chatDuke() {
133144 System .out .println ("\t ____________________________________________________________" +
134145 "\n \t ☹ OOPS!!! The task index to delete or un/mark a task cannot be a non-integer." +
135146 "\n \t ____________________________________________________________" );
147+ } catch (IOException e ) {
148+ throw new RuntimeException (e );
136149 }
137150 }
138151 }
@@ -205,18 +218,19 @@ public void missingTimingException(String command) throws DukeException {
205218 }
206219
207220 public void missingIndexException (String command ) throws DukeException {
208- if (command .equals ("mark" )) {
209- throw new DukeException ("\t ____________________________________________________________" +
210- "\n \t ☹ OOPS!!! The task index to mark a task as done cannot be empty." +
211- "\n \t ____________________________________________________________" );
212- } else if (command .equals ("unmark" )) {
213- throw new DukeException ("\t ____________________________________________________________" +
214- "\n \t ☹ OOPS!!! The task index to unmark a task as not done cannot be empty." +
215- "\n \t ____________________________________________________________" );
216- } else if (command .equals ("delete" )) {
217- throw new DukeException ("\t ____________________________________________________________" +
218- "\n \t ☹ OOPS!!! The task index to delete a task as not done cannot be empty." +
219- "\n \t ____________________________________________________________" );
221+ switch (command ) {
222+ case "mark" :
223+ throw new DukeException ("\t ____________________________________________________________" +
224+ "\n \t ☹ OOPS!!! The task index to mark a task as done cannot be empty." +
225+ "\n \t ____________________________________________________________" );
226+ case "unmark" :
227+ throw new DukeException ("\t ____________________________________________________________" +
228+ "\n \t ☹ OOPS!!! The task index to unmark a task as not done cannot be empty." +
229+ "\n \t ____________________________________________________________" );
230+ case "delete" :
231+ throw new DukeException ("\t ____________________________________________________________" +
232+ "\n \t ☹ OOPS!!! The task index to delete a task as not done cannot be empty." +
233+ "\n \t ____________________________________________________________" );
220234 }
221235 }
222236
0 commit comments