1 package net.sumaris.core.model.referential.taxon; 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 * Liste des rangs taxinomiques possibles. 35 * 36 * 37 * 38 * C’est le nom du rang dans la classification systématique ; les niveaux systématiques sont désignés par des termes consacrés (ex. : espèce, genre, famille, etc.). Le niveau systématique d’un taxon peut changer avec l’évolution de la classification ; dans ce cas, son libellé est susceptible de changer également car les suffixes notamment obéissent à des règles strictes de nomenclature (règle [R0018]). 39 * 40 * Les niveaux systématiques pris en compte dans le référentiel taxinomique Quadrige² sont (par ordre de rang) (le nom anglais de chaque niveau est indiqué entre parenthèses) : 41 * 42 * - Règne (kingdom) 43 * 44 * - Sous-règne (subkingdom) 45 * 46 * - Division (division) / Embranchement (phylum) 47 * 48 * - Subdivision (subdivision) / Sous-embranchement (subphylum) 49 * 50 * - Super-classe (superclass) 51 * 52 * - Classe (class) 53 * 54 * - Sous-classe (subclass) 55 * 56 * - Infra-classe (infraclass) 57 * 58 * - Super-ordre (superordo) 59 * 60 * - Ordre (ordo) 61 * 62 * - Sous-ordre (subordo) 63 * 64 * - Infra-ordre (infraordo) 65 * 66 * - Section (section) 67 * 68 * - Sous-section (subsection) 69 * 70 * - Super-famille (superfamily) 71 * 72 * - Famille (family) 73 * 74 * - Sous-famille (subfamily) 75 * 76 * - Tribu (tribe) 77 * 78 * - Sous-tribu (subtribe) 79 * 80 * - Genre (genus) 81 * 82 * - Sous-genre (subgenus) 83 * 84 * - Espèce (species) 85 * 86 * - Sous-espèce (subspecies) 87 * 88 * - Variété (variety) 89 * 90 * - Sous-variété (subvariety) 91 * 92 * - Forme (forma) 93 * 94 * - Sous-forme (subforma) 95 * 96 * - Incertae sedis (dummy = taxons inclassables) 97 * 98 */ 99 @Data 100 @FieldNameConstants 101 @Entity 102 @Table(name = "taxonomic_level") 103 public class TaxonomicLevel implements IItemReferentialEntity { 104 105 @Id 106 @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "TAXONOMIC_LEVEL_SEQ") 107 @SequenceGenerator(name = "TAXONOMIC_LEVEL_SEQ", sequenceName="TAXONOMIC_LEVEL_SEQ") 108 private Integer id; 109 110 @ManyToOne(fetch = FetchType.LAZY) 111 @JoinColumn(name = "status_fk", nullable = false) 112 private Status status; 113 114 @Column(name = "creation_date", nullable = false) 115 @Temporal(TemporalType.TIMESTAMP) 116 private Date creationDate; 117 118 @Column(name = "update_date") 119 @Temporal(TemporalType.TIMESTAMP) 120 private Date updateDate; 121 122 @Column(nullable = false, length = LENGTH_LABEL) 123 private String label; 124 125 @Column(nullable = false, length = LENGTH_NAME) 126 private String name; 127 128 private String description; 129 130 @Column(length = LENGTH_COMMENTS) 131 private String comments; 132 133 @Column(name = "rank_order", nullable = false) 134 private Integer rankOrder; 135 }