View Javadoc
1   package net.sumaris.core.model.referential.location;
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  
28  import javax.persistence.*;
29  import java.io.Serializable;
30  import java.util.Date;
31  
32  @Data
33  @FieldNameConstants
34  @Entity
35  @Cacheable
36  @Table(name="location_association")
37  @IdClass(LocationAssociationId.class)
38  public class LocationAssociation implements Serializable {
39  
40      @Id
41      @ManyToOne(fetch = FetchType.LAZY)
42      @JoinColumn(name = "parent_location_fk")
43      private Location parentLocation;
44  
45      @Id
46      @ManyToOne(fetch = FetchType.LAZY)
47      @JoinColumn(name = "child_location_fk")
48      private Location childLocation;
49  
50      /**
51       * Ratio de couverture (en surface) du lieu fils par rapport au lieu père. La valeur doit etre
52       * supérieure strictement à 0 et inférieur ou égale à 1.
53       * Un Lieu qui a un ratio de surface de 1 n'a donc qu'un seul lieu père direct. Un lieu qui a un
54       * ratio de surface inférieur à 1 peu avoir potentiellement plusieurs lieux pères directs.
55       * @return this.childSurfaceRatio Double
56       */
57      @Column(name = "child_surface_ratio", nullable = false)
58      private Double childSurfaceRatio = 1d;
59  
60      @Column(name = "update_date")
61      @Temporal(TemporalType.TIMESTAMP)
62      private Date updateDate;
63  }