package org.dicadeveloper.weplantaforest.admin.codes; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import org.dicadeveloper.weplantaforest.user.User; import org.springframework.hateoas.Identifiable; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.ToString; @Entity @Getter @Setter @ToString @EqualsAndHashCode public class Team implements Identifiable<Long> { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "_teamId") private Long id; @Column(name ="_timeStamp") private Long timeStamp; @Column(name = "_name", nullable = false, unique = true, length = 256) private String name; @OneToMany(mappedBy = "team", fetch = FetchType.EAGER) // necessary to avoid infinite recursion in authenticated user json object @JsonIgnore private List<User> members = new ArrayList<User>(); @Column(name="_description", columnDefinition = "TEXT") private String description; @OneToOne(optional = false) @JoinColumn(name = "_admin__userId") // necessary to avoid infinite recursion in authenticated user json object @JsonIgnore private User admin; public void addMember(final User member) { if (!members.contains(member)) { members.add(member); } } public void removeMember(final User user) { if (!admin.equals(user)) { members.remove(user); } } public Date getDate() { return new Date(timeStamp); } public boolean isMember(final User user) { return members.contains(user); } public boolean isLeader(final User user) { return admin.equals(user); } }