package io.delphiplatform.api.v3.model.trackposition;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

import org.openapitools.jackson.nullable.JsonNullable;

import java.time.LocalDate;
import java.util.Objects;

@Deprecated
@JsonPropertyOrder(alphabetic = true)
public class PlaylistTrackPositionSummary {

    @JsonProperty("isrc")
    private String isrc;

    @JsonProperty("date")
    @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE)
    private JsonNullable<LocalDate> date = JsonNullable.undefined();

    @JsonProperty("dsp")
    private JsonNullable<String> dsp = JsonNullable.undefined();

    @JsonProperty("total_playlists")
    private JsonNullable<Integer> totalPlaylists = JsonNullable.undefined();

    public PlaylistTrackPositionSummary isrc(String isrc) {
        this.isrc = isrc;
        return this;
    }

    public String getIsrc() {
        return isrc;
    }

    public void setIsrc(String isrc) {
        this.isrc = isrc;
    }

    public PlaylistTrackPositionSummary date(LocalDate date) {
        this.date = JsonNullable.of(date);
        return this;
    }

    public JsonNullable<LocalDate> getDate() {
        return date;
    }

    public void setDate(JsonNullable<LocalDate> date) {
        this.date = date;
    }

    public PlaylistTrackPositionSummary dsp(String dsp) {
        this.dsp = JsonNullable.of(dsp);
        return this;
    }

    public JsonNullable<String> getDsp() {
        return dsp;
    }

    public void setDsp(JsonNullable<String> dsp) {
        this.dsp = dsp;
    }

    public PlaylistTrackPositionSummary totalPlaylists(Integer totalPlaylists) {
        this.totalPlaylists = JsonNullable.of(totalPlaylists);
        return this;
    }

    public JsonNullable<Integer> getTotalPlaylists() {
        return totalPlaylists;
    }

    public void setTotalPlaylists(JsonNullable<Integer> totalPlaylists) {
        this.totalPlaylists = totalPlaylists;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        PlaylistTrackPositionSummary playlistTrackPositionSummary = (PlaylistTrackPositionSummary) o;
        return Objects.equals(this.isrc, playlistTrackPositionSummary.isrc) &&
            Objects.equals(this.date, playlistTrackPositionSummary.date) &&
            Objects.equals(this.dsp, playlistTrackPositionSummary.dsp) &&
            Objects.equals(this.totalPlaylists, playlistTrackPositionSummary.totalPlaylists);
    }

    @Override
    public int hashCode() {
        return Objects.hash(isrc, date, dsp, totalPlaylists);
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class PlaylistTrackPositionSummary {\n");

        sb.append("    isrc: ").append(toIndentedString(isrc)).append("\n");
        sb.append("    date: ").append(toIndentedString(date)).append("\n");
        sb.append("    dsp: ").append(toIndentedString(dsp)).append("\n");
        sb.append("    totalPlaylists: ").append(toIndentedString(totalPlaylists)).append("\n");
        sb.append("}");
        return sb.toString();
    }

    private String toIndentedString(Object o) {
        if (o == null) {
            return "null";
        }
        return o.toString().replace("\n", "\n    ");
    }
}

