1313
1414public class List {
1515
16- private final ArrayList <Task > taskList ;
16+ final int COMMANDIDX = 0 ;
17+ private ArrayList <Task > taskList ;
1718
1819 public int totalTasks ;
1920 public List () {
2021 taskList = new ArrayList <>();
2122 totalTasks = 0 ;
2223 }
24+
2325 /**
2426 * Returns boolean value base on whether the input matches one of the commands.
2527 *
@@ -30,14 +32,15 @@ public List() {
3032 */
3133 public boolean isValidCommand (String [] textArray ) {
3234 boolean isValid = true ;
35+ int idx = 0 ;
3336 try {
34- String command = textArray [0 ];
37+ String command = textArray [COMMANDIDX ];
3538 switch (command ) {
3639 case "mark" :
3740 // fallthrough
3841 case "unmark" :
39- int idx = Integer . parseInt (textArray [ 1 ]) - 1 ;
40- getMark (idx , command );
42+ idx = getIdx (textArray ) ;
43+ markTask (idx , command );
4144 break ;
4245 case "todo" :
4346 addTodo (textArray );
@@ -48,16 +51,52 @@ public boolean isValidCommand(String[] textArray) {
4851 case "event" :
4952 addEvent (textArray );
5053 break ;
54+ case "delete" :
55+ idx = getIdx (textArray );
56+ deleteTask (idx );
57+ break ;
5158 default :
5259 isValid = false ;
5360 break ;
5461 }
5562 return isValid ;
5663 } catch (ArrayIndexOutOfBoundsException e ) {
5764 printEmptyDescription ();
58- return isValid ;
65+ return false ;
66+ }
67+ }
68+
69+ public void addFromSaveFile (char tde , char mark , String task ) {
70+ Task currTask = new Task (task , tde );
71+ if (mark == 'X' ) {
72+ currTask .markDone ();
5973 }
74+ taskList .add (currTask );
75+ }
76+
77+ private static int getIdx (String [] textArray ) {
78+ StringBuilder idx = new StringBuilder ();
79+ for (int i = 1 ; i < textArray .length ; i ++) {
80+ idx .append (textArray [i ]);
81+ }
82+ return Integer .parseInt (idx .toString ()) - 1 ;
83+ }
6084
85+ private void deleteTask (int idx ) {
86+ try {
87+ if (idx < 0 || idx >= totalTasks ) {
88+ throw new BurgerException ();
89+ }
90+ System .out .println ("Noted. I've removed this task:" );
91+ taskList .get (idx ).printTask ();
92+ taskList .remove (idx );
93+ totalTasks --;
94+ System .out .println ();
95+ printTotalTasks ();
96+ printLine ();
97+ } catch (BurgerException e ) {
98+ printOutOfIndexMessage ();
99+ }
61100 }
62101
63102 /**
@@ -75,6 +114,7 @@ public Task getTask(int idx) {
75114 return null ;
76115 }
77116 }
117+
78118 /**
79119 * Adds a new todo to the list.
80120 *
@@ -99,20 +139,20 @@ public void addEvent(String[] event) {
99139 try {
100140 StringBuilder eventText = new StringBuilder (event [1 ]);
101141 int i = 2 ;
102- while (!event [i ].startsWith ("/from" )) {
142+ while (!event [i ].startsWith ("/from" )) { // appends the name of event task
103143 eventText .append (' ' ).append (event [i ]);
104144 i ++;
105145 }
106146 eventText .append (' ' ).append ("(from: " );
107147 i ++;
108148 while (!event [i ].startsWith ("/to" )) {
109- eventText .append (event [i ]).append (' ' );
149+ eventText .append (event [i ]).append (' ' ); // appends the "from" timing
110150 i ++;
111151 }
112152 eventText .append ("to: " );
113153 i ++;
114154 while (i < event .length - 1 ) {
115- eventText .append (event [i ]).append (' ' );
155+ eventText .append (event [i ]).append (' ' ); // appends the "to" timing
116156 i ++;
117157 }
118158 eventText .append (event [i ]).append (')' );
@@ -133,14 +173,14 @@ public void addDeadline(String[] deadline) {
133173 try {
134174 StringBuilder deadlineText = new StringBuilder (deadline [1 ]);
135175 int i = 2 ;
136- while (!deadline [i ].startsWith ("/" )) {
176+ while (!deadline [i ].startsWith ("/" )) { // appends the name of deadline task
137177 deadlineText .append (' ' ).append (deadline [i ]);
138178 i ++;
139179 }
140180 deadlineText .append (' ' ).append ("(by: " );
141181 i ++;
142182 while (i < deadline .length - 1 ) {
143- deadlineText .append (deadline [i ]).append (' ' );
183+ deadlineText .append (deadline [i ]).append (' ' ); // appends the "by" timing
144184 i ++;
145185 }
146186 deadlineText .append (deadline [i ]).append (')' );
@@ -163,17 +203,22 @@ public void addTask(Task task) {
163203 this .taskList .get (totalTasks ).printTask ();
164204 this .totalTasks ++;
165205 System .out .println ();
166- System . out . println ( "Now you have " + totalTasks + " tasks in the list." );
206+ printTotalTasks ( );
167207 printLine ();
168208 }
209+
210+ private void printTotalTasks () {
211+ System .out .println ("Now you have " + totalTasks + " tasks in the list." );
212+ }
213+
169214 /**
170215 * Returns the mark from a task in the list.
171216 *
172217 * @param idx the index of the task.
173218 * @param command Command to "mark" or "unmark" the task.
174219 * @throws BurgerException if index input is out of the range of list of tasks.
175220 */
176- public void getMark (int idx , String command ) {
221+ public void markTask (int idx , String command ) {
177222 try {
178223 Task currTask = getTask (idx );
179224 if (currTask == null ) {
@@ -208,12 +253,13 @@ public void printTaskWithLine(int idx) {
208253 * Prints task list.
209254 */
210255 public void printTaskList () {
211- printLine ();
212- System .out .println ("Here are the tasks in your list:" );
213256 if (taskList .isEmpty ()) {
214257 System .out .println ("Don't be lazy... start doing something" );
258+ printLine ();
259+ return ;
215260 }
216- for (int i = 0 ; i < taskList .size (); i ++) {
261+ System .out .println ("These are the tasks in your save file:" );
262+ for (int i = 0 ; i < totalTasks ; i ++) {
217263 System .out .print (i +1 + ". " );
218264 taskList .get (i ).printTask ();
219265 System .out .println ();
0 commit comments