TodoListDTO.java

  1. package info.ejava.examples.jaxrs.todos.dto;

  2. import java.io.Serializable;
  3. import java.util.LinkedList;
  4. import java.util.List;

  5. import javax.json.bind.annotation.JsonbTransient;
  6. import javax.xml.bind.annotation.XmlRootElement;

  7. import com.fasterxml.jackson.annotation.JsonIgnore;

  8. @XmlRootElement(name="todoList", namespace="urn:ejava.jaxrs.todos")
  9. public class TodoListDTO implements Serializable {
  10.     private static final long serialVersionUID = 1L;
  11.     private String name;
  12.     private List<TodoItemDTO> todoItems;
  13.    
  14.     public TodoListDTO() {}
  15.    
  16.     public TodoListDTO(String name) {
  17.         this.name = name;
  18.     }
  19.     public String getName() {
  20.         return name;
  21.     }
  22.     public void setName(String name) {
  23.         this.name = name;
  24.     }
  25.    
  26.     public List<TodoItemDTO> getTodoItems() {
  27.         return todoItems;
  28.     }
  29.     public void setTodoItems(List<TodoItemDTO> todoItems) {
  30.         this.todoItems = todoItems;
  31.     }
  32.     public void withTodoItem(TodoItemDTO todoItem) {
  33.         if (todoItems==null && todoItem!=null) {
  34.             todoItems = new LinkedList<>();            
  35.         }
  36.         if (todoItem!=null) {
  37.             todoItems.add(todoItem);
  38.         }
  39.     }
  40.    
  41.     @JsonbTransient
  42.     @JsonIgnore
  43.     public TodoItemDTO getListItem(String itemName) {
  44.         if (todoItems==null) { return null; }
  45.         return todoItems.stream()
  46.                         .filter(item->itemName.equalsIgnoreCase(item.getName()))
  47.                         .findFirst()
  48.                         .orElseGet(null);
  49.     }

  50.     @Override
  51.     public String toString() {
  52.         StringBuilder builder = new StringBuilder();
  53.         builder.append("TodoList[name=").append(name)
  54.                .append(", todoItems=");
  55.         if (todoItems!=null) {
  56.             boolean first=true;
  57.             for (TodoItemDTO todo: todoItems) {
  58.                 if (!first) { builder.append(",").append(System.lineSeparator()); }
  59.                 builder.append(todo);
  60.                 first=false;
  61.             }
  62.         }
  63.         builder.append("]");
  64.         return builder.toString();
  65.     }
  66. }