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 }