View Javadoc
1   package model.entity;
2   
3   import lombok.Getter;
4   import lombok.Setter;
5   import org.hibernate.annotations.LazyCollection;
6   import org.hibernate.annotations.LazyCollectionOption;
7   import org.hibernate.annotations.NaturalId;
8   
9   import javax.persistence.*;
10  import java.io.Serializable;
11  import java.util.Map;
12  
13  @Entity
14  public class Section implements Serializable {
15  
16      @Getter @Setter
17      @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
18      protected Integer id;
19  
20      @Getter @Setter
21      @Column(length = 255)
22      protected String description;
23  
24  
25      @Getter @Setter
26      @Column(length = 50, nullable = false, unique = true)
27      @NaturalId(mutable = true)
28      protected String name;
29  
30      @Getter @Setter
31      @Column(length = 4096)
32      protected String picture;
33  
34      @Getter @Setter
35      @Column(length = 4096)
36      protected String banner;
37  
38      @OneToMany(mappedBy="section")
39      @MapKeyJoinColumn(name="user_id", updatable = false, insertable = false)
40      @LazyCollection(LazyCollectionOption.EXTRA)
41      protected Map<User, Follow> follows;
42  
43      /**
44       * Ottieni un'istanza di <pre>Follow</pre> tra la sezione in questione e l'utente specificato (o <pre>null</pre> se tale istanza non è presente)
45       * @param user Riferimento all'utente
46       * @return Un oggetto {@link Follow}
47       */
48      public Follow getFollow(User user){
49          return follows.get(user);
50      }
51  
52      /**
53       * Ottieni il numero di seguaci
54       * @return Il numero di seguaci alla sezione in questione
55       */
56      public int getFollowCount(){
57          return follows.size();
58      }
59  
60      public Section(){}
61  
62      @Override
63      public boolean equals(Object o) {
64          if (this == o) return true;
65          if (!(o instanceof Section)) return false;
66          Section section = (Section) o;
67          return id.equals(section.id);
68      }
69  
70      @Override
71      public int hashCode() {
72          return getClass().hashCode();
73      }
74  }