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.JdbcTypeCode;
17  import org.hibernate.envers.Audited;
18  import org.hibernate.type.SqlTypes;
19  import org.springframework.data.jpa.domain.support.AuditingEntityListener;
20  import org.tailormap.api.persistence.json.CatalogNode;
21  import org.tailormap.api.persistence.listener.EntityEventPublisher;
22  
23  @Audited
24  @Entity
25  @EntityListeners({EntityEventPublisher.class, AuditingEntityListener.class})
26  public class Catalog extends AuditMetadata {
27    public static final String MAIN = "main";
28  
29    @Id
30    private String id;
31  
32    @Version
33    private Long version;
34  
35    @JdbcTypeCode(SqlTypes.JSON)
36    @Column(columnDefinition = "jsonb")
37    @NotNull private List<CatalogNode> nodes = new ArrayList<>();
38  
39    public String getId() {
40      return id;
41    }
42  
43    public Catalog setId(String id) {
44      this.id = id;
45      return this;
46    }
47  
48    public Long getVersion() {
49      return version;
50    }
51  
52    public Catalog setVersion(Long version) {
53      this.version = version;
54      return this;
55    }
56  
57    public List<CatalogNode> getNodes() {
58      return nodes;
59    }
60  
61    public Catalog setNodes(List<CatalogNode> nodes) {
62      this.nodes = nodes;
63      return this;
64    }
65  }