package seedu.scheduler.model;

import seedu.scheduler.commons.core.UnmodifiableObservableList;
import seedu.scheduler.model.entry.Entry;
import seedu.scheduler.model.entry.ReadOnlyEntry;
import seedu.scheduler.model.entry.UniqueEntryList;

import java.util.Set;

/**
 * The API of the Model component.
 */
public interface Model {
    /** Clears existing backing model and replaces with the provided new data. */
    void resetData(ReadOnlyScheduler newData);

    /** Returns the Scheduler */
    ReadOnlyScheduler getScheduler();

    /** Deletes the given entry. */
    void deleteEntry(ReadOnlyEntry target) throws UniqueEntryList.EntryNotFoundException;

    /** Adds the given entry */
    void addEntry(Entry entry) throws UniqueEntryList.DuplicateEntryException;
    
    void editEntry(int index, Entry replacement, ReadOnlyEntry entryToEdit) 
            throws UniqueEntryList.DuplicateEntryException, UniqueEntryList.EntryNotFoundException;

    /** Returns the filtered entry list as an {@code UnmodifiableObservableList<ReadOnlyEntry>} */
    UnmodifiableObservableList<ReadOnlyEntry> getFilteredEntryList();

    /** Updates the filter of the filtered entry list to show all entrys */
    void updateFilteredListToShowAll();

    /** Updates the filter of the filtered entry list to filter by the given keywords*/
    void updateFilteredEntryList(Set<String> keywords);

}

@@ -770,16 +770,74 @@
 n;%0A    %0A
+    //@@author A0152962B%0A    /** Edits the given entry */%0A
     void
@@ -997,32 +997,51 @@
 FoundException;%0A
+    //@@author%0A    
 %0A    /** Returns

Add comments to editEntry() in Model.java; Add author to editEntry() in Model.java;