package tudu.service;
import org.jdom.Document;
import org.jdom.JDOMException;
import tudu.domain.TodoList;
import java.io.IOException;
import java.io.InputStream;
/**
* Manage Todo Lists.
*
* @author Julien Dubois
*/
public interface TodoListsService {
/**
* Create a new Todo List.
*
* @param todoList
* The Todo List to create
*/
void createTodoList(TodoList todoList);
/**
* Find a Todo List by ID.
*
* @param listId
* The Todo List ID
* @return The Todo List
*/
TodoList findTodoList(String listId);
/**
* Find a Todo List by ID, without any security check.
* <p>
* This method is used for the RSS feed, which is not secured.
* </p>
*
* @param listId
* The Todo List ID
* @return The Todo List
*/
TodoList unsecuredFindTodoList(String listId);
/**
* Update a Todo List.
*
* @param todoList
* The Todo List to update
*/
void updateTodoList(TodoList todoList);
/**
* Delete a Todo List.
*
* @param listId
* The ID of the Todo List to delete
*/
void deleteTodoList(String listId);
/**
* Add a user to a Todo List.
*
* @param listId
* The ID of the Todo List
* @param login
* The user login
*/
void addTodoListUser(String listId, String login);
/**
* Delete a user from Todo List.
*
* @param listId
* The ID of the Todo List
* @param login
* The user login
*/
void deleteTodoListUser(String listId, String login);
/**
* Backup a Todo List.
*
* @param todoList
* The Todo List
* @return A JDOM document ready for backup
*/
Document backupTodoList(String listId);
/**
* Restore a Todo List.
*
* @param restoreChoice
* The type of RestoreController (create, replace or merge)
* @param listId
* The Todo List ID
* @param todoListContent
* The content to RestoreController
*/
void restoreTodoList(String restoreChoice, String listId,
InputStream todoListContent) throws JDOMException, IOException;
}