View Javadoc
1   package info.ejava.examples.jaxrs.todos.dto;
2   
3   import java.io.Serializable;
4   import java.util.LinkedList;
5   import java.util.List;
6   
7   import javax.json.bind.annotation.JsonbTransient;
8   import javax.xml.bind.annotation.XmlRootElement;
9   
10  import com.fasterxml.jackson.annotation.JsonIgnore;
11  
12  @XmlRootElement(name="todoList", namespace="urn:ejava.jaxrs.todos")
13  public class TodoListDTO implements Serializable {
14      private static final long serialVersionUID = 1L;
15      private String name;
16      private List<TodoItemDTO> todoItems;
17      
18      public TodoListDTO() {}
19      
20      public TodoListDTO(String name) {
21          this.name = name;
22      }
23      public String getName() {
24          return name;
25      }
26      public void setName(String name) {
27          this.name = name;
28      }
29      
30      public List<TodoItemDTO> getTodoItems() {
31          return todoItems;
32      }
33      public void setTodoItems(List<TodoItemDTO> todoItems) {
34          this.todoItems = todoItems;
35      }
36      public void withTodoItem(TodoItemDTO todoItem) {
37          if (todoItems==null && todoItem!=null) {
38              todoItems = new LinkedList<>();            
39          }
40          if (todoItem!=null) {
41              todoItems.add(todoItem);
42          }
43      }
44      
45      @JsonbTransient
46      @JsonIgnore
47      public TodoItemDTO getListItem(String itemName) {
48          if (todoItems==null) { return null; }
49          return todoItems.stream()
50                          .filter(item->itemName.equalsIgnoreCase(item.getName()))
51                          .findFirst()
52                          .orElseGet(null);
53      }
54  
55      @Override
56      public String toString() {
57          StringBuilder builder = new StringBuilder();
58          builder.append("TodoList[name=").append(name)
59                 .append(", todoItems=");
60          if (todoItems!=null) {
61              boolean first=true;
62              for (TodoItemDTO todo: todoItems) {
63                  if (!first) { builder.append(",").append(System.lineSeparator()); }
64                  builder.append(todo);
65                  first=false;
66              }
67          }
68          builder.append("]");
69          return builder.toString();
70      }
71  }