package io.delphiplatform.api.v3.model;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.Objects;

/**
 * Apple-specific age bands
 */
public class AppleAgeBand {

    @JsonProperty("all_0_17")
    private Long all017;

    @JsonProperty("all_18_24")
    private Long all1824;

    @JsonProperty("all_25_34")
    private Long all2534;

    @JsonProperty("all_35_44")
    private Long all3544;

    @JsonProperty("all_45_54")
    private Long all4554;

    @JsonProperty("all_55_64")
    private Long all5564;

    @JsonProperty("all_65_plus")
    private Long all65Plus;

    @JsonProperty("all_unknown")
    private Long allUnknown;

    @JsonProperty("male_0_17")
    private Long male017;

    @JsonProperty("male_18_24")
    private Long male1824;

    @JsonProperty("male_25_34")
    private Long male2534;

    @JsonProperty("male_35_44")
    private Long male3544;

    @JsonProperty("male_45_54")
    private Long male4554;

    @JsonProperty("male_55_64")
    private Long male5564;

    @JsonProperty("male_65_plus")
    private Long male65Plus;

    @JsonProperty("male_unknown")
    private Long maleUnknown;

    @JsonProperty("female_0_17")
    private Long female017;

    @JsonProperty("female_18_24")
    private Long female1824;

    @JsonProperty("female_25_34")
    private Long female2534;

    @JsonProperty("female_35_44")
    private Long female3544;

    @JsonProperty("female_45_54")
    private Long female4554;

    @JsonProperty("female_55_64")
    private Long female5564;

    @JsonProperty("female_65_plus")
    private Long female65Plus;

    @JsonProperty("female_unknown")
    private Long femaleUnknown;

    @JsonProperty("unknown_0_17")
    private Long unknown017;

    @JsonProperty("unknown_18_24")
    private Long unknown1824;

    @JsonProperty("unknown_25_34")
    private Long unknown2534;

    @JsonProperty("unknown_35_44")
    private Long unknown3544;

    @JsonProperty("unknown_45_54")
    private Long unknown4554;

    @JsonProperty("unknown_55_64")
    private Long unknown5564;

    @JsonProperty("unknown_65_plus")
    private Long unknown65Plus;

    @JsonProperty("unknown_unknown")
    private Long unknownUnknown;

    public AppleAgeBand all017(Long all017) {
        this.all017 = all017;
        return this;
    }

    public AppleAgeBand male017(Long male017) {
        this.male017 = male017;
        return this;
    }

    public AppleAgeBand female017(Long female017) {
        this.female017 = female017;
        return this;
    }

    public AppleAgeBand unknown017(Long unknown017) {
        this.unknown017 = unknown017;
        return this;
    }

    public Long getAll017() {
        return all017;
    }

    public void setAll017(Long all017) {
        this.all017 = all017;
    }

    public Long getMale017() {
        return male017;
    }

    public void setMale017(Long male017) {
        this.male017 = male017;
    }

    public Long getFemale017() {
        return female017;
    }

    public void setFemale017(Long female017) {
        this.female017 = female017;
    }

    public Long getUnknown017() {
        return unknown017;
    }

    public void setUnknown017(Long unknown017) {
        this.unknown017 = unknown017;
    }

    public AppleAgeBand all1824(Long all1824) {
        this.all1824 = all1824;
        return this;
    }

    public Long getAll1824() {
        return all1824;
    }

    public void setAll1824(Long all1824) {
        this.all1824 = all1824;
    }

    public AppleAgeBand all2534(Long all2534) {
        this.all2534 = all2534;
        return this;
    }

    public Long getAll2534() {
        return all2534;
    }

    public void setAll2534(Long all2534) {
        this.all2534 = all2534;
    }

    public AppleAgeBand all3544(Long all3544) {
        this.all3544 = all3544;
        return this;
    }

    public Long getAll3544() {
        return all3544;
    }

    public void setAll3544(Long all3544) {
        this.all3544 = all3544;
    }

    public AppleAgeBand all4554(Long all4554) {
        this.all4554 = all4554;
        return this;
    }

    public Long getAll4554() {
        return all4554;
    }

    public void setAll4554(Long all4554) {
        this.all4554 = all4554;
    }

    public AppleAgeBand all5564(Long all5564) {
        this.all5564 = all5564;
        return this;
    }

    public Long getAll5564() {
        return all5564;
    }

    public void setAll5564(Long all5564) {
        this.all5564 = all5564;
    }

    public AppleAgeBand all65Plus(Long all65Plus) {
        this.all65Plus = all65Plus;
        return this;
    }

    public Long getAll65Plus() {
        return all65Plus;
    }

    public void setAll65Plus(Long all65Plus) {
        this.all65Plus = all65Plus;
    }

    public AppleAgeBand allUnknown(Long allUnknown) {
        this.allUnknown = allUnknown;
        return this;
    }

    public Long getAllUnknown() {
        return allUnknown;
    }

    public void setAllUnknown(Long allUnknown) {
        this.allUnknown = allUnknown;
    }

    public AppleAgeBand male1824(Long male1824) {
        this.male1824 = male1824;
        return this;
    }

    public Long getMale1824() {
        return male1824;
    }

    public void setMale1824(Long male1824) {
        this.male1824 = male1824;
    }

    public AppleAgeBand male2534(Long male2534) {
        this.male2534 = male2534;
        return this;
    }

    public Long getMale2534() {
        return male2534;
    }

    public void setMale2534(Long male2534) {
        this.male2534 = male2534;
    }

    public AppleAgeBand male3544(Long male3544) {
        this.male3544 = male3544;
        return this;
    }

    public Long getMale3544() {
        return male3544;
    }

    public void setMale3544(Long male3544) {
        this.male3544 = male3544;
    }

    public AppleAgeBand male4554(Long male4554) {
        this.male4554 = male4554;
        return this;
    }

    public Long getMale4554() {
        return male4554;
    }

    public void setMale4554(Long male4554) {
        this.male4554 = male4554;
    }

    public AppleAgeBand male5564(Long male5564) {
        this.male5564 = male5564;
        return this;
    }

    public Long getMale5564() {
        return male5564;
    }

    public void setMale5564(Long male5564) {
        this.male5564 = male5564;
    }

    public AppleAgeBand male65Plus(Long male65Plus) {
        this.male65Plus = male65Plus;
        return this;
    }

    public Long getMale65Plus() {
        return male65Plus;
    }

    public void setMale65Plus(Long male65Plus) {
        this.male65Plus = male65Plus;
    }

    public AppleAgeBand maleUnknown(Long maleUnknown) {
        this.maleUnknown = maleUnknown;
        return this;
    }

    public Long getMaleUnknown() {
        return maleUnknown;
    }

    public void setMaleUnknown(Long maleUnknown) {
        this.maleUnknown = maleUnknown;
    }

    public AppleAgeBand female1824(Long female1824) {
        this.female1824 = female1824;
        return this;
    }

    public Long getFemale1824() {
        return female1824;
    }

    public void setFemale1824(Long female1824) {
        this.female1824 = female1824;
    }

    public AppleAgeBand female2534(Long female2534) {
        this.female2534 = female2534;
        return this;
    }

    public Long getFemale2534() {
        return female2534;
    }

    public void setFemale2534(Long female2534) {
        this.female2534 = female2534;
    }

    public AppleAgeBand female3544(Long female3544) {
        this.female3544 = female3544;
        return this;
    }

    public Long getFemale3544() {
        return female3544;
    }

    public void setFemale3544(Long female3544) {
        this.female3544 = female3544;
    }

    public AppleAgeBand female4554(Long female4554) {
        this.female4554 = female4554;
        return this;
    }

    public Long getFemale4554() {
        return female4554;
    }

    public void setFemale4554(Long female4554) {
        this.female4554 = female4554;
    }

    public AppleAgeBand female5564(Long female5564) {
        this.female5564 = female5564;
        return this;
    }

    public Long getFemale5564() {
        return female5564;
    }

    public void setFemale5564(Long female5564) {
        this.female5564 = female5564;
    }

    public AppleAgeBand female65Plus(Long female65Plus) {
        this.female65Plus = female65Plus;
        return this;
    }

    public Long getFemale65Plus() {
        return female65Plus;
    }

    public void setFemale65Plus(Long female65Plus) {
        this.female65Plus = female65Plus;
    }

    public AppleAgeBand femaleUnknown(Long femaleUnknown) {
        this.femaleUnknown = femaleUnknown;
        return this;
    }

    public Long getFemaleUnknown() {
        return femaleUnknown;
    }

    public void setFemaleUnknown(Long femaleUnknown) {
        this.femaleUnknown = femaleUnknown;
    }

    public AppleAgeBand unknown1824(Long unknown1824) {
        this.unknown1824 = unknown1824;
        return this;
    }

    public Long getUnknown1824() {
        return unknown1824;
    }

    public void setUnknown1824(Long unknown1824) {
        this.unknown1824 = unknown1824;
    }

    public AppleAgeBand unknown2534(Long unknown2534) {
        this.unknown2534 = unknown2534;
        return this;
    }

    public Long getUnknown2534() {
        return unknown2534;
    }

    public void setUnknown2534(Long unknown2534) {
        this.unknown2534 = unknown2534;
    }

    public AppleAgeBand unknown3544(Long unknown3544) {
        this.unknown3544 = unknown3544;
        return this;
    }

    public Long getUnknown3544() {
        return unknown3544;
    }

    public void setUnknown3544(Long unknown3544) {
        this.unknown3544 = unknown3544;
    }

    public AppleAgeBand unknown4554(Long unknown4554) {
        this.unknown4554 = unknown4554;
        return this;
    }

    public Long getUnknown4554() {
        return unknown4554;
    }

    public void setUnknown4554(Long unknown4554) {
        this.unknown4554 = unknown4554;
    }

    public AppleAgeBand unknown5564(Long unknown5564) {
        this.unknown5564 = unknown5564;
        return this;
    }

    public Long getUnknown5564() {
        return unknown5564;
    }

    public void setUnknown5564(Long unknown5564) {
        this.unknown5564 = unknown5564;
    }

    public AppleAgeBand unknown65Plus(Long unknown65Plus) {
        this.unknown65Plus = unknown65Plus;
        return this;
    }

    public Long getUnknown65Plus() {
        return unknown65Plus;
    }

    public void setUnknown65Plus(Long unknown65Plus) {
        this.unknown65Plus = unknown65Plus;
    }

    public AppleAgeBand unknownUnknown(Long unknownUnknown) {
        this.unknownUnknown = unknownUnknown;
        return this;
    }

    public Long getUnknownUnknown() {
        return unknownUnknown;
    }

    public void setUnknownUnknown(Long unknownUnknown) {
        this.unknownUnknown = unknownUnknown;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        AppleAgeBand appleAgeBand = (AppleAgeBand) o;
        return Objects.equals(this.all1824, appleAgeBand.all1824) &&
            Objects.equals(this.all2534, appleAgeBand.all2534) &&
            Objects.equals(this.all3544, appleAgeBand.all3544) &&
            Objects.equals(this.all4554, appleAgeBand.all4554) &&
            Objects.equals(this.all5564, appleAgeBand.all5564) &&
            Objects.equals(this.all65Plus, appleAgeBand.all65Plus) &&
            Objects.equals(this.allUnknown, appleAgeBand.allUnknown) &&
            Objects.equals(this.male1824, appleAgeBand.male1824) &&
            Objects.equals(this.male2534, appleAgeBand.male2534) &&
            Objects.equals(this.male3544, appleAgeBand.male3544) &&
            Objects.equals(this.male4554, appleAgeBand.male4554) &&
            Objects.equals(this.male5564, appleAgeBand.male5564) &&
            Objects.equals(this.male65Plus, appleAgeBand.male65Plus) &&
            Objects.equals(this.maleUnknown, appleAgeBand.maleUnknown) &&
            Objects.equals(this.female1824, appleAgeBand.female1824) &&
            Objects.equals(this.female2534, appleAgeBand.female2534) &&
            Objects.equals(this.female3544, appleAgeBand.female3544) &&
            Objects.equals(this.female4554, appleAgeBand.female4554) &&
            Objects.equals(this.female5564, appleAgeBand.female5564) &&
            Objects.equals(this.female65Plus, appleAgeBand.female65Plus) &&
            Objects.equals(this.femaleUnknown, appleAgeBand.femaleUnknown) &&
            Objects.equals(this.unknown1824, appleAgeBand.unknown1824) &&
            Objects.equals(this.unknown2534, appleAgeBand.unknown2534) &&
            Objects.equals(this.unknown3544, appleAgeBand.unknown3544) &&
            Objects.equals(this.unknown4554, appleAgeBand.unknown4554) &&
            Objects.equals(this.unknown5564, appleAgeBand.unknown5564) &&
            Objects.equals(this.unknown65Plus, appleAgeBand.unknown65Plus) &&
            Objects.equals(this.unknownUnknown, appleAgeBand.unknownUnknown);
    }

    @Override
    public int hashCode() {
        return Objects.hash(
            all1824,
            all2534,
            all3544,
            all4554,
            all5564,
            all65Plus,
            allUnknown,
            male1824,
            male2534,
            male3544,
            male4554,
            male5564,
            male65Plus,
            maleUnknown,
            female1824,
            female2534,
            female3544,
            female4554,
            female5564,
            female65Plus,
            femaleUnknown,
            unknown1824,
            unknown2534,
            unknown3544,
            unknown4554,
            unknown5564,
            unknown65Plus,
            unknownUnknown
        );
    }

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

        sb.append("    all1824: ").append(toIndentedString(all1824)).append("\n");
        sb.append("    all2534: ").append(toIndentedString(all2534)).append("\n");
        sb.append("    all3544: ").append(toIndentedString(all3544)).append("\n");
        sb.append("    all4554: ").append(toIndentedString(all4554)).append("\n");
        sb.append("    all5564: ").append(toIndentedString(all5564)).append("\n");
        sb.append("    all65Plus: ").append(toIndentedString(all65Plus)).append("\n");
        sb.append("    allUnknown: ").append(toIndentedString(allUnknown)).append("\n");
        sb.append("    male1824: ").append(toIndentedString(male1824)).append("\n");
        sb.append("    male2534: ").append(toIndentedString(male2534)).append("\n");
        sb.append("    male3544: ").append(toIndentedString(male3544)).append("\n");
        sb.append("    male4554: ").append(toIndentedString(male4554)).append("\n");
        sb.append("    male5564: ").append(toIndentedString(male5564)).append("\n");
        sb.append("    male65Plus: ").append(toIndentedString(male65Plus)).append("\n");
        sb.append("    maleUnknown: ").append(toIndentedString(maleUnknown)).append("\n");
        sb.append("    female1824: ").append(toIndentedString(female1824)).append("\n");
        sb.append("    female2534: ").append(toIndentedString(female2534)).append("\n");
        sb.append("    female3544: ").append(toIndentedString(female3544)).append("\n");
        sb.append("    female4554: ").append(toIndentedString(female4554)).append("\n");
        sb.append("    female5564: ").append(toIndentedString(female5564)).append("\n");
        sb.append("    female65Plus: ").append(toIndentedString(female65Plus)).append("\n");
        sb.append("    femaleUnknown: ").append(toIndentedString(femaleUnknown)).append("\n");
        sb.append("    unknown1824: ").append(toIndentedString(unknown1824)).append("\n");
        sb.append("    unknown2534: ").append(toIndentedString(unknown2534)).append("\n");
        sb.append("    unknown3544: ").append(toIndentedString(unknown3544)).append("\n");
        sb.append("    unknown4554: ").append(toIndentedString(unknown4554)).append("\n");
        sb.append("    unknown5564: ").append(toIndentedString(unknown5564)).append("\n");
        sb.append("    unknown65Plus: ").append(toIndentedString(unknown65Plus)).append("\n");
        sb.append("    unknownUnknown: ").append(toIndentedString(unknownUnknown)).append("\n");
        sb.append("}");
        return sb.toString();
    }

    /**
     * Convert the given object to string with each line indented by 4 spaces (except the first line).
     */
    private String toIndentedString(Object o) {
        if (o == null) {
            return "null";
        }
        return o.toString().replace("\n", "\n    ");
    }
}
