InquiryEntity.java

package sk.iway.iwcm.components.inquiry.jpa;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import sk.iway.iwcm.database.ActiveRecordRepository;
import sk.iway.iwcm.system.adminlog.EntityListenersType;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditor;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditorAttr;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnNested;
import sk.iway.iwcm.system.jpa.AllowSafeHtmlAttributeConverter;

@Entity
@Table(name = "inquiry")
@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_INQUIRY)
public class InquiryEntity extends ActiveRecordRepository implements Serializable {

    @Id
    @Column(name = "question_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "S_inquiry")
    @DataTableColumn(inputType = DataTableColumnType.ID, title="ID")
    @Accessors(chain = false)
    private Long id;

    @Column(name = "question_text")
    @DataTableColumn(
        inputType = DataTableColumnType.QUILL,
        className = "dt-row-edit",
        renderFormatLinkTemplate = "javascript:;",
        title = "inquiry.question2",
        tab = "basic"
    )
    @NotEmpty
    @Size(max = 255)
    @javax.persistence.Convert(converter = AllowSafeHtmlAttributeConverter.class)
    private String questionText;

    @Column(name = "question_active")
    @DataTableColumn(
        inputType = DataTableColumnType.BOOLEAN,
        title = "components.inquirysimple.active",
        hidden = true,
        tab = "basic"
    )
    private Boolean questionActive;

    @Column(name = "multiple")
    @DataTableColumn(
        inputType = DataTableColumnType.BOOLEAN,
        title = "inquiry.answer.multiple",
        hidden = true,
        tab = "basic"
    )
    private Boolean multiple;

    @Column(name = "question_group")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title = "inquiry.group",
        tab = "advanced",
        editor = {
			@DataTableColumnEditor(
				attr = {
					@DataTableColumnEditorAttr(key = "data-ac-url", value = "/admin/rest/inquiry/autocomplete"),
                    @DataTableColumnEditorAttr(key = "data-ac-select", value = "true")
				}
			)
		}
    )
    @Size(max = 255)
    private String questionGroup;

    @Column(name = "answer_text_ok")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXTAREA,
        title = "inquiry.answer_text_ok",
        hidden = true,
        tab = "advanced"
    )
    private String answerTextOk;

    @Column(name = "answer_text_fail")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXTAREA,
        title = "inquiry.answer_text_fail",
        hidden = true,
        tab = "advanced"
    )
    private String answerTextFail;

    @Column(name = "hours")
    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        title = "inquiry.hours_number",
        hidden = true,
        tab = "advanced"
    )
    private Integer hours;

    @Column(name = "date_from")
    @DataTableColumn(
        inputType = DataTableColumnType.DATE,
        title = "inquiry.valid_since",
        tab = "advanced"
    )
    private Date dateFrom;

    @Column(name = "date_to")
    @DataTableColumn(
        inputType = DataTableColumnType.DATE,
        title = "inquiry.valid_till",
        tab = "advanced"
    )
    private Date dateTo;

    @Column(name = "total_clicks")
    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        title = "inquiry.click_number",
        className = "hideOnCreate disabled"
    )
    private Integer totalClicks;

    @Column(name = "domain_id")
    private Integer domainId;

    //Bind editor fields
    @Transient
    @DataTableColumnNested
	private transient InquiryEditorFields editorFields = null;
}