package org.dicadeveloper.weplantaforest.admin.team; 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.admin.user.User; import org.dicadeveloper.weplantaforest.admin.views.Views; import org.springframework.hateoas.Identifiable; import com.fasterxml.jackson.annotation.JsonView; 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") @JsonView({Views.EventDetails.class, Views.TeamOverview.class}) private Long id; private Long _timeStamp; @Column(name = "_name", nullable = false, unique = true, length = 256) @JsonView({Views.EventDetails.class, Views.TeamOverview.class}) private String name; @OneToMany(mappedBy = "team", fetch = FetchType.EAGER) private List<User> members = new ArrayList<User>(); @Column(/* length = ModifiedMySql5InnoDbDialect.LENGTH_FOR_TEXT_TYPE, */ columnDefinition = "TEXT") private String _description; @OneToOne(optional = false) @JoinColumn(name = "_admin__userId") 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); } }