diff --git a/omni.txt b/omni.txt index 150bf0a189..e69de29bb2 100644 --- a/omni.txt +++ b/omni.txt @@ -1,6 +0,0 @@ -general / 1 / germany / 2019-12-12 / now / -food / 0 / mala / 2023-12-12 / now / -accommodation / 0 / hotel / 2023-12-12 / now / -landmark / 0 / statue of liberty / 2023-12-12 / now / -general / 0 / darone mum / 2023-12-12 / now / hello -general / 0 / paris / 2023-12-12 / 2 weeks / hello world diff --git a/src/main/java/seedu/duke/Accommodation.java b/src/main/java/seedu/duke/Accommodation.java index 75e91d8c4a..73fca31c5f 100644 --- a/src/main/java/seedu/duke/Accommodation.java +++ b/src/main/java/seedu/duke/Accommodation.java @@ -6,8 +6,8 @@ public class Accommodation extends TravelActivity { private LocalDate date; private String duration; - public Accommodation(String line, LocalDate date, String duration, String tag){ - super(line, date, duration, tag); + public Accommodation(String line, LocalDate date, String duration, String tag, String expense){ + super(line, date, duration, tag, expense); } @Override diff --git a/src/main/java/seedu/duke/FileSave.java b/src/main/java/seedu/duke/FileSave.java index 1b4142f30f..160ad11b69 100644 --- a/src/main/java/seedu/duke/FileSave.java +++ b/src/main/java/seedu/duke/FileSave.java @@ -26,19 +26,20 @@ public void loadFileContents(TravelActivityList list) throws FileNotFoundExcepti LocalDate date = LocalDate.parse(line[3]); String duration = line[4]; String tag = (line.length == 6) ? line[5].trim() : ""; + String expense = (line.length == 7) ? line[6].trim() : ""; TravelActivity activity; switch (type) { case "accommodation": - activity = new Accommodation(description, date, duration, tag); + activity = new Accommodation(description, date, duration, tag, expense); break; case "food": - activity = new Food(description, date, duration, tag); + activity = new Food(description, date, duration, tag, expense); break; case "landmark": - activity = new Landmark(description, date, duration, tag); + activity = new Landmark(description, date, duration, tag, expense); break; case "general": - activity = new TravelActivity(description, date, duration, tag); + activity = new TravelActivity(description, date, duration, tag, expense); break; default: throw new FileNotFoundException("File is corrupted or has invalid format"); @@ -67,6 +68,7 @@ public void saveActivityList(TravelActivityList list) throws IOException { + " / " + travelActivity.getDate() + " / " + travelActivity.getDuration() + " / " + travelActivity.getTag() + + " / " + travelActivity.getExpense() + System.lineSeparator()); } fw.close(); diff --git a/src/main/java/seedu/duke/Food.java b/src/main/java/seedu/duke/Food.java index 33d8b8bd17..588568cfbc 100644 --- a/src/main/java/seedu/duke/Food.java +++ b/src/main/java/seedu/duke/Food.java @@ -3,8 +3,8 @@ import java.time.LocalDate; public class Food extends TravelActivity { - public Food(String line, LocalDate date, String duration, String tag){ - super(line, date, duration, tag); + public Food(String line, LocalDate date, String duration, String tag, String expense){ + super(line, date, duration, tag, expense); } @Override diff --git a/src/main/java/seedu/duke/Landmark.java b/src/main/java/seedu/duke/Landmark.java index b2c154bf44..f61703b0c5 100644 --- a/src/main/java/seedu/duke/Landmark.java +++ b/src/main/java/seedu/duke/Landmark.java @@ -3,8 +3,8 @@ import java.time.LocalDate; public class Landmark extends TravelActivity { - public Landmark(String line, LocalDate date, String duration, String tag){ - super(line, date, duration, tag); + public Landmark(String line, LocalDate date, String duration, String tag, String expense){ + super(line, date, duration, tag, expense); } @Override public String toString(){ diff --git a/src/main/java/seedu/duke/Parser.java b/src/main/java/seedu/duke/Parser.java index 4c70c2ce65..d0249bcf82 100644 --- a/src/main/java/seedu/duke/Parser.java +++ b/src/main/java/seedu/duke/Parser.java @@ -57,15 +57,15 @@ public static void activityCommand(String line, TravelActivityList list) throws TravelActivity activity; switch (command[0]) { case "accommodation": - activity = new Accommodation(description, date, duration, tag); + activity = new Accommodation(description, date, duration, tag, ""); System.out.println("I added a new accommodation"); break; case "food": - activity = new Food(description, date, duration, tag); + activity = new Food(description, date, duration, tag, ""); System.out.println("I added a new restaurant"); break; case "landmark": - activity = new Landmark(description, date, duration, tag); + activity = new Landmark(description, date, duration, tag, ""); System.out.println("I added a new landmark"); break; default: @@ -92,7 +92,7 @@ public static void addCommand(String line, TravelActivityList list) throws OmniE LocalDate date = LocalDate.parse(command[2]); String duration = command[3].trim(); String tag = (line.contains("/tag") && command.length == 5) ? command[4].trim() : ""; - TravelActivity newActivity = new TravelActivity(description, date, duration, tag); + TravelActivity newActivity = new TravelActivity(description, date, duration, tag, ""); list.addTravelActivity(newActivity); System.out.println("I added a new travel activity"); System.out.println(newActivity); diff --git a/src/main/java/seedu/duke/TravelActivity.java b/src/main/java/seedu/duke/TravelActivity.java index 133387e04e..cd4cdd9d60 100644 --- a/src/main/java/seedu/duke/TravelActivity.java +++ b/src/main/java/seedu/duke/TravelActivity.java @@ -18,11 +18,12 @@ public class TravelActivity { private String expense; - public TravelActivity(String description, LocalDate date, String duration, String tag){ + public TravelActivity(String description, LocalDate date, String duration, String tag, String expense){ travelActivity = description; this.date = date; this.duration = duration; this.tag = tag; + this.expense = expense; } @Override diff --git a/src/main/java/seedu/duke/TravelActivityList.java b/src/main/java/seedu/duke/TravelActivityList.java index 2c83597cd5..a6db50c8db 100644 --- a/src/main/java/seedu/duke/TravelActivityList.java +++ b/src/main/java/seedu/duke/TravelActivityList.java @@ -39,20 +39,8 @@ public void listTravelActivities(){ if (activity == null) { break; } - String checked = activity.getActivityStatus()? "[X]" : "[ ]"; activityCount++; - if((activity.getTag() == null || activity.getTag().isEmpty()) && - (activity.getExpense() == null || activity.getExpense().isEmpty())){ - System.out.println(checked + " " + activityCount + ". " + activity); - } else if (!(activity.getTag() == null || activity.getTag().isEmpty())) { - System.out.println(checked + " " + activityCount + ". " + activity + " (" + activity.getTag() + ")"); - } else if (!(activity.getExpense() == null || activity.getExpense().isEmpty())) { - System.out.println(checked + " " + activityCount + ". " + activity - + " (" + activity.getExpense() + ")"); - } else { - System.out.println(checked + " " + activityCount + ". " + activity - + " (" + activity.getTag() + ")" + " (" + activity.getExpense() + ")"); - } + Ui.printActivity(activity, activityCount); } int finalactivityCount = noOfActivities; assert finalactivityCount == activityCount : "Index out of bounds while listing activities"; @@ -104,22 +92,16 @@ public String getDescription(String plan){ */ public void searchKeyword (String activityName) { - boolean isFound = false; int foundCounter = 0; - for (int iterator = 0; iterator < travelActivities.size(); iterator += 1){ - if(travelActivities.get(iterator).getPlan().contains(activityName) && - !travelActivities.get(iterator).getPlan().isEmpty()){ - isFound = true; + for (TravelActivity travelActivity : travelActivities) { + if (travelActivity.getPlan().contains(activityName) && + !travelActivity.getPlan().isEmpty()) { foundCounter += 1; - if (isFound && foundCounter == 1) { + if (foundCounter == 1) { System.out.println("Here are what you are looking for:"); } - if (travelActivities.get(iterator).getTag() == "") { - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString()); - } else { - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString() + - " (" + travelActivities.get(iterator).getTag() + ")"); - } + Ui.printActivity(travelActivity, foundCounter); + } } if (foundCounter == 0) { @@ -236,15 +218,18 @@ public void findTag(String tag){ !travelActivities.get(iterator).getTag().isEmpty()){ isFound = true; foundCounter += 1; - if (isFound && foundCounter == 1) { + if (foundCounter == 1) { System.out.println("Here are what you are looking for:"); } + Ui.printActivity(travelActivities.get(iterator), foundCounter); + /* if (travelActivities.get(iterator).getTag() == "") { System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString()); } else { System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString() + " (" + travelActivities.get(iterator).getTag() + ")"); } + */ } } if (foundCounter == 0 || isFound == false) { @@ -262,47 +247,14 @@ public void findType(String type){ boolean isFound = false; int foundCounter = 0; - for (int iterator = 0; iterator < travelActivities.size(); iterator += 1){ - if(type.equals("Food") && travelActivities.get(iterator) instanceof Food && - !travelActivities.get(iterator).toString().isEmpty()){ + for (TravelActivity activity: travelActivities){ + if(activity.getClass().getSimpleName().equals(type)){ isFound = true; foundCounter += 1; - if (isFound && foundCounter == 1) { + if (foundCounter == 1) { System.out.println("Here are what you are looking for:"); } - if (travelActivities.get(iterator).getTag() == "") { - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString()); - } else { - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString() + - " (" + travelActivities.get(iterator).getTag() + ")"); - } - } else if (type.equals("Landmark") && travelActivities.get(iterator) instanceof Landmark && - !travelActivities.get(iterator).toString().isEmpty()) { - isFound = true; - foundCounter += 1; - if (isFound && foundCounter == 1) { - System.out.println("Here are what you are looking for:"); - } - if (travelActivities.get(iterator).getTag() == "") { - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString()); - } else { - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString() + - " (" + travelActivities.get(iterator).getTag() + ")"); - } - } else if (type.equals("Accommodation") && travelActivities.get(iterator) instanceof Accommodation && - !travelActivities.get(iterator).toString().isEmpty()) { - isFound = true; - foundCounter += 1; - if (isFound && foundCounter == 1) { - System.out.println("Here are what you are looking for:"); - } - if (travelActivities.get(iterator).getTag() == "") { - - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString()); - } else { - System.out.println(foundCounter + ". " + travelActivities.get(iterator).toString() + - " (" + travelActivities.get(iterator).getTag() + ")"); - } + Ui.printActivity(activity, foundCounter); } } if (foundCounter == 0 || isFound == false) { @@ -310,6 +262,8 @@ public void findType(String type){ } } + + /** * Adds expense to travel activity * @param taskNumber The travel activity number on the list diff --git a/src/main/java/seedu/duke/Ui.java b/src/main/java/seedu/duke/Ui.java index 45f929e03b..774a339543 100644 --- a/src/main/java/seedu/duke/Ui.java +++ b/src/main/java/seedu/duke/Ui.java @@ -85,4 +85,16 @@ public static void printDateTimeExceptionError(){ public static void printSavingError(){ System.out.println("Something went wrong when saving the file"); } + + public static void printActivity(TravelActivity activity, int foundCounter) { + String checked = activity.getActivityStatus()? "[X]" : "[ ]"; + System.out.print(checked + " " + foundCounter + ". " + activity); + if(activity.getTag() != null && !activity.getTag().isEmpty()){ + System.out.print(" (" + activity.getTag() + ")"); + } + if(activity.getExpense() != null && !activity.getExpense().isEmpty()){ + System.out.print(" (" + activity.getExpense() + ")"); + } + System.out.println(); + } } diff --git a/src/test/java/seedu/duke/DukeTest.java b/src/test/java/seedu/duke/DukeTest.java index 6aacb8249e..223c483932 100644 --- a/src/test/java/seedu/duke/DukeTest.java +++ b/src/test/java/seedu/duke/DukeTest.java @@ -18,29 +18,29 @@ class DukeTest { Accommodation accommodationNew1 = new Accommodation("nus rvrc", LocalDate.parse("2007-12-12"), - "5 years", "campus stay"); + "5 years", "campus stay", ""); Accommodation accommodationNew2 = new Accommodation("nus pgpr", LocalDate.parse("2017-10-12"), - "5 years", "campus stay"); + "5 years", "campus stay", ""); Accommodation accommodationNew3 = new Accommodation("nus utr", LocalDate.parse("2007-09-12"), - "5 years", "campus stay"); + "5 years", "campus stay", ""); Landmark landmarkNew1 = new Landmark("berlin wall", LocalDate.parse("2009-12-15"), "5 hours", - "historic site"); + "historic site", ""); Landmark landmarkNew2 = new Landmark("utown", LocalDate.parse("2016-08-14"), "10 hours", - "recreational centre"); + "recreational centre", ""); Landmark landmarkNew3 = new Landmark("supper stretch", LocalDate.parse("2021-08-18"), "2 hours", - "tourist hotspot"); + "tourist hotspot", ""); Food foodNew1 = new Food("utown mala", LocalDate.parse("2019-06-19"), "2 hours", - "spicy"); + "spicy", ""); Food foodNew2 = new Food("pgpr mala", LocalDate.parse("2012-07-07"), "1 hours", - "spicy"); + "spicy", ""); Food foodNew3 = new Food("pgpr waffle", LocalDate.parse("2006-03-09"), "0.5 hours", - "non-spicy"); + "non-spicy", ""); TravelActivity travelActivityNew1 = new TravelActivity("esplanade", LocalDate.parse("2016-03-19"), - "3 hours", "concert"); + "3 hours", "concert", ""); TravelActivity travelActivityNew2 = new TravelActivity("merlion", LocalDate.parse("2018-04-07"), - "2 hours", "sightseeing"); + "2 hours", "sightseeing", ""); TravelActivity travelActivityNew3 = new TravelActivity("chinatown", LocalDate.parse("2015-02-21"), - "5 hours", "sightseeing"); + "5 hours", "sightseeing", ""); private final PrintStream printedText = System.out; private final ByteArrayOutputStream capturedOutputStream = new ByteArrayOutputStream(); @@ -60,9 +60,9 @@ public void restorePrintLn() { public void addTest() { TravelActivityList travelActivityList = new TravelActivityList(); TravelActivity travelActivity1 = new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing"); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", ""); TravelActivity travelActivity2 = new TravelActivity("visit home", - LocalDate.parse("2019-12-14"), "5hours", "Sightseeing"); + LocalDate.parse("2019-12-14"), "5hours", "Sightseeing", "$50"); travelActivityList.addTravelActivity(travelActivity1); assertEquals("visit museum", travelActivityList.getDescription("visit museum")); travelActivityList.addTravelActivity(travelActivity2); @@ -74,7 +74,7 @@ public void deleteTest() throws OmniException { //add the plan TravelActivityList travelActivityList = new TravelActivityList(); TravelActivity travelActivity = new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing"); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "$50"); travelActivityList.addTravelActivity(travelActivity); assertEquals("visit museum", travelActivityList.getDescription("visit museum")); //delete the plan @@ -87,11 +87,11 @@ public void getNoActivitiesTest() throws OmniException { //add the first plan TravelActivityList travelActivityList = new TravelActivityList(); TravelActivity travelActivity1 = new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing"); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "30"); TravelActivity travelActivity2 = new TravelActivity("go to beach", - LocalDate.parse("2018-10-12"),"3hours", "Sightseeing"); + LocalDate.parse("2018-10-12"),"3hours", "Sightseeing", "30"); TravelActivity travelActivity3 = new TravelActivity("shopping", - LocalDate.parse("2020-12-05"),"5hours", "Shopping"); + LocalDate.parse("2020-12-05"),"5hours", "Shopping", "$100"); travelActivityList.addTravelActivity(travelActivity1); assertEquals("visit museum", travelActivityList.getDescription("visit museum")); //add the second and third plan @@ -113,7 +113,7 @@ public void checkTest() throws OmniException { //add the first plan TravelActivityList travelActivityList = new TravelActivityList(); TravelActivity travelActivity1 = new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing"); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "$50"); travelActivityList.addTravelActivity(travelActivity1); assertEquals("visit museum", travelActivityList.getDescription("visit museum")); //check the plan @@ -127,7 +127,7 @@ public void uncheckTest() throws OmniException { //add the first plan TravelActivityList travelActivityList = new TravelActivityList(); TravelActivity travelActivity1 = new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing"); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "$50"); travelActivityList.addTravelActivity(travelActivity1); assertEquals("visit museum", travelActivityList.getDescription("visit museum")); //check the plan @@ -163,8 +163,8 @@ public void findTest () { travelActivityListNew.addTravelActivity(travelActivityNew3); String[] command1 = new String[]{"find", "mala"}; String findExpectedOutput = "Here are what you are looking for:" + System.lineSeparator() + - "1. Food: utown mala :19 Jun 2019 :2 hours (spicy)" + System.lineSeparator() + - "2. Food: pgpr mala :7 Jul 2012 :1 hours (spicy)" + System.lineSeparator(); + "[ ] 1. Food: utown mala :19 Jun 2019 :2 hours (spicy)" + System.lineSeparator() + + "[ ] 2. Food: pgpr mala :7 Jul 2012 :1 hours (spicy)" + System.lineSeparator(); Parser.findCommand(command1, travelActivityListNew); assertEquals(capturedOutputStream.toString(), findExpectedOutput); } catch (OmniException exception) { @@ -191,8 +191,8 @@ public void findTagTest () { travelActivityListNew.addTravelActivity(travelActivityNew3); String findExpectedOutput2 = "Here are what you are looking for:" + System.lineSeparator() + - "1. merlion :7 Apr 2018 :2 hours (sightseeing)" + System.lineSeparator() + - "2. chinatown :21 Feb 2015 :5 hours (sightseeing)" + System.lineSeparator(); + "[ ] 1. merlion :7 Apr 2018 :2 hours (sightseeing)" + System.lineSeparator() + + "[ ] 2. chinatown :21 Feb 2015 :5 hours (sightseeing)" + System.lineSeparator(); Parser.findTagCommand("findtag sightseeing", travelActivityListNew); assertEquals(capturedOutputStream.toString(), findExpectedOutput2); @@ -220,9 +220,9 @@ public void findTypeTest () { travelActivityListNew.addTravelActivity(travelActivityNew3); String findExpectedOutput3 = "Here are what you are looking for:" + System.lineSeparator() + - "1. Accommodation: nus rvrc :12 Dec 2007 :5 years (campus stay)" + System.lineSeparator() + - "2. Accommodation: nus pgpr :12 Oct 2017 :5 years (campus stay)" + System.lineSeparator() + - "3. Accommodation: nus utr :12 Sep 2007 :5 years (campus stay)" + System.lineSeparator(); + "[ ] 1. Accommodation: nus rvrc :12 Dec 2007 :5 years (campus stay)" + System.lineSeparator() + + "[ ] 2. Accommodation: nus pgpr :12 Oct 2017 :5 years (campus stay)" + System.lineSeparator() + + "[ ] 3. Accommodation: nus utr :12 Sep 2007 :5 years (campus stay)" + System.lineSeparator(); Parser.findTypeCommand("findtype Accommodation", travelActivityListNew); assertEquals(capturedOutputStream.toString(), findExpectedOutput3); Parser.findTypeCommand("findtype Accommodation", travelActivityListNew); @@ -237,7 +237,7 @@ public void findTypeTest () { public void testTagActivity() throws OmniException { TravelActivityList list = new TravelActivityList(); list.addTravelActivity(new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing")); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "$50")); assertEquals("visit museum", list.getDescription("visit museum")); // Tagging an existing task list.tagActivity(1, "activity 1"); @@ -249,7 +249,7 @@ public void testTagActivity() throws OmniException { public void testRemoveTagFromActivity() throws OmniException { TravelActivityList list = new TravelActivityList(); list.addTravelActivity(new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing")); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "$100")); assertEquals("visit museum", list.getDescription("visit museum")); // Tagging an existing task list.tagActivity(1, "activity 1"); @@ -264,7 +264,7 @@ public void testRemoveTagFromActivity() throws OmniException { public void testUpdateActivity() throws OmniException{ TravelActivityList travelActivityList = new TravelActivityList(); TravelActivity travelActivity1 = new TravelActivity("Go Paris", - LocalDate.parse("2019-02-10"),"2hours", "Sightseeing"); + LocalDate.parse("2019-02-10"),"2hours", "Sightseeing", "$40"); travelActivityList.addTravelActivity(travelActivity1); assertEquals("10 Feb 2019", travelActivity1.getDate().format(DateTimeFormatter.ofPattern("dd MMM yyyy"))); @@ -280,7 +280,7 @@ public void testUpdateActivity() throws OmniException{ public void testExpenseActivity() throws OmniException { TravelActivityList list = new TravelActivityList(); list.addTravelActivity(new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing")); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "$30")); assertEquals("visit museum", list.getDescription("visit museum")); // adding expense to existing task list.expenseActivity(1, "$50"); @@ -292,7 +292,7 @@ public void testExpenseActivity() throws OmniException { public void testRemoveExpense() throws OmniException { TravelActivityList list = new TravelActivityList(); list.addTravelActivity(new TravelActivity("visit museum", - LocalDate.parse("2019-05-12"),"2hours", "Sightseeing")); + LocalDate.parse("2019-05-12"),"2hours", "Sightseeing", "$20")); assertEquals("visit museum", list.getDescription("visit museum")); // adding expense to existing task list.expenseActivity(1, "$50");