@@ -0,0 +1,1710 @@
+package seedu.ezdo.model.todo;%0A%0A%0Aimport seedu.ezdo.commons.exceptions.IllegalValueException;%0A%0A%0A/**%0A * Represents the start date of a todo.%0A */%0Apublic class StartDate %7B%0A%0A    public static final String MESSAGE_STARTDATE_CONSTRAINTS =%0A            %22Start dates should be in the format DD/MM/YYYY, and it should not be blank%22;%0A%0A    /*%0A     * The first character of the address must not be a whitespace,%0A     * otherwise %22 %22 (a blank string) becomes a valid input.%0A     */%0A//    public static final String STARTDATE_VALIDATION_REGEX = %22%5E%5C%5Cd%5C%5Cd%5C%5C/%5C%5Cd%5C%5Cd%5C%5C/%5C%5Cd%5C%5Cd%5C%5Cd%5C%5Cd$%22;%0A    public static final String STARTDATE_VALIDATION_REGEX = %22.*%22;%0A%0A    public final String value;%0A%0A    /**%0A     * Validates given start date.%0A     *%0A     * @throws IllegalValueException if given start date string is invalid.%0A     */%0A    public StartDate(String startDate) throws IllegalValueException %7B%0A        assert startDate != null;%0A        if (!isValidStartDate(startDate)) %7B%0A            throw new IllegalValueException(MESSAGE_STARTDATE_CONSTRAINTS);%0A        %7D%0A        this.value = startDate;%0A    %7D%0A%0A    /**%0A     * Returns true if a given string is a valid person email.%0A     */%0A    public static boolean isValidStartDate(String test) %7B%0A        return test.matches(STARTDATE_VALIDATION_REGEX);%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return value;%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 StartDate // instanceof handles nulls%0A                && this.value.equals(((StartDate) other).value)); // state check%0A    %7D%0A%0A    @Override%0A    public int hashCode() %7B%0A        return value.hashCode();%0A    %7D%0A%0A%7D%0A

Create class StartDate