package com.sonymusic.dx.persistence.gras;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

import java.io.Serializable;

@Entity
@Table(name = "vgras077")
public class Language extends RAASClientSpecificEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "language_key", nullable = false, length = 2)
    private String languageKey;

    @Column(name = "language_name", nullable = false, length = 50)
    private String languageName;

    @Column(name = "is_spoken_language", length = 1)
    private String isSpokenLanguage;

    @Column(name = "is_written_language", length = 1)
    private String isWrittenLanguage;

    @Column(name = "use_as_local_language", length = 1)
    private String useAsLocalLanguage;

    @Column(name = "marc21_lang_code", length = 3)
    private String marc21LangCode;

    @Column(name = "iso_639_1_lang_code", length = 1)
    private String iso6391Langcode;

    @Column(name = "iso_639_2_lang_code", length = 1)
    private String iso6392Langcode;

    @Column(name = "ietf_lang_script_tag")
    private String ietfLangScriptTag;

    public String getIso6391Langcode() {
        return iso6391Langcode;
    }

    public void setIso6391Langcode(String iso6391Langcode) {
        this.iso6391Langcode = iso6391Langcode;
    }

    public String getIso6392Langcode() {
        return iso6392Langcode;
    }

    public void setIso6392Langcode(String iso6392Langcode) {
        this.iso6392Langcode = iso6392Langcode;
    }

    public String getUseAsLocalLanguage() {
        return useAsLocalLanguage;
    }

    public void setUseAsLocalLanguage(String useAsLocalLanguage) {
        this.useAsLocalLanguage = useAsLocalLanguage;
    }

    public String getIsSpokenLanguage() {
        return this.isSpokenLanguage;
    }

    public void setIsSpokenLanguage(String isSpokenLanguage) {
        this.isSpokenLanguage = isSpokenLanguage;
    }

    public String getIsWrittenLanguage() {
        return this.isWrittenLanguage;
    }

    public void setIsWrittenLanguage(String isWrittenLanguage) {
        this.isWrittenLanguage = isWrittenLanguage;
    }

    public String getLanguageKey() {
        return this.languageKey;
    }

    public void setLanguageKey(String languageKey) {
        this.languageKey = languageKey;
    }

    public String getLanguageName() {
        return this.languageName;
    }

    public void setLanguageName(String languageName) {
        this.languageName = languageName;
    }

    public String getMarc21LangCode() {
        return this.marc21LangCode;
    }

    public void setMarc21LangCode(String marc21LangCode) {
        this.marc21LangCode = marc21LangCode;
    }

    public String getIetfLangScriptTag() {
        return ietfLangScriptTag;
    }

    public void setIetfLangScriptTag(String ietfLangScriptTag) {
        this.ietfLangScriptTag = ietfLangScriptTag;
    }


    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getLanguageKey() == null) ? 0 : getLanguageKey().hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (!(obj instanceof Language))
            return false;
        Language other = (Language) obj;
        if (getLanguageKey() == null) {
            if (other.getLanguageKey() != null)
                return false;
        } else if (!getLanguageKey().equals(other.getLanguageKey()))
            return false;
        return true;
    }

}
