Skip to content

Commit c2030dd

Browse files
committed
- Implemented dual input method (beginner and expert) for add event and add goal event command
1 parent 591785e commit c2030dd

File tree

7 files changed

+78
-26
lines changed

7 files changed

+78
-26
lines changed

src/main/java/seedu/duke/Duke.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ private void printHelp() {
5757
"review flashcards",
5858
"help",
5959
"add event",
60+
"add goal event",
6061
"delete event",
6162
"delete all events",
6263
"find event",

src/main/java/seedu/duke/calendar/Calendar.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@@ kherlenbayasgalan & jingxizhu
1+
//@@author Cheezeblokz
22

33
package seedu.duke.calendar;
44

src/main/java/seedu/duke/calendar/CalendarCommandParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ public EventCommand parseInput(String input) {
6666
try {
6767
manageException(input);
6868
if (input.startsWith("add event")) {
69-
return new AddEventCommand();
69+
return new AddEventCommand(input);
7070
} else if (input.startsWith("add goal event")) {
71-
return new AddGoalEventCommand();
71+
return new AddGoalEventCommand(input);
7272
} else if (input.startsWith("delete event")) {
7373
return new DeleteEventCommand();
7474
} else if (input.startsWith("list events")) {

src/main/java/seedu/duke/calendar/Event.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@@author @@kherlenbayasgalan & @@ Jingxizhu
1+
//@@author kherlenbayasgalan & Cheezeblokz
22

33
package seedu.duke.calendar;
44

src/main/java/seedu/duke/calendar/EventList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@@ kherlenbayasgalan
1+
//@@author kherlenbayasgalan
22

33
package seedu.duke.calendar;
44

src/main/java/seedu/duke/calendar/command/AddEventCommand.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,19 @@
1212

1313
import java.util.Scanner;
1414

15-
public class AddEventCommand extends EventCommand {
15+
public class AddEventCommand extends DualEventCommand {
1616

17+
//@@author Cheezeblokz
18+
public AddEventCommand(String input) {
19+
this.input = input;
20+
beginnerCommandLength = 2;
21+
expertCommandLength = 5;
22+
syntaxString = "add event EVENT_NAME EVENT_START_DATE (in format yyyy-mm-ddThh:mm:ss) EVENT_END_DATE (in format yyyy-mm-ddThh:mm:ss)";
23+
}
24+
25+
//@@author kherlenbayasgalan
1726
/**
18-
* The execute method is used to add an event to the calendar. It has two parameters (Scanner, EventList).
27+
* The executeBeginnerMode method is used to add an event to the calendar. It has two parameters (Scanner, EventList).
1928
* The EventList is used to add an event to the list. The scanner is used to get the user's event name input.
2029
* The method first takes the event name, then through parseDateTimeInput, it gets an acceptable date/time
2130
* from the user. If the user inserts acceptable inputs, the event will be added. If the user doesn't,
@@ -24,7 +33,8 @@ public class AddEventCommand extends EventCommand {
2433
* @param eventList is used to add an event to the list.
2534
*/
2635

27-
public void execute(Scanner scanner, EventList eventList) {
36+
@Override
37+
public void executeBeginnerMode(Scanner scanner, EventList eventList) {
2838
System.out.print("What's the event?: ");
2939
String eventName = scanner.nextLine();
3040

@@ -41,6 +51,28 @@ public void execute(Scanner scanner, EventList eventList) {
4151
}
4252
}
4353

54+
//@@author Cheezeblokz
55+
@Override
56+
protected void executeExpertMode(Scanner scanner, EventList eventList) {
57+
String[] commandParts = input.split(" ");
58+
String eventName = commandParts[2];
59+
try {
60+
LocalDateTime startTime = LocalDateTime.parse(commandParts[3]);
61+
LocalDateTime endTime = LocalDateTime.parse(commandParts[4]);
62+
if (endTime.isAfter(startTime)) {
63+
Event event = new Event(eventName, startTime, endTime);
64+
eventList.addEvent(event);
65+
System.out.println(event + " has been added to your Calendar");
66+
} else {
67+
System.out.println(" End time is before or equal to the start time. Please enter the correct end time.");
68+
}
69+
} catch (DateTimeParseException e) {
70+
System.out.println(" Invalid date and time format. Please try again.");
71+
}
72+
}
73+
74+
//@@author kherlenbayasgalan
75+
4476
/**
4577
* The parseDateTimeInput takes two parameters (Scanner , String) and through those parameters
4678
* the method gets user's input. Using exception handling of LocalDateTime, the user checks if the

src/main/java/seedu/duke/calendar/command/AddGoalEventCommand.java

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,61 @@
1+
//@@author Cheezeblokz
12
package seedu.duke.calendar.command;
23

34
import seedu.duke.calendar.Event;
45
import seedu.duke.calendar.EventList;
56
import seedu.duke.calendar.Goal;
67

78
import java.time.LocalDateTime;
8-
import java.time.format.DateTimeFormatter;
99
import java.time.format.DateTimeParseException;
1010
import java.util.Scanner;
1111

12-
public class AddGoalEventCommand extends EventCommand{
12+
public class AddGoalEventCommand extends DualEventCommand{
1313

14-
//@@author kherlenbayasgalan-reused
15-
16-
/**
17-
* The execute method is used to add an event goal to the calendar. It has two parameters (Scanner, EventList).
18-
* The EventList is used to add an event to the list. The scanner is used to get the user's event name input.
19-
* The method first takes the event name, then through parseDateTimeInput, it gets an acceptable date/time
20-
* from the user. If the user inserts acceptable inputs, the event goal will be added. If the user doesn't,
21-
* either one of DateTimeParseException or Invalid input exception.
22-
* @param scanner is used to get user's event name.
23-
* @param eventList is used to add an event to the list.
24-
*/
14+
public AddGoalEventCommand(String input) {
15+
this.input = input;
16+
beginnerCommandLength = 3;
17+
expertCommandLength = 6;
18+
syntaxString = "add goal event GOAL_NAME GOAL_END_DATE (in format yyyy-mm-ddThh:mm:ss) FLASHCARD_GOAL_NUMBER";
19+
}
2520

26-
public void execute(Scanner scanner, EventList eventList) {
21+
@Override
22+
public void executeBeginnerMode(Scanner scanner, EventList eventList) {
2723
System.out.print("What's the goal event name?: ");
2824
String eventName = scanner.nextLine();
2925

30-
// checks if the acceptable format is given by the user to prevent program crash
3126
LocalDateTime endTime = parseDateTimeInput(scanner, "When does it end? (yyyy-MM-ddTHH:mm:ss) (e.g., 2023-12-20T12:30:30): ");
3227
int goal = parseIntegerInput(scanner, "How many flashcard to review by then?: ");
3328

34-
Event event = new Goal(eventName, endTime, goal, 0);
35-
eventList.addEvent(event);
36-
System.out.println(event + " has been added to your Calendar");
29+
if (endTime.isAfter(LocalDateTime.now())) {
30+
Event event = new Goal(eventName, endTime, goal, 0);
31+
eventList.addEvent(event);
32+
System.out.println(event + " has been added to your Calendar");
33+
} else {
34+
System.out.println(" End time is before the current time. Please enter the correct end time.");
35+
}
3736
}
3837

3938
//@@author Cheezeblokz
39+
@Override
40+
protected void executeExpertMode(Scanner scanner, EventList eventList) {
41+
String[] commandParts = input.split(" ");
42+
String eventName = commandParts[3];
43+
try {
44+
LocalDateTime endTime = LocalDateTime.parse(commandParts[4]);
45+
int goal = Integer.parseInt(commandParts[5]);
46+
if (endTime.isAfter(LocalDateTime.now())) {
47+
Event event = new Goal(eventName, endTime, goal, 0);
48+
eventList.addEvent(event);
49+
System.out.println(event + " has been added to your Calendar");
50+
} else {
51+
System.out.println(" End time is before the current time. Please enter the correct end time.");
52+
}
53+
} catch (DateTimeParseException e) {
54+
System.out.println(" Invalid date and time format. Please try again.");
55+
} catch (NumberFormatException e) {
56+
System.out.println(" Invalid integer input. Please try again.");
57+
}
58+
}
4059

4160
private int parseIntegerInput(Scanner scanner, String prompt) {
4261
while (true) {

0 commit comments

Comments
 (0)