1 package net.sumaris.core.model.referential.taxon;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import lombok.Data;
26 import lombok.experimental.FieldNameConstants;
27 import net.sumaris.core.model.referential.IItemReferentialEntity;
28 import net.sumaris.core.model.referential.Status;
29
30 import javax.persistence.*;
31 import java.util.Date;
32
33
34
35
36
37
38 @Data
39 @FieldNameConstants
40 @Entity
41 @Table(name = "taxon_name")
42 public class TaxonName implements IItemReferentialEntity {
43
44 @Id
45 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TAXON_NAME_SEQ")
46 @SequenceGenerator(name = "TAXON_NAME_SEQ", sequenceName="TAXON_NAME_SEQ")
47 private Integer id;
48
49 @ManyToOne(fetch = FetchType.LAZY)
50 @JoinColumn(name = "status_fk", nullable = false)
51 private Status status;
52
53 @Column(name = "creation_date", nullable = false)
54 @Temporal(TemporalType.TIMESTAMP)
55 private Date creationDate;
56
57 @Column(name = "update_date")
58 @Temporal(TemporalType.TIMESTAMP)
59 private Date updateDate;
60
61 @Column(length = LENGTH_LABEL)
62 private String label;
63
64 @Column(nullable = false, length = LENGTH_NAME)
65 private String name;
66
67 private String description;
68
69 @Column(length = LENGTH_COMMENTS)
70 private String comments;
71
72 @Column(name = "complete_name", length = LENGTH_NAME)
73 private String completeName;
74
75 @Column(name = "start_date")
76 @Temporal(TemporalType.TIMESTAMP)
77 private Date startDate;
78
79 @Column(name = "end_date")
80 @Temporal(TemporalType.TIMESTAMP)
81 private Date endDate;
82
83 @Column(nullable = false, name = "is_referent")
84 private boolean isReferent;
85
86 @Column(nullable = false, name = "is_naming")
87 private boolean isNaming;
88
89 @Column(nullable = false, name = "is_virtual")
90 private boolean isVirtual;
91
92 @Column(name = "upper_rank")
93 private Integer upperRank;
94
95 @ManyToOne(fetch = FetchType.LAZY, targetEntity = ReferenceTaxon.class)
96 @JoinColumn(name = "reference_taxon_fk", nullable = false)
97 private ReferenceTaxon referenceTaxon;
98
99 @ManyToOne(fetch = FetchType.LAZY, targetEntity = TaxonomicLevel.class)
100 @JoinColumn(name = "taxonomic_level_fk", nullable = false)
101 private TaxonomicLevel taxonomicLevel;
102
103 @ManyToOne(fetch = FetchType.LAZY, targetEntity = TaxonName.class)
104 @JoinColumn(name = "parent_taxon_name_fk")
105 private TaxonName parentTaxonName;
106
107 public String toString() {
108 return String.format("TaxonName{id=%s,referenceTaxonId=%s}", id, referenceTaxon != null ? referenceTaxon.getId() : "null");
109 }
110 }