View Javadoc
1   /*
2    * Copyright (C) 2024 B3Partners B.V.
3    *
4    * SPDX-License-Identifier: MIT
5    */
6   
7   package org.tailormap.api.persistence;
8   
9   import jakarta.persistence.Column;
10  import jakarta.persistence.Entity;
11  import jakarta.persistence.EntityListeners;
12  import jakarta.persistence.GeneratedValue;
13  import jakarta.persistence.GenerationType;
14  import jakarta.persistence.Id;
15  import jakarta.persistence.Version;
16  import jakarta.validation.constraints.NotNull;
17  import java.util.ArrayList;
18  import java.util.List;
19  import org.hibernate.annotations.Type;
20  import org.hibernate.envers.Audited;
21  import org.springframework.data.jpa.domain.support.AuditingEntityListener;
22  import org.tailormap.api.persistence.json.FormField;
23  import org.tailormap.api.persistence.json.FormOptions;
24  import org.tailormap.api.persistence.listener.EntityEventPublisher;
25  
26  @Audited
27  @Entity
28  @EntityListeners({EntityEventPublisher.class, AuditingEntityListener.class})
29  public class Form extends AuditMetadata {
30    @Id
31    @GeneratedValue(strategy = GenerationType.IDENTITY)
32    private Long id;
33  
34    @Version
35    private Long version;
36  
37    @NotNull private String name;
38  
39    private Long featureSourceId;
40  
41    private String featureTypeName;
42  
43    @Type(value = io.hypersistence.utils.hibernate.type.json.JsonBinaryType.class)
44    @Column(columnDefinition = "jsonb")
45    @NotNull private FormOptions options = new FormOptions();
46  
47    @Type(value = io.hypersistence.utils.hibernate.type.json.JsonBinaryType.class)
48    @Column(columnDefinition = "jsonb")
49    @NotNull private List<FormField> fields = new ArrayList<>();
50  
51    public Long getId() {
52      return id;
53    }
54  
55    public void setId(Long id) {
56      this.id = id;
57    }
58  
59    public Long getVersion() {
60      return version;
61    }
62  
63    public void setVersion(Long version) {
64      this.version = version;
65    }
66  
67    public String getName() {
68      return name;
69    }
70  
71    public void setName(String name) {
72      this.name = name;
73    }
74  
75    public Long getFeatureSourceId() {
76      return featureSourceId;
77    }
78  
79    public void setFeatureSourceId(Long featureSourceId) {
80      this.featureSourceId = featureSourceId;
81    }
82  
83    public String getFeatureTypeName() {
84      return featureTypeName;
85    }
86  
87    public void setFeatureTypeName(String featureTypeName) {
88      this.featureTypeName = featureTypeName;
89    }
90  
91    public FormOptions getOptions() {
92      return options;
93    }
94  
95    public void setOptions(FormOptions options) {
96      this.options = options;
97    }
98  
99    public List<FormField> getFields() {
100     return fields;
101   }
102 
103   public void setFields(List<FormField> fields) {
104     this.fields = fields;
105   }
106 }