@@ -0,0 +1,1734 @@
+package seedu.taskitty.model.task;%0A%0Aimport seedu.taskitty.commons.exceptions.IllegalValueException;%0A%0A/**%0A * Represents a Task's name in the task manager.%0A * Guarantees: immutable; is valid as declared in %7B@link #isValidName(String)%7D%0A */%0Apublic class Date %7B%0A%0A    public static final String MESSAGE_DATE_CONSTRAINTS =%0A            %22Task dates should be in the format dd/mm/yyyy or ddmmyyyy%22;%0A    public static final String DATE_VALIDATION_REGEX_FORMAT_1 =%0A            %22%5B%5C%5Cp%7BDigit%7D%5D%7B1,2%7D/%5B%5C%5Cp%7BDigit%7D%5D%7B1,2%7D/%5B%5C%5Cp%7BDigit%7D%5D%7B4%7D%22;%0A    public static final String DATE_VALIDATION_REGEX_FORMAT_2 = %22%5B%5C%5Cp%7BDigit%7D%5D%7B8%7D%22;%0A%0A    public final String fullName;%0A%0A    /**%0A     * Validates given name.%0A     *%0A     * @throws IllegalValueException if given name string is invalid.%0A     */%0A    public Date(String name) throws IllegalValueException %7B%0A        assert name != null;%0A        name = name.trim();%0A        if (!isValidName(name)) %7B%0A            throw new IllegalValueException(MESSAGE_DATE_CONSTRAINTS);%0A        %7D%0A        this.fullName = name;%0A    %7D%0A%0A    /**%0A     * Returns true if a given string is a valid person name.%0A     */%0A    public static boolean isValidName(String test) %7B%0A        return test.matches(DATE_VALIDATION_REGEX_FORMAT_1) %7C%7C%0A                test.matches(DATE_VALIDATION_REGEX_FORMAT_2);%0A    %7D%0A%0A%0A    @Override%0A    public String toString() %7B%0A        return fullName;%0A    %7D%0A%0A    @Override%0A    public boolean equals(Object other) %7B%0A        return other == this // short circuit if same object%0A                %7C%7C (other instanceof Date // instanceof handles nulls%0A                && this.fullName.equals(((Date) other).fullName)); // state check%0A    %7D%0A%0A    @Override%0A    public int hashCode() %7B%0A        return fullName.hashCode();%0A    %7D%0A%0A%7D%0A

Add model for Date