package com.sonymusic.dx.persistence.gras;

import java.io.Serializable;

import jakarta.persistence.*;
import org.hibernate.type.YesNoConverter;

@Entity
@Table(name = "vgras024")
public class Company extends RAASClientSpecificEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "company_key")
	private String companyKey;

	@Column(name = "company_name")
	private String companyName;

	@Column(name = "is_initiator")
	@Convert(converter = YesNoConverter.class)
	private Boolean isInitator;

	@Column(name = "is_maint_owner")
	@Convert(converter = YesNoConverter.class)
	private Boolean isMaintOwner;

	@Column(name = "is_DSP_flag")
	@Convert(converter = YesNoConverter.class)
	private boolean isDSPFlag;

	@Column(name = "is_active_flag")
	@Convert(converter = YesNoConverter.class)
	private Boolean isActive;

	@Column(name = "is_active_initiator_flag")
	@Convert(converter = YesNoConverter.class)
	private Boolean isActiveInit;

	@Column(name = "is_active_maintown_flag")
	@Convert(converter = YesNoConverter.class)
	private Boolean isActiveMaintOwner;

	@Column(name = "ppb_rights_flag")
	@Convert(converter = YesNoConverter.class)
	private Boolean hasPpbrights;

	@Column(name = "digitl_rights_avail_flag")
	@Convert(converter = YesNoConverter.class)
	private Boolean isDigitalRightsAvail;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "license_type_key")
    private LicenseType licenseType;

//	@OneToOne(mappedBy = "company", optional = true)
//	private RepertoireOwner repertoireOwner;
//
//	@OneToOne(mappedBy = "company", optional = true)
//	private ProfitCenter profitCenter;
//
//	@OneToOne(mappedBy = "company", optional = true)
//	private ParentRepertoireOwner parentRepertoireOwner;

//	public RepertoireOwner getRepertoireOwner() {
//		return repertoireOwner;
//	}
//
//	public void setRepertoireOwner(RepertoireOwner repertoireOwner) {
//		this.repertoireOwner = repertoireOwner;
//	}

//	public ProfitCenter getProfitCenter() {
//		return profitCenter;
//	}
//
//	public void setProfitCenter(ProfitCenter profitCenter) {
//		this.profitCenter = profitCenter;
//	}
//
//	public ParentRepertoireOwner getParentRepertoireOwner() {
//		return parentRepertoireOwner;
//	}
//
//	public void setParentRepertoireOwner(ParentRepertoireOwner parentRepertoireOwner) {
//		this.parentRepertoireOwner = parentRepertoireOwner;
//	}

	public Company(){
		super();
	}

	public Company(String companyName){
		this.companyName=companyName;
	}
//	public Company(String companyName,String repOwnerKey){
//		this.companyName=companyName;
//		this.repertoireOwner = new RepertoireOwner(repOwnerKey);
//	}


    public LicenseType getLicenseType() {
        return licenseType;
    }

    public void setLicenseType(LicenseType licenseType) {
        this.licenseType = licenseType;
    }

    public String getCompanyKey() {
		return companyKey;
	}

	public void setCompanyKey(String companyKey) {
		this.companyKey = companyKey;
	}

	public String getCompanyName() {
		return companyName;
	}

	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}

	public Boolean getIsInitator() {
		return isInitator;
	}

	public void setIsInitator(Boolean isInitator) {
		this.isInitator = isInitator;
	}

	public Boolean getIsMaintOwner() {
		return isMaintOwner;
	}

	public void setIsMaintOwner(Boolean isMaintOwner) {
		this.isMaintOwner = isMaintOwner;
	}

	public boolean isDSPFlag() {
		return isDSPFlag;
	}

	public void setDSPFlag(boolean isDSPFlag) {
		this.isDSPFlag = isDSPFlag;
	}

	public Boolean getIsActive() {
		return isActive;
	}

	public void setIsActive(Boolean isActive) {
		this.isActive = isActive;
	}

	public Boolean getIsActiveInit() {
		return isActiveInit;
	}

	public void setIsActiveInit(Boolean isActiveInit) {
		this.isActiveInit = isActiveInit;
	}

	public Boolean getIsActiveMaintOwner() {
		return isActiveMaintOwner;
	}

	public void setIsActiveMaintOwner(Boolean isActiveMaintOwner) {
		this.isActiveMaintOwner = isActiveMaintOwner;
	}

	public Boolean getHasPpbrights() {
		return hasPpbrights;
	}

	public void setHasPpbrights(Boolean hasPpbrights) {
		this.hasPpbrights = hasPpbrights;
	}

	public Boolean getIsDigitalRightsAvail() {
		return isDigitalRightsAvail;
	}

	public void setIsDigitalRightsAvail(Boolean isDigitalRightsAvail) {
		this.isDigitalRightsAvail = isDigitalRightsAvail;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((companyKey == null) ? 0 : companyKey.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;
		Company other = (Company) obj;
		if (companyKey == null) {
			if (other.companyKey != null)
				return false;
		} else if (!companyKey.equals(other.companyKey))
			return false;
		return true;
	}

}
