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
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
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 }