1
2
3
4
5
6 package org.tailormap.api.persistence;
7
8 import jakarta.persistence.Column;
9 import jakarta.persistence.Entity;
10 import jakarta.persistence.EntityListeners;
11 import jakarta.persistence.Id;
12 import jakarta.persistence.Version;
13 import jakarta.validation.constraints.NotNull;
14 import java.util.ArrayList;
15 import java.util.List;
16 import org.hibernate.annotations.Type;
17 import org.hibernate.envers.Audited;
18 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
19 import org.tailormap.api.persistence.json.CatalogNode;
20 import org.tailormap.api.persistence.listener.EntityEventPublisher;
21
22 @Audited
23 @Entity
24 @EntityListeners({EntityEventPublisher.class, AuditingEntityListener.class})
25 public class Catalog extends AuditMetadata {
26 public static final String MAIN = "main";
27
28 @Id
29 private String id;
30
31 @Version
32 private Long version;
33
34 @Type(value = io.hypersistence.utils.hibernate.type.json.JsonBinaryType.class)
35 @Column(columnDefinition = "jsonb")
36 @NotNull private List<CatalogNode> nodes = new ArrayList<>();
37
38 public String getId() {
39 return id;
40 }
41
42 public Catalog setId(String id) {
43 this.id = id;
44 return this;
45 }
46
47 public Long getVersion() {
48 return version;
49 }
50
51 public Catalog setVersion(Long version) {
52 this.version = version;
53 return this;
54 }
55
56 public List<CatalogNode> getNodes() {
57 return nodes;
58 }
59
60 public Catalog setNodes(List<CatalogNode> nodes) {
61 this.nodes = nodes;
62 return this;
63 }
64 }