Form.java
/*
* Copyright (C) 2024 B3Partners B.V.
*
* SPDX-License-Identifier: MIT
*/
package org.tailormap.api.persistence;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Version;
import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.envers.Audited;
import org.hibernate.type.SqlTypes;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.tailormap.api.persistence.json.FormField;
import org.tailormap.api.persistence.json.FormOptions;
import org.tailormap.api.persistence.listener.EntityEventPublisher;
@Audited
@Entity
@EntityListeners({EntityEventPublisher.class, AuditingEntityListener.class})
public class Form extends AuditMetadata {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Version
private Long version;
@NotNull private String name;
private Long featureSourceId;
private String featureTypeName;
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "jsonb")
@NotNull private FormOptions options = new FormOptions();
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "jsonb")
@NotNull private List<FormField> fields = new ArrayList<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getFeatureSourceId() {
return featureSourceId;
}
public void setFeatureSourceId(Long featureSourceId) {
this.featureSourceId = featureSourceId;
}
public String getFeatureTypeName() {
return featureTypeName;
}
public void setFeatureTypeName(String featureTypeName) {
this.featureTypeName = featureTypeName;
}
public FormOptions getOptions() {
return options;
}
public void setOptions(FormOptions options) {
this.options = options;
}
public List<FormField> getFields() {
return fields;
}
public void setFields(List<FormField> fields) {
this.fields = fields;
}
}