From fbebb8643c1af3d126efc311c441d6cac14315ae Mon Sep 17 00:00:00 2001 From: louietyj Date: Mon, 7 Nov 2016 13:49:21 +0800 Subject: [PATCH 1/6] Refactor validateParams --- src/main/java/seedu/todo/controllers/UpdateController.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/seedu/todo/controllers/UpdateController.java b/src/main/java/seedu/todo/controllers/UpdateController.java index 43b40c6bf021..5578b4880c07 100644 --- a/src/main/java/seedu/todo/controllers/UpdateController.java +++ b/src/main/java/seedu/todo/controllers/UpdateController.java @@ -251,11 +251,7 @@ private boolean validateParams(boolean isTask, CalendarItem record, String name, LocalDateTime newDateFrom = (dateFrom == null) ? event.getStartDate() : dateFrom; LocalDateTime newDateTo = (dateTo == null) ? event.getEndDate() : dateTo; - if (newDateFrom == null || newDateTo == null) { - return false; - } - - if (newDateTo.isBefore(newDateFrom)) { + if (newDateFrom == null || newDateTo == null || newDateTo.isBefore(newDateFrom)) { return false; } } From e89afbf6bf45d4d72016b9cd5ce67760fb88a952 Mon Sep 17 00:00:00 2001 From: louietyj Date: Mon, 7 Nov 2016 14:11:21 +0800 Subject: [PATCH 2/6] Refactor validateNameDateChange --- .../todo/controllers/UpdateController.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/todo/controllers/UpdateController.java b/src/main/java/seedu/todo/controllers/UpdateController.java index 5578b4880c07..a8daca883901 100644 --- a/src/main/java/seedu/todo/controllers/UpdateController.java +++ b/src/main/java/seedu/todo/controllers/UpdateController.java @@ -234,8 +234,7 @@ private boolean validateParams(boolean isTask, CalendarItem record, String name, // TODO: Not enough sleep // We really need proper ActiveRecord validation and rollback, sigh... - if (name == null && dateFrom == null && dateTo == null - && (naturalFrom == null || !naturalFrom.equals(STRING_NULL))) { + if (!validateNameDateChange(name, dateFrom, dateTo, naturalFrom)) { return false; } @@ -257,6 +256,20 @@ private boolean validateParams(boolean isTask, CalendarItem record, String name, } return true; } + + /** + * Checks that there is at least one update param specified. + * + * @param name + * @param dateFrom + * @param dateTo + * @param naturalFrom + * @return + */ + private boolean validateNameDateChange(String name, LocalDateTime dateFrom, LocalDateTime dateTo, String naturalFrom) { + return !(name == null && dateFrom == null && dateTo == null + && !STRING_NULL.equals(naturalFrom)); + } /** * Renders disambiguation with best-effort input matching to template. From 8ed0ecca395095e1955538086b08abadc7bf83a4 Mon Sep 17 00:00:00 2001 From: louietyj Date: Mon, 7 Nov 2016 14:15:44 +0800 Subject: [PATCH 3/6] Refactor validateUpdatedEventDates --- .../todo/controllers/UpdateController.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/todo/controllers/UpdateController.java b/src/main/java/seedu/todo/controllers/UpdateController.java index a8daca883901..d9d35d42054a 100644 --- a/src/main/java/seedu/todo/controllers/UpdateController.java +++ b/src/main/java/seedu/todo/controllers/UpdateController.java @@ -245,12 +245,7 @@ private boolean validateParams(boolean isTask, CalendarItem record, String name, } } else { Event event = (Event) record; - - // Take union of existing fields and update params - LocalDateTime newDateFrom = (dateFrom == null) ? event.getStartDate() : dateFrom; - LocalDateTime newDateTo = (dateTo == null) ? event.getEndDate() : dateTo; - - if (newDateFrom == null || newDateTo == null || newDateTo.isBefore(newDateFrom)) { + if (!validateUpdatedEventDates(event, dateFrom, dateTo)) { return false; } } @@ -270,6 +265,22 @@ private boolean validateNameDateChange(String name, LocalDateTime dateFrom, Loca return !(name == null && dateFrom == null && dateTo == null && !STRING_NULL.equals(naturalFrom)); } + + /** + * Validates an event to be updated with dateFrom and dateTo. + * + * @param oldEvent + * @param dateFrom + * @param dateTo + * @return + */ + private boolean validateUpdatedEventDates(Event oldEvent, LocalDateTime dateFrom, LocalDateTime dateTo) { + // Take union of existing fields and update params + LocalDateTime newDateFrom = (dateFrom == null) ? oldEvent.getStartDate() : dateFrom; + LocalDateTime newDateTo = (dateTo == null) ? oldEvent.getEndDate() : dateTo; + + return (newDateFrom != null && newDateTo != null && !newDateTo.isBefore(newDateFrom)); + } /** * Renders disambiguation with best-effort input matching to template. From 470d36358363a70ec571966b83ef641b6896b955 Mon Sep 17 00:00:00 2001 From: louietyj Date: Mon, 7 Nov 2016 14:21:53 +0800 Subject: [PATCH 4/6] Refactor STRING_NULL catch --- .../java/seedu/todo/controllers/UpdateController.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/todo/controllers/UpdateController.java b/src/main/java/seedu/todo/controllers/UpdateController.java index d9d35d42054a..1a3f1ca172bf 100644 --- a/src/main/java/seedu/todo/controllers/UpdateController.java +++ b/src/main/java/seedu/todo/controllers/UpdateController.java @@ -105,14 +105,13 @@ public void process(String input) throws ParseException { LocalDateTime dateFrom = null; LocalDateTime dateTo = null; try { - dateFrom = naturalFrom == null ? null : DateParser.parseNatural(naturalFrom); + // Allow exception for "null" + dateFrom = (naturalFrom == null || STRING_NULL.equals(naturalFrom.trim())) + ? null : DateParser.parseNatural(naturalFrom); dateTo = naturalTo == null ? null : DateParser.parseNatural(naturalTo); } catch (InvalidNaturalDateException e) { - // Allow exception for "null" - if (!naturalFrom.trim().equals(STRING_NULL)) { - renderDisambiguation(isTask, recordIndex, name, naturalFrom, naturalTo, MESSAGE_CANNOT_PARSE_DATE); - return; - } + renderDisambiguation(isTask, recordIndex, name, naturalFrom, naturalTo, MESSAGE_CANNOT_PARSE_DATE); + return; } // Validate isTask, name and times. From 820459f167f9406cba54c759042b1628cd513640 Mon Sep 17 00:00:00 2001 From: louietyj Date: Mon, 7 Nov 2016 14:26:49 +0800 Subject: [PATCH 5/6] Move NumberFormatException catch into helper --- .../todo/controllers/UpdateController.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/main/java/seedu/todo/controllers/UpdateController.java b/src/main/java/seedu/todo/controllers/UpdateController.java index 1a3f1ca172bf..e73253af8047 100644 --- a/src/main/java/seedu/todo/controllers/UpdateController.java +++ b/src/main/java/seedu/todo/controllers/UpdateController.java @@ -81,12 +81,7 @@ public void process(String input) throws ParseException { String naturalTo = naturalDates[1]; // Record index - Integer recordIndex = null; - try { - recordIndex = parseIndex(parsedResult); - } catch (NumberFormatException e) { - recordIndex = null; // Later then disambiguate - } + Integer recordIndex = parseIndex(parsedResult); // Retrieve record and check if task or event EphemeralDB edb = EphemeralDB.getInstance(); @@ -136,12 +131,15 @@ public void process(String input) throws ParseException { */ private Integer parseIndex(Map parsedResult) { String indexStr = null; - if (parsedResult.get("default") != null && parsedResult.get("default")[1] != null) { - indexStr = parsedResult.get("default")[1].trim(); - return Integer.decode(indexStr); - } else { - return null; + try { + if (parsedResult.get("default") != null && parsedResult.get("default")[1] != null) { + indexStr = parsedResult.get("default")[1].trim(); + return Integer.decode(indexStr); + } + } catch (NumberFormatException e) { + // Everything is fine, just return null if cannot. } + return null; } /** From c79db930569002f561ddcbaf978253501cd48186 Mon Sep 17 00:00:00 2001 From: louietyj Date: Mon, 7 Nov 2016 14:37:32 +0800 Subject: [PATCH 6/6] Still not enough sleep but okay --- src/main/java/seedu/todo/controllers/UpdateController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seedu/todo/controllers/UpdateController.java b/src/main/java/seedu/todo/controllers/UpdateController.java index e73253af8047..90f8983f918d 100644 --- a/src/main/java/seedu/todo/controllers/UpdateController.java +++ b/src/main/java/seedu/todo/controllers/UpdateController.java @@ -228,7 +228,6 @@ private void updateCalendarItem(TodoListDB db, CalendarItem record, boolean isTa */ private boolean validateParams(boolean isTask, CalendarItem record, String name, LocalDateTime dateFrom, LocalDateTime dateTo, String naturalFrom) { - // TODO: Not enough sleep // We really need proper ActiveRecord validation and rollback, sigh... if (!validateNameDateChange(name, dateFrom, dateTo, naturalFrom)) {