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.JdbcTypeCode;
20  import org.hibernate.envers.Audited;
21  import org.hibernate.type.SqlTypes;
22  import org.springframework.data.jpa.domain.support.AuditingEntityListener;
23  import org.tailormap.api.persistence.json.FormField;
24  import org.tailormap.api.persistence.json.FormOptions;
25  import org.tailormap.api.persistence.listener.EntityEventPublisher;
26  
27  @Audited
28  @Entity
29  @EntityListeners({EntityEventPublisher.class, AuditingEntityListener.class})
30  public class Form extends AuditMetadata {
31    @Id
32    @GeneratedValue(strategy = GenerationType.IDENTITY)
33    private Long id;
34  
35    @Version
36    private Long version;
37  
38    @NotNull private String name;
39  
40    private Long featureSourceId;
41  
42    private String featureTypeName;
43  
44    @JdbcTypeCode(SqlTypes.JSON)
45    @Column(columnDefinition = "jsonb")
46    @NotNull private FormOptions options = new FormOptions();
47  
48    @JdbcTypeCode(SqlTypes.JSON)
49    @Column(columnDefinition = "jsonb")
50    @NotNull private List<FormField> fields = new ArrayList<>();
51  
52    public Long getId() {
53      return id;
54    }
55  
56    public void setId(Long id) {
57      this.id = id;
58    }
59  
60    public Long getVersion() {
61      return version;
62    }
63  
64    public void setVersion(Long version) {
65      this.version = version;
66    }
67  
68    public String getName() {
69      return name;
70    }
71  
72    public void setName(String name) {
73      this.name = name;
74    }
75  
76    public Long getFeatureSourceId() {
77      return featureSourceId;
78    }
79  
80    public void setFeatureSourceId(Long featureSourceId) {
81      this.featureSourceId = featureSourceId;
82    }
83  
84    public String getFeatureTypeName() {
85      return featureTypeName;
86    }
87  
88    public void setFeatureTypeName(String featureTypeName) {
89      this.featureTypeName = featureTypeName;
90    }
91  
92    public FormOptions getOptions() {
93      return options;
94    }
95  
96    public void setOptions(FormOptions options) {
97      this.options = options;
98    }
99  
100   public List<FormField> getFields() {
101     return fields;
102   }
103 
104   public void setFields(List<FormField> fields) {
105     this.fields = fields;
106   }
107 }