package bo.gotthardt.model.todo;
import bo.gotthardt.AccessibleBy;
import bo.gotthardt.Persistable;
import bo.gotthardt.model.User;
import com.avaje.ebean.annotation.CreatedTimestamp;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.common.collect.Lists;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
/**
* @author Bo Gotthardt
*/
@Entity
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class TodoList implements Persistable, AccessibleBy<User> {
@Id
private UUID id;
private String name;
@OneToMany(cascade = CascadeType.ALL)
private List<TodoItem> items = Lists.newArrayList();
@CreatedTimestamp
private LocalDateTime createdDate;
@ManyToOne
@JsonIgnore
private User owner;
public TodoList(String name, User owner) {
this.name = name;
this.owner = owner;
}
public void addItem(String name) {
items.add(new TodoItem(name));
}
@Override
public boolean isAccessibleBy(User principal) {
return owner.getId().equals(principal.getId());
}
}