@@ -0,0 +1,2379 @@
+package seedu.address.storage;%0A%0Aimport java.io.File;%0Aimport java.io.FileNotFoundException;%0Aimport java.io.IOException;%0Aimport java.util.Optional;%0Aimport java.util.logging.Logger;%0A%0Aimport seedu.address.commons.core.LogsCenter;%0Aimport seedu.address.commons.exceptions.DataConversionException;%0Aimport seedu.address.commons.util.FileUtil;%0Aimport seedu.address.model.ReadOnlyTaskList;%0A%0A/**%0A * A class to access TaskList data stored as an xml file on the hard disk.%0A */%0Apublic class XmlTaskListStorage implements TaskListStorage %7B%0A%0A    private static final Logger logger = LogsCenter.getLogger(XmlTaskListStorage.class);%0A%0A    private String filePath;%0A%0A    public XmlTaskListStorage(String filePath) %7B%0A        this.filePath = filePath;%0A    %7D%0A%0A    public String getTaskListFilePath() %7B%0A        return filePath;%0A    %7D%0A%0A    @Override%0A    public Optional%3CReadOnlyTaskList%3E readTaskList() throws DataConversionException, IOException %7B%0A        return readTaskList(filePath);%0A    %7D%0A%0A    /**%0A     * Similar to %7B@link #readTaskList()%7D%0A     * @param filePath location of the data. Cannot be null%0A     * @throws DataConversionException if the file is not in the correct format.%0A     */%0A    public Optional%3CReadOnlyTaskList%3E readTaskList(String filePath) throws DataConversionException,%0A                                                                                 FileNotFoundException %7B%0A        assert filePath != null;%0A%0A        File taskListFile = new File(filePath);%0A%0A        if (!taskListFile.exists()) %7B%0A            logger.info(%22TaskList file %22  + taskListFile + %22 not found%22);%0A            return Optional.empty();%0A        %7D%0A%0A        ReadOnlyTaskList taskListOptional = XmlFileStorage.loadDataFromSaveFile(new File(filePath));%0A%0A        return Optional.of(taskListOptional);%0A    %7D%0A%0A    @Override%0A    public void saveTaskList(ReadOnlyTaskList taskList) throws IOException %7B%0A        saveTaskList(taskList, filePath);%0A    %7D%0A%0A    /**%0A     * Similar to %7B@link #saveTaskList(ReadOnlyTaskList)%7D%0A     * @param filePath location of the data. Cannot be null%0A     */%0A    public void saveTaskList(ReadOnlyTaskList taskList, String filePath) throws IOException %7B%0A        assert taskList != null;%0A        assert filePath != null;%0A%0A        File file = new File(filePath);%0A        FileUtil.createIfMissing(file);%0A        XmlFileStorage.saveDataToFile(file, new XmlSerializableTaskList(taskList));%0A    %7D%0A%0A%7D%0A

add XmlTaskListStorage