package com.sonymusic.dx.persistence.gras;

import org.hibernate.type.YesNoConverter;

import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToOne;
import jakarta.persistence.PrimaryKeyJoinColumn;
import jakarta.persistence.Table;

@Entity
@Table(name = "vgras112")
public class ProfitCenter extends RAASClientSpecificEntity {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "profit_center_key")
    private String profitCenterKey;

    @OneToOne(optional = false, fetch = FetchType.LAZY)
    @PrimaryKeyJoinColumn(name = "profit_center_key", referencedColumnName = "company_key")
    private Company company;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "parent_rep_owner_key", insertable = false, updatable = false)
    private ParentRepertoireOwner parentRepertoireOwner;

    @Column(name = "excl_from_is_local_upd")
    @Convert(converter = YesNoConverter.class)
    private Boolean isExcludedFromLocalUpdate;

    protected ProfitCenter() {

    }

    public ParentRepertoireOwner getParentRepertoireOwner() {
        return parentRepertoireOwner;
    }

    public void setParentRepertoireOwner(ParentRepertoireOwner parentRepertoireOwner) {
        this.parentRepertoireOwner = parentRepertoireOwner;
    }

    public String getProfitCenterKey() {
        return profitCenterKey;
    }

    public void setProfitCenterKey(String profitCenterKey) {
        this.profitCenterKey = profitCenterKey;
    }

    public Company getCompany() {
        return company;
    }

    public void setCompany(Company company) {
        this.company = company;
    }

    public Boolean getIsExcludedFromLocalUpdate() {
        return isExcludedFromLocalUpdate;
    }

    public void setIsExcludedFromLocalUpdate(Boolean isExcludedFromLocalUpdate) {
        this.isExcludedFromLocalUpdate = isExcludedFromLocalUpdate;
    }

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

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        ProfitCenter other = (ProfitCenter) obj;
        if (profitCenterKey == null) {
            if (other.profitCenterKey != null)
                return false;
        } else if (!profitCenterKey.equals(other.profitCenterKey))
            return false;
        return true;
    }

}

