EnumerationTypeBean.java

package sk.iway.iwcm.components.enumerations.model;

import java.io.Serializable;
import java.util.Objects;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Transient;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

import lombok.Getter;
import lombok.Setter;
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.DataTableColumnNested;

@Entity
@Table(name = "enumeration_type")
//@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorValue( "default" )

@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_UPDATEDB)
public class EnumerationTypeBean extends ActiveRecordRepository implements Serializable {

    private static final long serialVersionUID = -1L;

    @Id
    @GeneratedValue(generator = "WJGen_enumeration_type")
    @TableGenerator(name = "WJGen_enumeration_type", pkColumnValue = "enumeration_type")
    @Column(name = "enumeration_type_id")
    @DataTableColumn(
        inputType = DataTableColumnType.ID,
        title="ID",
        tab="basic"
    )
    private Long id;

    @Column(name = "name")
    @NotBlank
    @DataTableColumn(
        inputType = DataTableColumnType.OPEN_EDITOR,
        title="components.enumerations.typeName",
        tab="basic"
    )
    @Size(max = 255)
    private String typeName;

    @Column(name = "allow_child_enumeration_type")
    @DataTableColumn(
        inputType = DataTableColumnType.CHECKBOX,
        title="components.enumerations.allow_child_enumeration_type",
        hidden = true,
        tab="basic"
    )
    private boolean allowChildEnumerationType;

    @Column(name = "allow_parent_enumeration_data")
    @DataTableColumn(
        inputType = DataTableColumnType.CHECKBOX,
        title="components.enumerations.allow_parent_enumeration_data",
        hidden = true,
        tab="basic"
    )
    private boolean allowParentEnumerationData;

    @Column(name = "string1_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;1",
        tab="strings"
    )
    @Size(max = 255)
    private String string1Name;

    @Column(name = "string2_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;2",
        tab="strings"
    )
    @Size(max = 255)
    private String string2Name;

    @Column(name = "string3_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;3",
        tab="strings"
    )
    @Size(max = 255)
    private String string3Name;

    @Column(name = "string4_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;4",
        tab="strings"
    )
    @Size(max = 255)
    private String string4Name;

    @Column(name = "string5_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;5",
        tab="strings"
    )
    @Size(max = 255)
    private String string5Name;

    @Column(name = "string6_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;6",
        tab="strings"
    )
    @Size(max = 255)
    private String string6Name;

    @Column(name = "string7_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;7",
        tab="strings"
    )
    @Size(max = 255)
    private String string7Name;

    @Column(name = "string8_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;8",
        tab="strings"
    )
    @Size(max = 255)
    private String string8Name;

    @Column(name = "string9_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;9",
        tab="strings"
    )
    @Size(max = 255)
    private String string9Name;

    @Column(name = "string10_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;10",
        tab="strings"
    )
    @Size(max = 255)
    private String string10Name;

    @Column(name = "string11_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;11",
        tab="strings"
    )
    @Size(max = 255)
    private String string11Name;

    @Column(name = "string12_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.retazec;12",
        tab="strings"
    )
    @Size(max = 255)
    private String string12Name;

    @Column(name = "decimal1_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.cislo;1",
        tab="numbers"
    )
    @Size(max = 255)
    private String decimal1Name;

    @Column(name = "decimal2_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.cislo;2",
        tab="numbers"
    )
    @Size(max = 255)
    private String decimal2Name;

    @Column(name = "decimal3_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.cislo;3",
        tab="numbers"
    )
    @Size(max = 255)
    private String decimal3Name;

    @Column(name = "decimal4_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.cislo;4",
        tab="numbers"
    )
    @Size(max = 255)
    private String decimal4Name;

    @Column(name = "boolean1_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.boolean;1",
        tab="booleans"
    )
    @Size(max = 255)
    private String boolean1Name;

    @Column(name = "boolean2_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.boolean;2",
        tab="booleans"
    )
    @Size(max = 255)
    private String boolean2Name;

    @Column(name = "boolean3_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.boolean;3",
        tab="booleans"
    )
    @Size(max = 255)
    private String boolean3Name;

    @Column(name = "boolean4_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.boolean;4",
        tab="booleans"
    )
    @Size(max = 255)
    private String boolean4Name;

    @Column(name = "date1_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.date;1",
        tab="dates"
    )
    @Size(max = 255)
    private String date1Name;

    @Column(name = "date2_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.date;2",
        tab="dates"
    )
    @Size(max = 255)
    private String date2Name;

    @Column(name = "date3_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.date;3",
        tab="dates"
    )
    @Size(max = 255)
    private String date3Name;

    @Column(name = "date4_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.enumerations.admin_enum_list.date;4",
        tab="dates"
    )
    @Size(max = 255)
    private String date4Name;

    @Column(name = "hidden")
    private boolean hidden;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "child_enumeration_type_id")
    private EnumerationTypeBean childEnumerationTypeBean;

    //Bind editor fields
    @Transient
    @DataTableColumnNested
	private EnumerationTypeEditorFields editorFields = null;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        EnumerationTypeBean that = (EnumerationTypeBean) o;
        return id == that.id &&
                Objects.equals(id, that.id) &&
                Objects.equals(typeName, that.typeName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, id, typeName);
    }

    @Override
    public Long getId() {
        return id;
    }

    @Override
    public void setId(Long id) {
        this.id = id;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Integer getEnumerationTypeId() {
       if(id == null) return null;
       return id.intValue();
    }

    public void setEnumerationTypeId(Integer enumerationTypeId) {
        this.id = Long.valueOf(enumerationTypeId);
    }

    public void setEnumerationTypeId(int enumerationTypeId) {
        this.id = Long.valueOf(enumerationTypeId);
    }
}