package com.sonymusic.dx.persistence.gras;

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

@Entity
@IdClass(TrackSplitDealPk.class)
@Table(name = "vgras179", catalog = "DSAM000")
public class TrackSplitDeal extends RAASClientSpecificEntity {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "track_no", nullable = false, insertable = false, updatable = false)
    private String trackNo;

    @Id
    @Column(name = "track_ext", nullable = false, insertable = false, updatable = false)
    private String trackExt;

    @Id
    @Column(name = "deal_no", nullable = false, insertable = false, updatable = false)
    private Long dealNo;

    @Column(name = "is_confidential", nullable = false, length = 1)
    @Convert(converter = YesNoConverter.class)
    private boolean isConfidential;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumns({ @JoinColumn(name = "track_no", referencedColumnName = "track_no", insertable = false, updatable = false, nullable = false),
            @JoinColumn(name = "track_ext", referencedColumnName = "track_ext", insertable = false, updatable = false, nullable = false) })
    private Track track;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "deal_no", insertable = false, updatable = false)
    private SplitDeal splitDeal;

    public String getTrackNo() {
        return trackNo;
    }

    public void setTrackNo(String trackNo) {
        this.trackNo = trackNo;
    }

    public String getTrackExt() {
        return trackExt;
    }

    public void setTrackExt(String trackExt) {
        this.trackExt = trackExt;
    }

    public Long getDealNo() {
        return dealNo;
    }

    public void setDealNo(Long dealNo) {
        this.dealNo = dealNo;
    }

    public boolean isConfidential() {
        return isConfidential;
    }

    public void setConfidential(boolean isConfidential) {
        this.isConfidential = isConfidential;
    }

    public Track getTrack() {
        return track;
    }

    public void setTrack(Track track) {
        this.track = track;
    }

    public SplitDeal getSplitDeal() {
        return splitDeal;
    }

    public void setSplitDeal(SplitDeal splitDeal) {
        this.splitDeal = splitDeal;
    }

}
