package tudu.web.dwr.impl;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ObjectRetrievalFailureException;
import tudu.domain.TodoList;
import tudu.domain.User;
import tudu.service.TodoListsService;
import tudu.service.UserService;
import tudu.web.dwr.TodoListsDwr;
import tudu.web.dwr.bean.RemoteTodoList;
import java.util.Collection;
import java.util.TreeSet;
/**
* Implementation of the tudu.service.TodoListsService interface.
*
* @author Julien Dubois
*/
public class TodoListsDwrImpl implements TodoListsDwr {
private final Log log = LogFactory.getLog(TodoListsDwrImpl.class);
@Autowired
private TodoListsService todoListsService;
@Autowired
private UserService userService;
/**
* @see tudu.web.dwr.TodoListsDwr#getTodoList(java.lang.String)
*/
public RemoteTodoList getTodoList(String listId) {
RemoteTodoList remoteTodoList = new RemoteTodoList();
try {
TodoList todoList = todoListsService.findTodoList(listId);
remoteTodoList.setListId(todoList.getListId());
String unescapedName = StringEscapeUtils.unescapeHtml(todoList
.getName());
remoteTodoList.setName(unescapedName);
remoteTodoList.setRssAllowed(todoList.isRssAllowed());
} catch (Throwable t) {
remoteTodoList.setListId(null);
}
return remoteTodoList;
}
/**
* @see tudu.web.dwr.TodoListsDwr#getTodoListUsers(java.lang.String)
*/
public String[] getTodoListUsers(String listId) {
try {
TodoList todoList = todoListsService.findTodoList(listId);
String currentLogin = userService.getCurrentUser().getLogin();
Collection<User> users = todoList.getUsers();
Collection<String> logins = new TreeSet<String>();
for (User user : users) {
if (!currentLogin.equals(user.getLogin())) {
logins.add(user.getLogin());
}
}
return logins.toArray(new String[logins.size()]);
} catch (Throwable t) {
return new String[0];
}
}
/**
* @see tudu.web.dwr.TodoListsDwr#addTodoListUser(java.lang.String,
* java.lang.String)
*/
public String addTodoListUser(String listId, String login) {
login = login.toLowerCase();
try {
todoListsService.addTodoListUser(listId, login);
} catch (ObjectRetrievalFailureException orfe) {
return "ObjectRetrievalFailureException";
}
return "";
}
/**
* @see tudu.web.dwr.TodoListsDwr#deleteTodoListUser(java.lang.String,
* java.lang.String)
*/
public void deleteTodoListUser(String listId, String login) {
login = login.toLowerCase();
todoListsService.deleteTodoListUser(listId, login);
}
/**
* @see tudu.web.dwr.TodoListsDwr#addTodoList(java.lang.String,
* java.lang.String)
*/
public void addTodoList(String name, String rssAllowed) {
boolean rssAllowedBool = false;
if (rssAllowed != null && rssAllowed.equals("1")) {
rssAllowedBool = true;
}
TodoList todoList = new TodoList();
String escapedName = StringEscapeUtils.escapeHtml(name);
todoList.setName(escapedName);
todoList.setRssAllowed(rssAllowedBool);
todoListsService.createTodoList(todoList);
}
/**
* @see tudu.web.dwr.TodoListsDwr#editTodoList(java.lang.String,
* java.lang.String, java.lang.String)
*/
public void editTodoList(String listId, String name, String rssAllowed) {
TodoList todoList = todoListsService.findTodoList(listId);
if (name != null && !name.equals("")) {
String escapedName = StringEscapeUtils.escapeHtml(name);
todoList.setName(escapedName);
}
if (rssAllowed != null && !rssAllowed.equals("")) {
boolean rssAllowedBool = false;
if (rssAllowed.equals("1")) {
rssAllowedBool = true;
}
todoList.setRssAllowed(rssAllowedBool);
}
todoListsService.updateTodoList(todoList);
}
/**
* @see tudu.web.dwr.TodoListsDwr#deleteTodoList(java.lang.String)
*/
public void deleteTodoList(String listId) {
todoListsService.deleteTodoList(listId);
}
}