View Javadoc
1   package fr.tiogars.inception.domains.domaintemplate.entities;
2   
3   import java.time.Instant;
4   
5   import org.hibernate.annotations.SQLRestriction;
6   import org.springframework.data.annotation.CreatedBy;
7   import org.springframework.data.annotation.CreatedDate;
8   import org.springframework.data.annotation.LastModifiedBy;
9   import org.springframework.data.annotation.LastModifiedDate;
10  import org.springframework.data.jpa.domain.support.AuditingEntityListener;
11  
12  import jakarta.persistence.Column;
13  import jakarta.persistence.Entity;
14  import jakarta.persistence.EntityListeners;
15  import jakarta.persistence.GeneratedValue;
16  import jakarta.persistence.GenerationType;
17  import jakarta.persistence.Id;
18  import jakarta.persistence.Table;
19  import jakarta.persistence.Version;
20  
21  /** Persists a DomainTemplate business object. */
22  @Entity
23  @Table(name = "domain_templates")
24  @EntityListeners(AuditingEntityListener.class)
25  @SQLRestriction("deleted_date IS NULL")
26  public class DomainTemplateEntity {
27  
28      @Id
29      @GeneratedValue(strategy = GenerationType.IDENTITY)
30      private Long id;
31  
32      @Column(nullable = false, updatable = false)
33      private String code;
34  
35      @Column(nullable = false)
36      private String label;
37  
38      private String description;
39  
40      @CreatedDate
41      @Column(nullable = false, updatable = false)
42      private Instant createdDate;
43  
44      @LastModifiedDate
45      @Column(nullable = false)
46      private Instant lastModifiedDate;
47  
48      @CreatedBy
49      @Column(nullable = false, updatable = false)
50      private String createdBy;
51  
52      @LastModifiedBy
53      @Column(nullable = false)
54      private String lastModifiedBy;
55  
56      private Instant deletedDate;
57  
58      private String deletedBy;
59  
60      @Version
61      @Column(nullable = false)
62      private long version;
63  
64      protected DomainTemplateEntity() {
65          // required by JPA
66      }
67  
68      public DomainTemplateEntity(String code, String label, String description) {
69          this.code = code;
70          this.label = label;
71          this.description = description;
72      }
73  
74      public void update(String label, String description) {
75          this.label = label;
76          this.description = description;
77      }
78  
79      public void softDelete(Instant deletedDate, String deletedBy) {
80          this.deletedDate = java.util.Objects.requireNonNull(deletedDate);
81          this.deletedBy = java.util.Objects.requireNonNull(deletedBy);
82      }
83  
84      public Long getId() {
85          return id;
86      }
87  
88      public String getCode() {
89          return code;
90      }
91  
92      public String getLabel() {
93          return label;
94      }
95  
96      public String getDescription() {
97          return description;
98      }
99  
100     public Instant getCreatedDate() {
101         return createdDate;
102     }
103 
104     public Instant getLastModifiedDate() {
105         return lastModifiedDate;
106     }
107 
108     public String getCreatedBy() {
109         return createdBy;
110     }
111 
112     public String getLastModifiedBy() {
113         return lastModifiedBy;
114     }
115 
116     public Instant getDeletedDate() {
117         return deletedDate;
118     }
119 
120     public String getDeletedBy() {
121         return deletedBy;
122     }
123 }