package ca.ualberta.cs.cmput301f14t14.questionapp.data;

import java.util.List;
import java.util.UUID;

import ca.ualberta.cs.cmput301f14t14.questionapp.model.Answer;
import ca.ualberta.cs.cmput301f14t14.questionapp.model.Comment;
import ca.ualberta.cs.cmput301f14t14.questionapp.model.Question;

public interface IDataStore {

	public void putQuestion(Question question);
	public Question getQuestion(UUID id);

	public void putAnswer(Answer answer);
	public Answer getAnswer(UUID id);

	public void putQComment(Comment<Question> comment);
	public void putAComment(Comment<Answer> comment);
	public Comment<Question> getQComment(UUID id);
	public Comment<Answer> getAComment(UUID id);

	public List<Question> getQuestionList();

	public void save();

}

@@ -294,440 +294,1586 @@
 n;%0A%0A
-public interface IDataStore %7B%0A%0A%09public void putQuestion(Question question);%0A%09public Question getQuestion(UUID id);%0A%0A%09public void putAnswer(Answer answer);%0A%09public Answer getAnswer(UUID id);%0A%0A%09public void putQComment(Comment%3CQuestion%3E comment);%0A%09public void putAComment(Comment%3CAnswer%3E comment);%0A%09public Comment%3CQuestion%3E getQComment(UUID id);%0A%09public Comment%3CAnswer%3E getAComment(UUID id);%0A%0A%09public List%3CQuestion%3E getQuestionList();%0A
+/**%0A * Interface for Data Stores%0A */%0Apublic interface IDataStore %7B%0A%0A%09/**%0A%09 * Stores a question record and its children in the data store.%0A%09 * @param question%0A%09 */%0A%09public void putQuestion(Question question);%0A%0A%09/**%0A%09 * Get a question record from the data store. Its children will%0A%09 * also be fetched.%0A%09 * @param id%0A%09 * @return Question with the given ID, or null.%0A%09 */%0A%09public Question getQuestion(UUID id);%0A%0A%09/**%0A%09 * Stores an answer record and its children in the data store.%0A%09 * @param answer%0A%09 */%0A%09public void putAnswer(Answer answer);%0A%0A%09/**%0A%09 * Get an answer record from the data store. Its children will%0A%09 * also be fetched.%0A%09 * @param id%0A%09 * @return Answer record, or null%0A%09 */%0A%09public Answer getAnswer(UUID id);%0A%0A%09/**%0A%09 * Stores a question comment record in the data store.%0A%09 * @param comment%0A%09 */%0A%09public void putQComment(Comment%3CQuestion%3E comment);%0A%0A%09/**%0A%09 * Stores an answer comment record in the data store.%0A%09 * @param comment%0A%09 */%0A%09public void putAComment(Comment%3CAnswer%3E comment);%0A%0A%09/**%0A%09 * Get a question comment record from the data store.%0A%09 * @param id%0A%09 * @return Question comment, or null%0A%09 */%0A%09public Comment%3CQuestion%3E getQComment(UUID id);%0A%0A%09/**%0A%09 * Get an answer comment record from the data store.%0A%09 * @param id%0A%09 * @return Answer comment, or null%0A%09 */%0A%09public Comment%3CAnswer%3E getAComment(UUID id);%0A%0A%09/**%0A%09 * Get a list of all question objects in the data store.%0A%09 * %0A%09 * The result is not ordered, and must be sorted prior to use.%0A%09 * @return Question list%0A%09 */%0A%09public List%3CQuestion%3E getQuestionList();%0A%0A%09/**%0A%09 * Persist the state of the data store.%0A%09 */
 %0A%09pu

Add docstrings for IDataStore