package seedu.ezdo.storage;

import java.io.IOException;
import java.util.Optional;

import seedu.ezdo.commons.events.model.EzDoChangedEvent;
import seedu.ezdo.commons.events.storage.DataSavingExceptionEvent;
import seedu.ezdo.commons.exceptions.DataConversionException;
import seedu.ezdo.model.ReadOnlyEzDo;
import seedu.ezdo.model.UserPrefs;

/**
 * API of the Storage component
 */
public interface Storage extends EzDoStorage, UserPrefsStorage {

    @Override
    Optional<UserPrefs> readUserPrefs() throws DataConversionException, IOException;

    @Override
    void saveUserPrefs(UserPrefs userPrefs) throws IOException;

    @Override
    String getEzDoFilePath();

    @Override
    Optional<ReadOnlyEzDo> readEzDo() throws DataConversionException, IOException;

    @Override
    void saveEzDo(ReadOnlyEzDo ezDo) throws IOException;

    /**
     * Saves the current version of the EzDo to the hard disk.
     *   Creates the data file if it is missing.
     * Raises {@link DataSavingExceptionEvent} if there was an error during saving.
     */
    void handleEzDoChangedEvent(EzDoChangedEvent ezce);
}

@@ -198,24 +198,92 @@
 ptionEvent;%0A
+import seedu.ezdo.commons.events.storage.EzDoDirectoryChangedEvent;%0A
 import seedu
@@ -328,24 +328,24 @@
 nException;%0A
-
 import seedu
@@ -736,16 +736,70 @@
 ath();%0A%0A
+    @Override%0A    void setEzDoFilePath(String path);%0A%0A
     @Ove
@@ -1172,16 +1172,16 @@
      */%0A
-
     void
@@ -1227,11 +1227,152 @@
 t ezce);
+%0A%0A    /**%0A     * Changes the current directory of the ezDo%0A     */%0A    void handleEzDoDirectoryChangedEvent(EzDoDirectoryChangedEvent ezdce);
 %0A%7D%0A

Add setEzDoFilePath and handleEzDoChangedEvent methods to Storage interface