View Javadoc
1   package net.sumaris.core.model.referential.pmfm;
2   
3   /*-
4    * #%L
5    * SUMARiS:: Core
6    * %%
7    * Copyright (C) 2018 SUMARiS Consortium
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the
12   * License, or (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU General Public
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
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   * Une fraction analysée est un composant du support sur lequel porte l'analyse.
35   *
36   *
37   *
38   * Les fractions analysées sont généralement des fractions "organiques", au sens d'une classification par partie d'un même organisme,
39   * Par exemple : foie, écaille, reins, dents, otolithe...
40   * Elles peuvent aussi être un sous ensemble quelconque du support. Par exemple, dans le cas des engins : le bras, …
41   *
42   * Les fractions dites "systématiques", au sens d'une classification systématique (ex : poisson : Cyprinidae / Cyprinus / Cyprinus carpio...) ne sont pas considérées comme des fractions au sens de l'entité, mais comme une précision apportée sur l'individu. Représentées par les entités "taxon" et "groupe de taxon", elles ne font pas partie de la liste des fractions analysées.
43   * Etant une liste de référence, une procédure stricte pour la création de nouvelles fractions analysées pourra être mise en place.
44   */
45  @Data
46  @FieldNameConstants
47  @Entity
48  @Table(name = "fraction")
49  public class Fraction implements IItemReferentialEntity {
50  
51      @Id
52      @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "FRACTION_SEQ")
53      @SequenceGenerator(name = "FRACTION_SEQ", sequenceName="FRACTION_SEQ")
54      private Integer id;
55  
56      @ManyToOne(fetch = FetchType.LAZY)
57      @JoinColumn(name = "status_fk", nullable = false)
58      private Status status;
59  
60      @Column(name = "creation_date", nullable = false)
61      @Temporal(TemporalType.TIMESTAMP)
62      private Date creationDate;
63  
64      @Column(name = "update_date")
65      @Temporal(TemporalType.TIMESTAMP)
66      private Date updateDate;
67  
68      @Column(nullable = false, length = LENGTH_LABEL)
69      private String label;
70  
71      @Column(nullable = false, length = LENGTH_NAME)
72      private String name;
73  
74      private String description;
75  
76      @Column(length = LENGTH_COMMENTS)
77      private String comments;
78  
79      @ManyToOne(fetch = FetchType.LAZY, targetEntity = Matrix.class)
80      @JoinColumn(name = "matrix_fk")
81      private Matrix matrix;
82  }