diff --git a/src/main/java/seedu/waddle/commons/core/index/MultiIndex.java b/src/main/java/seedu/waddle/commons/core/index/MultiIndex.java index d56c5c4591a..523e1a86d5c 100644 --- a/src/main/java/seedu/waddle/commons/core/index/MultiIndex.java +++ b/src/main/java/seedu/waddle/commons/core/index/MultiIndex.java @@ -9,7 +9,7 @@ public class MultiIndex { public static final String MESSAGE_CONSTRAINTS = "Index should only contain positive integers separated by a decimal point"; - public static final String VALIDATION_REGEX = "\\d+\\.\\d+"; + public static final String VALIDATION_REGEX = "\\d+\\.?\\d*"; private List indices; public MultiIndex() { diff --git a/src/main/java/seedu/waddle/logic/parser/AddItemCommandParser.java b/src/main/java/seedu/waddle/logic/parser/AddItemCommandParser.java index 33d7439cf17..ffdbe110e77 100644 --- a/src/main/java/seedu/waddle/logic/parser/AddItemCommandParser.java +++ b/src/main/java/seedu/waddle/logic/parser/AddItemCommandParser.java @@ -37,6 +37,7 @@ public AddItemCommand parse(String args) throws ParseException { String description = ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get()); Priority priority; + if (arePrefixesPresent(argMultimap, PREFIX_PRIORITY)) { priority = ParserUtil.parsePriority(argMultimap.getValue(PREFIX_PRIORITY).get()); } else { @@ -54,7 +55,7 @@ public AddItemCommand parse(String args) throws ParseException { if (arePrefixesPresent(argMultimap, PREFIX_DURATION)) { duration = ParserUtil.parseDuration(argMultimap.getValue(PREFIX_DURATION).get()); } else { - duration = null; + duration = ParserUtil.parseDuration("0"); } Item item = new Item(description, priority, cost, duration); diff --git a/src/main/java/seedu/waddle/logic/parser/ParserUtil.java b/src/main/java/seedu/waddle/logic/parser/ParserUtil.java index 356da6fe663..a2fba43493b 100644 --- a/src/main/java/seedu/waddle/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/waddle/logic/parser/ParserUtil.java @@ -199,19 +199,6 @@ public static Cost parseCost(String cost) throws ParseException { return new Cost(trimmedCost); } - /** - * Parses a {@code int Day Number}. - * Leading and trailing whitespaces will be trimmed. - */ - public static DayNumber parseDayNumber(String dayNumber) throws ParseException { - requireNonNull(dayNumber); - String trimmedDayNumber = dayNumber.trim(); - if (!DayNumber.isValidDayNumber(trimmedDayNumber)) { - throw new ParseException(DayNumber.MESSAGE_CONSTRAINTS); - } - return new DayNumber(trimmedDayNumber); - } - /** * Parses a {@code String duration} into a {@code Duration}. * Leading and trailing whitespaces will be trimmed. @@ -227,6 +214,19 @@ public static Duration parseDuration(String duration) throws ParseException { return new Duration(trimmedDuration); } + /** + * Parses a {@code int Day Number}. + * Leading and trailing whitespaces will be trimmed. + */ + public static DayNumber parseDayNumber(String dayNumber) throws ParseException { + requireNonNull(dayNumber); + String trimmedDayNumber = dayNumber.trim(); + if (!DayNumber.isValidDayNumber(trimmedDayNumber)) { + throw new ParseException(DayNumber.MESSAGE_CONSTRAINTS); + } + return new DayNumber(trimmedDayNumber); + } + /** * Parses a {@code String startTime} into a {@code StartTime}. * Leading and trailing whitespaces will be trimmed. diff --git a/src/main/java/seedu/waddle/model/item/Day.java b/src/main/java/seedu/waddle/model/item/Day.java index 2148ec8803f..7b36e89558c 100644 --- a/src/main/java/seedu/waddle/model/item/Day.java +++ b/src/main/java/seedu/waddle/model/item/Day.java @@ -90,9 +90,12 @@ public ArrayList getConflictingItems(Item newItem) { // same start time boolean sameStartTime = item.getStartTime().equals(newItem.getStartTime()); // start time of new item is within the duration of a preceding item - boolean startTimeConflict = newItem.getStartTime().isBefore(item.getEndTime()); + boolean startTimeConflict = newItem.getStartTime().isAfter(item.getStartTime()) + && newItem.getStartTime().isBefore(item.getEndTime()); // end time of new item eats into a proceeding item - boolean endTimeConflict = newItem.getEndTime().isAfter(item.getStartTime()); + boolean endTimeConflict = newItem.getEndTime().isAfter(item.getStartTime()) + && newItem.getEndTime().isBefore(item.getEndTime()); + if (sameStartTime || startTimeConflict || endTimeConflict) { conflictingItems.add(item);