View Javadoc
1   /*
2    * Copyright (C) 2023 B3Partners B.V.
3    *
4    * SPDX-License-Identifier: MIT
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  }