PerexGroupsEntity.java

package sk.iway.iwcm.components.perex_groups;

import java.io.Serializable;

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.NotBlank;
import javax.validation.constraints.Size;

import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.Tools;
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.DataTableColumnNested;

@Entity
@Table(name = "perex_groups")
@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_PEREX_GROUP_UPDATE)
public class PerexGroupsEntity implements Serializable {

    @Id
    @Column(name = "perex_group_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "S_perex_groups")
    @DataTableColumn(inputType = DataTableColumnType.ID, title="ID", renderFormat = "dt-format-selector")
    private Long id;

    @Column(name = "perex_group_name")
    @DataTableColumn(
        inputType = DataTableColumnType.OPEN_EDITOR,
        title="[[#{editor.perex_group_name}]]",
        tab = "basic",
        renderFormat = "dt-format-text",
        editor = {
            @DataTableColumnEditor(type = "text")
        }
    )
    @Size(max = 255)
    @NotBlank
    private String perexGroupName;

    @Column(name = "related_pages")
    private String relatedPages;

    @Size(max = 255)
    @Column(name = "available_groups")
    private String availableGroups;

    @Transient
    @DataTableColumnNested
	private PerexGroupsEditorFields editorFields = null;

    @Column(name = "perex_group_name_sk")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.slovak}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameSk;

    @Column(name = "perex_group_name_cz")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.czech}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameCz;

    @Column(name = "perex_group_name_en")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.english}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameEn;

    @Column(name = "perex_group_name_de")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.deutsch}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameDe;

    @Column(name = "perex_group_name_pl")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.polish}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNamePl;

    @Column(name = "perex_group_name_ru")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.ru}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameRu;

    @Column(name = "perex_group_name_hu")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.hungary}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameHu;

    @Column(name = "perex_group_name_cho")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.chorvatsky}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameCho;

    @Column(name = "perex_group_name_esp")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="[[#{temp.esp}]]",
        tab = "translates"
    )
    @Size(max = 255)
    private String perexGroupNameEsp;

    /**
     * Get perex group name by language
     * @param lng
     * @return
     */
    public String getPerexGroupName(String lng) {
        String name = getPerexGroupNameInternal(lng);
        //Get value by REQUIRED perexGroupName
        if(Tools.isEmpty(name)) name = perexGroupName;

        return name;
    }

    private String getPerexGroupNameInternal(String lng) {
        if (Tools.isEmpty(lng)) return "";
        switch(lng) {
            case "sk": return perexGroupNameSk;
            case "cz": return perexGroupNameCz;
            case "en": return perexGroupNameEn;
            case "de": return perexGroupNameDe;
            case "pl": return perexGroupNamePl;
            case "ru": return perexGroupNameRu;
            case "hu": return perexGroupNameHu;
            case "cho": return perexGroupNameCho;
            case "esp": return perexGroupNameEsp;
            default: return "";
        }
    }

    @Column(name = "field_a")
	@DataTableColumn(
        inputType = DataTableColumnType.TEXT,
		title = "components.perex.field_a",
		visible = false,
		tab = "fields"
    )
	private String fieldA;

    @Column(name = "field_b")
	@DataTableColumn(
        inputType = DataTableColumnType.TEXT,
		title = "components.perex.field_b",
		visible = false,
		tab = "fields"
    )
	private String fieldB;

    @Column(name = "field_c")
	@DataTableColumn(
        inputType = DataTableColumnType.TEXT,
		title = "components.perex.field_c",
		visible = false,
		tab = "fields"
    )
	private String fieldC;

    @Column(name = "field_d")
	@DataTableColumn(
        inputType = DataTableColumnType.TEXT,
		title = "components.perex.field_d",
		visible = false,
		tab = "fields"
    )
	private String fieldD;

    @Column(name = "field_e")
	@DataTableColumn(
        inputType = DataTableColumnType.TEXT,
		title = "components.perex.field_e",
		visible = false,
		tab = "fields"
    )
	private String fieldE;

    @Column(name = "field_f")
	@DataTableColumn(
        inputType = DataTableColumnType.TEXT,
		title = "components.perex.field_f",
		visible = false,
		tab = "fields"
    )
	private String fieldF;
}