@@ -27,101 +27,100 @@ public void chatDuke() {
2727 boolean saidBye = false ;
2828 while (!saidBye ) {
2929 String command = sc .nextLine ();
30- if (command .equals ("list" )) {
31- this .printCommandList (allTasks );
32- } else if (command .startsWith ("mark" )) {
33- String [] str = command .split (" " );
34- int taskIndex = Integer .parseInt (str [1 ]) - 1 ;
35- Task oldTask = allTasks .get (taskIndex );
36- if (oldTask .getTaskType ().equals ("[T]" )) {
37- Todo todo = new Todo (oldTask .getTaskNumber (),
38- true , oldTask .getTask (),
39- allTasks .size ());
40- allTasks .set (taskIndex , todo );
41- todo .markAsDone ();
42- } else if (oldTask .getTaskType ().equals ("[D]" )) {
43- Deadline deadline = new Deadline (oldTask .getTaskNumber (),
44- true , oldTask .getTask (),
45- oldTask .getDeadline (), allTasks .size ());
46- allTasks .set (taskIndex , deadline );
47- deadline .markAsDone ();
48- } else if (oldTask .getTaskType ().equals ("[E]" )) {
49- Event event = new Event (oldTask .getTaskNumber (),
50- true , oldTask .getTask (),
51- oldTask .getEventStartTime (),
52- oldTask .getEventEndTime (), allTasks .size ());
53- allTasks .set (taskIndex , event );
54- event .markAsDone ();
55- } else {
56- Task task = new Task (oldTask .getTaskNumber (),
57- true , oldTask .getTask (),
58- allTasks .size ());
59- allTasks .set (taskIndex , task );
60- task .markAsDone ();
61- }
62- } else if (command .startsWith ("unmark" )) {
63- String [] str = command .split (" " );
64- int taskIndex = Integer .parseInt (str [1 ]) - 1 ;
65- Task oldTask = allTasks .get (taskIndex );
66- if (oldTask .getTaskType ().equals ("[T]" )) {
67- Todo todo = new Todo (oldTask .getTaskNumber (),
68- false , oldTask .getTask (),
69- allTasks .size ());
70- allTasks .set (taskIndex , todo );
71- todo .markAsDone ();
72- } else if (oldTask .getTaskType ().equals ("[D]" )) {
73- Deadline deadline = new Deadline (oldTask .getTaskNumber (),
74- false , oldTask .getTask (),
75- oldTask .getDeadline (), allTasks .size ());
76- allTasks .set (taskIndex , deadline );
77- deadline .markAsDone ();
78- } else if (oldTask .getTaskType ().equals ("[E]" )) {
79- Event event = new Event (oldTask .getTaskNumber (),
80- false , oldTask .getTask (),
81- oldTask .getEventStartTime (),
82- oldTask .getEventEndTime (), allTasks .size ());
83- allTasks .set (taskIndex , event );
84- event .markAsDone ();
30+
31+ try {
32+ if (command .equals ("list" )) {
33+ this .printCommandList (allTasks );
34+ } else if (command .startsWith ("mark" )) {
35+ missingIndexException (command );
36+ invalidIndexException (command , allTasks .size ());
37+ String [] str = command .split (" " );
38+ int taskIndex = Integer .parseInt (str [1 ]) - 1 ;
39+ Task oldTask = allTasks .get (taskIndex );
40+ if (oldTask .getTaskType ().equals ("[T]" )) {
41+ Todo todo = new Todo (oldTask .getTaskNumber (),
42+ true , oldTask .getTask (),
43+ allTasks .size ());
44+ allTasks .set (taskIndex , todo );
45+ todo .markAsDone ();
46+ } else if (oldTask .getTaskType ().equals ("[D]" )) {
47+ Deadline deadline = new Deadline (oldTask .getTaskNumber (),
48+ true , oldTask .getTask (),
49+ oldTask .getDeadline (), allTasks .size ());
50+ allTasks .set (taskIndex , deadline );
51+ deadline .markAsDone ();
52+ } else if (oldTask .getTaskType ().equals ("[E]" )) {
53+ Event event = new Event (oldTask .getTaskNumber (),
54+ true , oldTask .getTask (),
55+ oldTask .getEventStartTime (),
56+ oldTask .getEventEndTime (), allTasks .size ());
57+ allTasks .set (taskIndex , event );
58+ event .markAsDone ();
59+ }
60+ } else if (command .startsWith ("unmark" )) {
61+ missingIndexException (command );
62+ invalidIndexException (command , allTasks .size ());
63+ String [] str = command .split (" " );
64+ int taskIndex = Integer .parseInt (str [1 ]) - 1 ;
65+ Task oldTask = allTasks .get (taskIndex );
66+ if (oldTask .getTaskType ().equals ("[T]" )) {
67+ Todo todo = new Todo (oldTask .getTaskNumber (),
68+ false , oldTask .getTask (),
69+ allTasks .size ());
70+ allTasks .set (taskIndex , todo );
71+ todo .unmarkAsUndone ();
72+ } else if (oldTask .getTaskType ().equals ("[D]" )) {
73+ Deadline deadline = new Deadline (oldTask .getTaskNumber (),
74+ false , oldTask .getTask (),
75+ oldTask .getDeadline (), allTasks .size ());
76+ allTasks .set (taskIndex , deadline );
77+ deadline .unmarkAsUndone ();
78+ } else if (oldTask .getTaskType ().equals ("[E]" )) {
79+ Event event = new Event (oldTask .getTaskNumber (),
80+ false , oldTask .getTask (),
81+ oldTask .getEventStartTime (),
82+ oldTask .getEventEndTime (), allTasks .size ());
83+ allTasks .set (taskIndex , event );
84+ event .unmarkAsUndone ();
85+ }
86+ } else if (command .startsWith ("todo" )) {
87+ emptyCommandException (command );
88+ String [] str = command .split ("todo" );
89+ String taskName = str [1 ];
90+ Todo todo = new Todo (allTasks .size (), false ,
91+ taskName , allTasks .size () + 1 );
92+ allTasks .add (todo );
93+ todo .printToDoTask ();
94+ } else if (command .startsWith ("deadline" )) {
95+ emptyCommandException (command );
96+ missingTimingException (command );
97+ String [] str = command .split ("/by" );
98+ String taskName = str [0 ].split ("deadline" )[1 ];
99+ String taskDeadline = str [1 ];
100+ Deadline deadline = new Deadline (allTasks .size (), false ,
101+ taskName , taskDeadline , allTasks .size () + 1 );
102+ allTasks .add (deadline );
103+ deadline .printDeadlineTask ();
104+ } else if (command .startsWith ("event" )) {
105+ emptyCommandException (command );
106+ missingTimingException (command );
107+ String [] str = command .split ("/from" );
108+ String taskName = str [0 ].split ("event" )[1 ];
109+ String [] eventStartEndTime = str [1 ].split ("/to" );
110+ String eventStartTime = eventStartEndTime [0 ];
111+ String eventEndTime = eventStartEndTime [1 ];
112+ Event event = new Event (allTasks .size (), false ,
113+ taskName , eventStartTime , eventEndTime , allTasks .size () + 1 );
114+ allTasks .add (event );
115+ event .printEventTask ();
116+ } else if (command .equals ("bye" )){
117+ saidBye = true ;
118+ this .printByeMessage ();
85119 } else {
86- Task task = new Task (oldTask .getTaskNumber (),
87- false , oldTask .getTask (),
88- allTasks .size ());
89- allTasks .set (taskIndex , task );
90- task .markAsDone ();
120+ invalidCommandException (command );
91121 }
92- } else if (command .startsWith ("todo" )) {
93- String [] str = command .split ("todo" );
94- String taskName = str [1 ];
95- Todo todo = new Todo (allTasks .size (), false ,
96- taskName , allTasks .size () + 1 );
97- allTasks .add (todo );
98- todo .printToDoTask ();
99- } else if (command .startsWith ("deadline" )) {
100- String [] str = command .split ("/by" );
101- String taskName = str [0 ].split ("deadline" )[1 ];
102- String taskDeadline = str [1 ];
103- Deadline deadline = new Deadline (allTasks .size (), false ,
104- taskName , taskDeadline , allTasks .size () + 1 );
105- allTasks .add (deadline );
106- deadline .printDeadlineTask ();
107- } else if (command .startsWith ("event" )) {
108- String [] str = command .split ("/from" );
109- String taskName = str [0 ].split ("event" )[1 ];
110- String [] eventStartEndTime = str [1 ].split ("/to" );
111- String eventStartTime = eventStartEndTime [0 ];
112- String eventEndTime = eventStartEndTime [1 ];
113- Event event = new Event (allTasks .size (), false ,
114- taskName , eventStartTime , eventEndTime , allTasks .size () + 1 );
115- allTasks .add (event );
116- event .printEventTask ();
117- } else if (!command .equals ("bye" )) {
118- this .echoCommand (command );
119- Task task = new Task (allTasks .size (), false ,
120- command , allTasks .size ());
121- allTasks .add (task );
122- } else {
123- saidBye = true ;
124- this .printByeMessage ();
122+ } catch (DukeException d ) {
123+ System .out .println (d .getMessage ());
125124 }
126125 }
127126 }
@@ -166,4 +165,80 @@ public void printByeMessage() {
166165 "\n \t ____________________________________________________________" );
167166 }
168167
168+ public void emptyCommandException (String command ) throws DukeException {
169+ switch (command ) {
170+ case "todo" :
171+ throw new DukeException ("\t ____________________________________________________________" +
172+ "\n \t ☹ OOPS!!! The description of a todo cannot be empty." +
173+ "\n \t ____________________________________________________________" );
174+ case "deadline" :
175+ throw new DukeException ("\t ____________________________________________________________" +
176+ "\n \t ☹ OOPS!!! The description of a deadline cannot be empty." +
177+ "\n \t ____________________________________________________________" );
178+ case "event" :
179+ throw new DukeException ("\t ____________________________________________________________" +
180+ "\n \t ☹ OOPS!!! The description of an event cannot be empty." +
181+ "\n \t ____________________________________________________________" );
182+ }
183+ }
184+
185+ public void missingTimingException (String command ) throws DukeException {
186+ if (command .startsWith ("deadline" ) && !command .contains ("/by" )) {
187+ throw new DukeException ("\t ____________________________________________________________" +
188+ "\n \t ☹ OOPS!!! The timing of a deadline cannot be empty." +
189+ "\n \t ____________________________________________________________" );
190+ } else if (command .startsWith ("event" ) && !command .contains ("/from" )) {
191+ throw new DukeException ("\t ____________________________________________________________" +
192+ "\n \t ☹ OOPS!!! The start time of an event cannot be empty." +
193+ "\n \t ____________________________________________________________" );
194+ } else if (command .startsWith ("event" ) && !command .contains ("/to" )) {
195+ throw new DukeException ("\t ____________________________________________________________" +
196+ "\n \t ☹ OOPS!!! The end time of an event cannot be empty." +
197+ "\n \t ____________________________________________________________" );
198+ }
199+ }
200+
201+ public void missingIndexException (String command ) throws DukeException {
202+ if (command .equals ("mark" )) {
203+ throw new DukeException ("\t ____________________________________________________________" +
204+ "\n \t ☹ OOPS!!! The task index to mark a task as done cannot be empty." +
205+ "\n \t ____________________________________________________________" );
206+ } else if (command .equals ("unmark" )) {
207+ throw new DukeException ("\t ____________________________________________________________" +
208+ "\n \t ☹ OOPS!!! The task index to unmark a task as not done cannot be empty." +
209+ "\n \t ____________________________________________________________" );
210+ }
211+ }
212+
213+ public void invalidIndexException (String command , int taskSize ) throws DukeException {
214+ if (command .startsWith ("mark" ) || command .startsWith ("unmark" )) {
215+ String index = command .split (" " )[1 ];
216+ int index1 = Integer .parseInt (index );
217+ if (index1 <= 0 ) {
218+ throw new DukeException ("\t ____________________________________________________________" +
219+ "\n \t ☹ OOPS!!! The task index to mark a task as done cannot be zero or less." +
220+ "\n \t ____________________________________________________________" );
221+ } else if (index .equals ("" )) {
222+ throw new DukeException ("\t ____________________________________________________________" +
223+ "\n \t ☹ OOPS!!! The task index to mark a task as done cannot be empty." +
224+ "\n \t ____________________________________________________________" );
225+ } else if (index1 > taskSize ) {
226+ throw new DukeException ("\t ____________________________________________________________" +
227+ "\n \t ☹ OOPS!!! The task index to mark a task as done cannot be more than" +
228+ " number of tasks." +
229+ "\n \t ____________________________________________________________" );
230+ }
231+ }
232+ }
233+
234+ public void invalidCommandException (String command ) throws DukeException {
235+ if (!command .startsWith ("event" ) || !(command .startsWith ("deadline" )) ||
236+ !command .startsWith ("todo" ) || command .startsWith ("mark" ) ||
237+ !command .startsWith ("unmark" )) {
238+ throw new DukeException ("\t ____________________________________________________________" +
239+ "\n \t ☹ OOPS!!! I'm sorry, but I don't know what that means :-(" +
240+ "\n \t ____________________________________________________________" );
241+ }
242+ }
243+
169244}
0 commit comments