/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ package dev.plexapi.sdk.models.operations; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; import java.lang.Boolean; import java.lang.Double; import java.lang.Integer; import java.lang.Override; import java.lang.String; import java.lang.SuppressWarnings; import java.time.LocalDate; import java.util.List; import java.util.Objects; import java.util.Optional; public class Metadata { @JsonInclude(Include.NON_ABSENT) @JsonProperty("art") private Optional art; @JsonInclude(Include.NON_ABSENT) @JsonProperty("guid") private Optional guid; @JsonInclude(Include.NON_ABSENT) @JsonProperty("key") private Optional key; @JsonInclude(Include.NON_ABSENT) @JsonProperty("ratingKey") private Optional ratingKey; @JsonInclude(Include.NON_ABSENT) @JsonProperty("studio") private Optional studio; @JsonInclude(Include.NON_ABSENT) @JsonProperty("tagline") private Optional tagline; @JsonInclude(Include.NON_ABSENT) @JsonProperty("type") private Optional type; @JsonInclude(Include.NON_ABSENT) @JsonProperty("thumb") private Optional thumb; @JsonInclude(Include.NON_ABSENT) @JsonProperty("addedAt") private Optional addedAt; @JsonInclude(Include.NON_ABSENT) @JsonProperty("duration") private Optional duration; @JsonInclude(Include.NON_ABSENT) @JsonProperty("publicPagesURL") private Optional publicPagesURL; @JsonInclude(Include.NON_ABSENT) @JsonProperty("slug") private Optional slug; @JsonInclude(Include.NON_ABSENT) @JsonProperty("userState") private Optional userState; @JsonInclude(Include.NON_ABSENT) @JsonProperty("title") private Optional title; @JsonInclude(Include.NON_ABSENT) @JsonProperty("contentRating") private Optional contentRating; @JsonInclude(Include.NON_ABSENT) @JsonProperty("originallyAvailableAt") private Optional originallyAvailableAt; @JsonInclude(Include.NON_ABSENT) @JsonProperty("year") private Optional year; @JsonInclude(Include.NON_ABSENT) @JsonProperty("Image") private Optional> image; @JsonInclude(Include.NON_ABSENT) @JsonProperty("banner") private Optional banner; @JsonInclude(Include.NON_ABSENT) @JsonProperty("rating") private Optional rating; @JsonInclude(Include.NON_ABSENT) @JsonProperty("expiresAt") private Optional expiresAt; @JsonInclude(Include.NON_ABSENT) @JsonProperty("originalTitle") private Optional originalTitle; @JsonInclude(Include.NON_ABSENT) @JsonProperty("audienceRating") private Optional audienceRating; @JsonInclude(Include.NON_ABSENT) @JsonProperty("audienceRatingImage") private Optional audienceRatingImage; @JsonInclude(Include.NON_ABSENT) @JsonProperty("ratingImage") private Optional ratingImage; @JsonInclude(Include.NON_ABSENT) @JsonProperty("imdbRatingCount") private Optional imdbRatingCount; @JsonInclude(Include.NON_ABSENT) @JsonProperty("subtype") private Optional subtype; @JsonInclude(Include.NON_ABSENT) @JsonProperty("theme") private Optional theme; @JsonInclude(Include.NON_ABSENT) @JsonProperty("leafCount") private Optional leafCount; @JsonInclude(Include.NON_ABSENT) @JsonProperty("childCount") private Optional childCount; @JsonInclude(Include.NON_ABSENT) @JsonProperty("isContinuingSeries") private Optional isContinuingSeries; @JsonInclude(Include.NON_ABSENT) @JsonProperty("skipChildren") private Optional skipChildren; @JsonInclude(Include.NON_ABSENT) @JsonProperty("availabilityId") private Optional availabilityId; @JsonInclude(Include.NON_ABSENT) @JsonProperty("streamingMediaId") private Optional streamingMediaId; @JsonInclude(Include.NON_ABSENT) @JsonProperty("playableKey") private Optional playableKey; @JsonCreator public Metadata( @JsonProperty("art") Optional art, @JsonProperty("guid") Optional guid, @JsonProperty("key") Optional key, @JsonProperty("ratingKey") Optional ratingKey, @JsonProperty("studio") Optional studio, @JsonProperty("tagline") Optional tagline, @JsonProperty("type") Optional type, @JsonProperty("thumb") Optional thumb, @JsonProperty("addedAt") Optional addedAt, @JsonProperty("duration") Optional duration, @JsonProperty("publicPagesURL") Optional publicPagesURL, @JsonProperty("slug") Optional slug, @JsonProperty("userState") Optional userState, @JsonProperty("title") Optional title, @JsonProperty("contentRating") Optional contentRating, @JsonProperty("originallyAvailableAt") Optional originallyAvailableAt, @JsonProperty("year") Optional year, @JsonProperty("Image") Optional> image, @JsonProperty("banner") Optional banner, @JsonProperty("rating") Optional rating, @JsonProperty("expiresAt") Optional expiresAt, @JsonProperty("originalTitle") Optional originalTitle, @JsonProperty("audienceRating") Optional audienceRating, @JsonProperty("audienceRatingImage") Optional audienceRatingImage, @JsonProperty("ratingImage") Optional ratingImage, @JsonProperty("imdbRatingCount") Optional imdbRatingCount, @JsonProperty("subtype") Optional subtype, @JsonProperty("theme") Optional theme, @JsonProperty("leafCount") Optional leafCount, @JsonProperty("childCount") Optional childCount, @JsonProperty("isContinuingSeries") Optional isContinuingSeries, @JsonProperty("skipChildren") Optional skipChildren, @JsonProperty("availabilityId") Optional availabilityId, @JsonProperty("streamingMediaId") Optional streamingMediaId, @JsonProperty("playableKey") Optional playableKey) { Utils.checkNotNull(art, "art"); Utils.checkNotNull(guid, "guid"); Utils.checkNotNull(key, "key"); Utils.checkNotNull(ratingKey, "ratingKey"); Utils.checkNotNull(studio, "studio"); Utils.checkNotNull(tagline, "tagline"); Utils.checkNotNull(type, "type"); Utils.checkNotNull(thumb, "thumb"); Utils.checkNotNull(addedAt, "addedAt"); Utils.checkNotNull(duration, "duration"); Utils.checkNotNull(publicPagesURL, "publicPagesURL"); Utils.checkNotNull(slug, "slug"); Utils.checkNotNull(userState, "userState"); Utils.checkNotNull(title, "title"); Utils.checkNotNull(contentRating, "contentRating"); Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); Utils.checkNotNull(year, "year"); Utils.checkNotNull(image, "image"); Utils.checkNotNull(banner, "banner"); Utils.checkNotNull(rating, "rating"); Utils.checkNotNull(expiresAt, "expiresAt"); Utils.checkNotNull(originalTitle, "originalTitle"); Utils.checkNotNull(audienceRating, "audienceRating"); Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); Utils.checkNotNull(ratingImage, "ratingImage"); Utils.checkNotNull(imdbRatingCount, "imdbRatingCount"); Utils.checkNotNull(subtype, "subtype"); Utils.checkNotNull(theme, "theme"); Utils.checkNotNull(leafCount, "leafCount"); Utils.checkNotNull(childCount, "childCount"); Utils.checkNotNull(isContinuingSeries, "isContinuingSeries"); Utils.checkNotNull(skipChildren, "skipChildren"); Utils.checkNotNull(availabilityId, "availabilityId"); Utils.checkNotNull(streamingMediaId, "streamingMediaId"); Utils.checkNotNull(playableKey, "playableKey"); this.art = art; this.guid = guid; this.key = key; this.ratingKey = ratingKey; this.studio = studio; this.tagline = tagline; this.type = type; this.thumb = thumb; this.addedAt = addedAt; this.duration = duration; this.publicPagesURL = publicPagesURL; this.slug = slug; this.userState = userState; this.title = title; this.contentRating = contentRating; this.originallyAvailableAt = originallyAvailableAt; this.year = year; this.image = image; this.banner = banner; this.rating = rating; this.expiresAt = expiresAt; this.originalTitle = originalTitle; this.audienceRating = audienceRating; this.audienceRatingImage = audienceRatingImage; this.ratingImage = ratingImage; this.imdbRatingCount = imdbRatingCount; this.subtype = subtype; this.theme = theme; this.leafCount = leafCount; this.childCount = childCount; this.isContinuingSeries = isContinuingSeries; this.skipChildren = skipChildren; this.availabilityId = availabilityId; this.streamingMediaId = streamingMediaId; this.playableKey = playableKey; } public Metadata() { this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } @JsonIgnore public Optional art() { return art; } @JsonIgnore public Optional guid() { return guid; } @JsonIgnore public Optional key() { return key; } @JsonIgnore public Optional ratingKey() { return ratingKey; } @JsonIgnore public Optional studio() { return studio; } @JsonIgnore public Optional tagline() { return tagline; } @JsonIgnore public Optional type() { return type; } @JsonIgnore public Optional thumb() { return thumb; } @JsonIgnore public Optional addedAt() { return addedAt; } @JsonIgnore public Optional duration() { return duration; } @JsonIgnore public Optional publicPagesURL() { return publicPagesURL; } @JsonIgnore public Optional slug() { return slug; } @JsonIgnore public Optional userState() { return userState; } @JsonIgnore public Optional title() { return title; } @JsonIgnore public Optional contentRating() { return contentRating; } @JsonIgnore public Optional originallyAvailableAt() { return originallyAvailableAt; } @JsonIgnore public Optional year() { return year; } @SuppressWarnings("unchecked") @JsonIgnore public Optional> image() { return (Optional>) image; } @JsonIgnore public Optional banner() { return banner; } @JsonIgnore public Optional rating() { return rating; } @JsonIgnore public Optional expiresAt() { return expiresAt; } @JsonIgnore public Optional originalTitle() { return originalTitle; } @JsonIgnore public Optional audienceRating() { return audienceRating; } @JsonIgnore public Optional audienceRatingImage() { return audienceRatingImage; } @JsonIgnore public Optional ratingImage() { return ratingImage; } @JsonIgnore public Optional imdbRatingCount() { return imdbRatingCount; } @JsonIgnore public Optional subtype() { return subtype; } @JsonIgnore public Optional theme() { return theme; } @JsonIgnore public Optional leafCount() { return leafCount; } @JsonIgnore public Optional childCount() { return childCount; } @JsonIgnore public Optional isContinuingSeries() { return isContinuingSeries; } @JsonIgnore public Optional skipChildren() { return skipChildren; } @JsonIgnore public Optional availabilityId() { return availabilityId; } @JsonIgnore public Optional streamingMediaId() { return streamingMediaId; } @JsonIgnore public Optional playableKey() { return playableKey; } public final static Builder builder() { return new Builder(); } public Metadata withArt(String art) { Utils.checkNotNull(art, "art"); this.art = Optional.ofNullable(art); return this; } public Metadata withArt(Optional art) { Utils.checkNotNull(art, "art"); this.art = art; return this; } public Metadata withGuid(String guid) { Utils.checkNotNull(guid, "guid"); this.guid = Optional.ofNullable(guid); return this; } public Metadata withGuid(Optional guid) { Utils.checkNotNull(guid, "guid"); this.guid = guid; return this; } public Metadata withKey(String key) { Utils.checkNotNull(key, "key"); this.key = Optional.ofNullable(key); return this; } public Metadata withKey(Optional key) { Utils.checkNotNull(key, "key"); this.key = key; return this; } public Metadata withRatingKey(String ratingKey) { Utils.checkNotNull(ratingKey, "ratingKey"); this.ratingKey = Optional.ofNullable(ratingKey); return this; } public Metadata withRatingKey(Optional ratingKey) { Utils.checkNotNull(ratingKey, "ratingKey"); this.ratingKey = ratingKey; return this; } public Metadata withStudio(String studio) { Utils.checkNotNull(studio, "studio"); this.studio = Optional.ofNullable(studio); return this; } public Metadata withStudio(Optional studio) { Utils.checkNotNull(studio, "studio"); this.studio = studio; return this; } public Metadata withTagline(String tagline) { Utils.checkNotNull(tagline, "tagline"); this.tagline = Optional.ofNullable(tagline); return this; } public Metadata withTagline(Optional tagline) { Utils.checkNotNull(tagline, "tagline"); this.tagline = tagline; return this; } public Metadata withType(String type) { Utils.checkNotNull(type, "type"); this.type = Optional.ofNullable(type); return this; } public Metadata withType(Optional type) { Utils.checkNotNull(type, "type"); this.type = type; return this; } public Metadata withThumb(String thumb) { Utils.checkNotNull(thumb, "thumb"); this.thumb = Optional.ofNullable(thumb); return this; } public Metadata withThumb(Optional thumb) { Utils.checkNotNull(thumb, "thumb"); this.thumb = thumb; return this; } public Metadata withAddedAt(int addedAt) { Utils.checkNotNull(addedAt, "addedAt"); this.addedAt = Optional.ofNullable(addedAt); return this; } public Metadata withAddedAt(Optional addedAt) { Utils.checkNotNull(addedAt, "addedAt"); this.addedAt = addedAt; return this; } public Metadata withDuration(int duration) { Utils.checkNotNull(duration, "duration"); this.duration = Optional.ofNullable(duration); return this; } public Metadata withDuration(Optional duration) { Utils.checkNotNull(duration, "duration"); this.duration = duration; return this; } public Metadata withPublicPagesURL(String publicPagesURL) { Utils.checkNotNull(publicPagesURL, "publicPagesURL"); this.publicPagesURL = Optional.ofNullable(publicPagesURL); return this; } public Metadata withPublicPagesURL(Optional publicPagesURL) { Utils.checkNotNull(publicPagesURL, "publicPagesURL"); this.publicPagesURL = publicPagesURL; return this; } public Metadata withSlug(String slug) { Utils.checkNotNull(slug, "slug"); this.slug = Optional.ofNullable(slug); return this; } public Metadata withSlug(Optional slug) { Utils.checkNotNull(slug, "slug"); this.slug = slug; return this; } public Metadata withUserState(boolean userState) { Utils.checkNotNull(userState, "userState"); this.userState = Optional.ofNullable(userState); return this; } public Metadata withUserState(Optional userState) { Utils.checkNotNull(userState, "userState"); this.userState = userState; return this; } public Metadata withTitle(String title) { Utils.checkNotNull(title, "title"); this.title = Optional.ofNullable(title); return this; } public Metadata withTitle(Optional title) { Utils.checkNotNull(title, "title"); this.title = title; return this; } public Metadata withContentRating(String contentRating) { Utils.checkNotNull(contentRating, "contentRating"); this.contentRating = Optional.ofNullable(contentRating); return this; } public Metadata withContentRating(Optional contentRating) { Utils.checkNotNull(contentRating, "contentRating"); this.contentRating = contentRating; return this; } public Metadata withOriginallyAvailableAt(LocalDate originallyAvailableAt) { Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); this.originallyAvailableAt = Optional.ofNullable(originallyAvailableAt); return this; } public Metadata withOriginallyAvailableAt(Optional originallyAvailableAt) { Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); this.originallyAvailableAt = originallyAvailableAt; return this; } public Metadata withYear(int year) { Utils.checkNotNull(year, "year"); this.year = Optional.ofNullable(year); return this; } public Metadata withYear(Optional year) { Utils.checkNotNull(year, "year"); this.year = year; return this; } public Metadata withImage(List image) { Utils.checkNotNull(image, "image"); this.image = Optional.ofNullable(image); return this; } public Metadata withImage(Optional> image) { Utils.checkNotNull(image, "image"); this.image = image; return this; } public Metadata withBanner(String banner) { Utils.checkNotNull(banner, "banner"); this.banner = Optional.ofNullable(banner); return this; } public Metadata withBanner(Optional banner) { Utils.checkNotNull(banner, "banner"); this.banner = banner; return this; } public Metadata withRating(double rating) { Utils.checkNotNull(rating, "rating"); this.rating = Optional.ofNullable(rating); return this; } public Metadata withRating(Optional rating) { Utils.checkNotNull(rating, "rating"); this.rating = rating; return this; } public Metadata withExpiresAt(int expiresAt) { Utils.checkNotNull(expiresAt, "expiresAt"); this.expiresAt = Optional.ofNullable(expiresAt); return this; } public Metadata withExpiresAt(Optional expiresAt) { Utils.checkNotNull(expiresAt, "expiresAt"); this.expiresAt = expiresAt; return this; } public Metadata withOriginalTitle(String originalTitle) { Utils.checkNotNull(originalTitle, "originalTitle"); this.originalTitle = Optional.ofNullable(originalTitle); return this; } public Metadata withOriginalTitle(Optional originalTitle) { Utils.checkNotNull(originalTitle, "originalTitle"); this.originalTitle = originalTitle; return this; } public Metadata withAudienceRating(double audienceRating) { Utils.checkNotNull(audienceRating, "audienceRating"); this.audienceRating = Optional.ofNullable(audienceRating); return this; } public Metadata withAudienceRating(Optional audienceRating) { Utils.checkNotNull(audienceRating, "audienceRating"); this.audienceRating = audienceRating; return this; } public Metadata withAudienceRatingImage(String audienceRatingImage) { Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); this.audienceRatingImage = Optional.ofNullable(audienceRatingImage); return this; } public Metadata withAudienceRatingImage(Optional audienceRatingImage) { Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); this.audienceRatingImage = audienceRatingImage; return this; } public Metadata withRatingImage(String ratingImage) { Utils.checkNotNull(ratingImage, "ratingImage"); this.ratingImage = Optional.ofNullable(ratingImage); return this; } public Metadata withRatingImage(Optional ratingImage) { Utils.checkNotNull(ratingImage, "ratingImage"); this.ratingImage = ratingImage; return this; } public Metadata withImdbRatingCount(int imdbRatingCount) { Utils.checkNotNull(imdbRatingCount, "imdbRatingCount"); this.imdbRatingCount = Optional.ofNullable(imdbRatingCount); return this; } public Metadata withImdbRatingCount(Optional imdbRatingCount) { Utils.checkNotNull(imdbRatingCount, "imdbRatingCount"); this.imdbRatingCount = imdbRatingCount; return this; } public Metadata withSubtype(String subtype) { Utils.checkNotNull(subtype, "subtype"); this.subtype = Optional.ofNullable(subtype); return this; } public Metadata withSubtype(Optional subtype) { Utils.checkNotNull(subtype, "subtype"); this.subtype = subtype; return this; } public Metadata withTheme(String theme) { Utils.checkNotNull(theme, "theme"); this.theme = Optional.ofNullable(theme); return this; } public Metadata withTheme(Optional theme) { Utils.checkNotNull(theme, "theme"); this.theme = theme; return this; } public Metadata withLeafCount(int leafCount) { Utils.checkNotNull(leafCount, "leafCount"); this.leafCount = Optional.ofNullable(leafCount); return this; } public Metadata withLeafCount(Optional leafCount) { Utils.checkNotNull(leafCount, "leafCount"); this.leafCount = leafCount; return this; } public Metadata withChildCount(int childCount) { Utils.checkNotNull(childCount, "childCount"); this.childCount = Optional.ofNullable(childCount); return this; } public Metadata withChildCount(Optional childCount) { Utils.checkNotNull(childCount, "childCount"); this.childCount = childCount; return this; } public Metadata withIsContinuingSeries(boolean isContinuingSeries) { Utils.checkNotNull(isContinuingSeries, "isContinuingSeries"); this.isContinuingSeries = Optional.ofNullable(isContinuingSeries); return this; } public Metadata withIsContinuingSeries(Optional isContinuingSeries) { Utils.checkNotNull(isContinuingSeries, "isContinuingSeries"); this.isContinuingSeries = isContinuingSeries; return this; } public Metadata withSkipChildren(boolean skipChildren) { Utils.checkNotNull(skipChildren, "skipChildren"); this.skipChildren = Optional.ofNullable(skipChildren); return this; } public Metadata withSkipChildren(Optional skipChildren) { Utils.checkNotNull(skipChildren, "skipChildren"); this.skipChildren = skipChildren; return this; } public Metadata withAvailabilityId(String availabilityId) { Utils.checkNotNull(availabilityId, "availabilityId"); this.availabilityId = Optional.ofNullable(availabilityId); return this; } public Metadata withAvailabilityId(Optional availabilityId) { Utils.checkNotNull(availabilityId, "availabilityId"); this.availabilityId = availabilityId; return this; } public Metadata withStreamingMediaId(String streamingMediaId) { Utils.checkNotNull(streamingMediaId, "streamingMediaId"); this.streamingMediaId = Optional.ofNullable(streamingMediaId); return this; } public Metadata withStreamingMediaId(Optional streamingMediaId) { Utils.checkNotNull(streamingMediaId, "streamingMediaId"); this.streamingMediaId = streamingMediaId; return this; } public Metadata withPlayableKey(String playableKey) { Utils.checkNotNull(playableKey, "playableKey"); this.playableKey = Optional.ofNullable(playableKey); return this; } public Metadata withPlayableKey(Optional playableKey) { Utils.checkNotNull(playableKey, "playableKey"); this.playableKey = playableKey; return this; } @Override public boolean equals(java.lang.Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Metadata other = (Metadata) o; return Objects.deepEquals(this.art, other.art) && Objects.deepEquals(this.guid, other.guid) && Objects.deepEquals(this.key, other.key) && Objects.deepEquals(this.ratingKey, other.ratingKey) && Objects.deepEquals(this.studio, other.studio) && Objects.deepEquals(this.tagline, other.tagline) && Objects.deepEquals(this.type, other.type) && Objects.deepEquals(this.thumb, other.thumb) && Objects.deepEquals(this.addedAt, other.addedAt) && Objects.deepEquals(this.duration, other.duration) && Objects.deepEquals(this.publicPagesURL, other.publicPagesURL) && Objects.deepEquals(this.slug, other.slug) && Objects.deepEquals(this.userState, other.userState) && Objects.deepEquals(this.title, other.title) && Objects.deepEquals(this.contentRating, other.contentRating) && Objects.deepEquals(this.originallyAvailableAt, other.originallyAvailableAt) && Objects.deepEquals(this.year, other.year) && Objects.deepEquals(this.image, other.image) && Objects.deepEquals(this.banner, other.banner) && Objects.deepEquals(this.rating, other.rating) && Objects.deepEquals(this.expiresAt, other.expiresAt) && Objects.deepEquals(this.originalTitle, other.originalTitle) && Objects.deepEquals(this.audienceRating, other.audienceRating) && Objects.deepEquals(this.audienceRatingImage, other.audienceRatingImage) && Objects.deepEquals(this.ratingImage, other.ratingImage) && Objects.deepEquals(this.imdbRatingCount, other.imdbRatingCount) && Objects.deepEquals(this.subtype, other.subtype) && Objects.deepEquals(this.theme, other.theme) && Objects.deepEquals(this.leafCount, other.leafCount) && Objects.deepEquals(this.childCount, other.childCount) && Objects.deepEquals(this.isContinuingSeries, other.isContinuingSeries) && Objects.deepEquals(this.skipChildren, other.skipChildren) && Objects.deepEquals(this.availabilityId, other.availabilityId) && Objects.deepEquals(this.streamingMediaId, other.streamingMediaId) && Objects.deepEquals(this.playableKey, other.playableKey); } @Override public int hashCode() { return Objects.hash( art, guid, key, ratingKey, studio, tagline, type, thumb, addedAt, duration, publicPagesURL, slug, userState, title, contentRating, originallyAvailableAt, year, image, banner, rating, expiresAt, originalTitle, audienceRating, audienceRatingImage, ratingImage, imdbRatingCount, subtype, theme, leafCount, childCount, isContinuingSeries, skipChildren, availabilityId, streamingMediaId, playableKey); } @Override public String toString() { return Utils.toString(Metadata.class, "art", art, "guid", guid, "key", key, "ratingKey", ratingKey, "studio", studio, "tagline", tagline, "type", type, "thumb", thumb, "addedAt", addedAt, "duration", duration, "publicPagesURL", publicPagesURL, "slug", slug, "userState", userState, "title", title, "contentRating", contentRating, "originallyAvailableAt", originallyAvailableAt, "year", year, "image", image, "banner", banner, "rating", rating, "expiresAt", expiresAt, "originalTitle", originalTitle, "audienceRating", audienceRating, "audienceRatingImage", audienceRatingImage, "ratingImage", ratingImage, "imdbRatingCount", imdbRatingCount, "subtype", subtype, "theme", theme, "leafCount", leafCount, "childCount", childCount, "isContinuingSeries", isContinuingSeries, "skipChildren", skipChildren, "availabilityId", availabilityId, "streamingMediaId", streamingMediaId, "playableKey", playableKey); } public final static class Builder { private Optional art = Optional.empty(); private Optional guid = Optional.empty(); private Optional key = Optional.empty(); private Optional ratingKey = Optional.empty(); private Optional studio = Optional.empty(); private Optional tagline = Optional.empty(); private Optional type = Optional.empty(); private Optional thumb = Optional.empty(); private Optional addedAt = Optional.empty(); private Optional duration = Optional.empty(); private Optional publicPagesURL = Optional.empty(); private Optional slug = Optional.empty(); private Optional userState = Optional.empty(); private Optional title = Optional.empty(); private Optional contentRating = Optional.empty(); private Optional originallyAvailableAt = Optional.empty(); private Optional year = Optional.empty(); private Optional> image = Optional.empty(); private Optional banner = Optional.empty(); private Optional rating = Optional.empty(); private Optional expiresAt = Optional.empty(); private Optional originalTitle = Optional.empty(); private Optional audienceRating = Optional.empty(); private Optional audienceRatingImage = Optional.empty(); private Optional ratingImage = Optional.empty(); private Optional imdbRatingCount = Optional.empty(); private Optional subtype = Optional.empty(); private Optional theme = Optional.empty(); private Optional leafCount = Optional.empty(); private Optional childCount = Optional.empty(); private Optional isContinuingSeries = Optional.empty(); private Optional skipChildren = Optional.empty(); private Optional availabilityId = Optional.empty(); private Optional streamingMediaId = Optional.empty(); private Optional playableKey = Optional.empty(); private Builder() { // force use of static builder() method } public Builder art(String art) { Utils.checkNotNull(art, "art"); this.art = Optional.ofNullable(art); return this; } public Builder art(Optional art) { Utils.checkNotNull(art, "art"); this.art = art; return this; } public Builder guid(String guid) { Utils.checkNotNull(guid, "guid"); this.guid = Optional.ofNullable(guid); return this; } public Builder guid(Optional guid) { Utils.checkNotNull(guid, "guid"); this.guid = guid; return this; } public Builder key(String key) { Utils.checkNotNull(key, "key"); this.key = Optional.ofNullable(key); return this; } public Builder key(Optional key) { Utils.checkNotNull(key, "key"); this.key = key; return this; } public Builder ratingKey(String ratingKey) { Utils.checkNotNull(ratingKey, "ratingKey"); this.ratingKey = Optional.ofNullable(ratingKey); return this; } public Builder ratingKey(Optional ratingKey) { Utils.checkNotNull(ratingKey, "ratingKey"); this.ratingKey = ratingKey; return this; } public Builder studio(String studio) { Utils.checkNotNull(studio, "studio"); this.studio = Optional.ofNullable(studio); return this; } public Builder studio(Optional studio) { Utils.checkNotNull(studio, "studio"); this.studio = studio; return this; } public Builder tagline(String tagline) { Utils.checkNotNull(tagline, "tagline"); this.tagline = Optional.ofNullable(tagline); return this; } public Builder tagline(Optional tagline) { Utils.checkNotNull(tagline, "tagline"); this.tagline = tagline; return this; } public Builder type(String type) { Utils.checkNotNull(type, "type"); this.type = Optional.ofNullable(type); return this; } public Builder type(Optional type) { Utils.checkNotNull(type, "type"); this.type = type; return this; } public Builder thumb(String thumb) { Utils.checkNotNull(thumb, "thumb"); this.thumb = Optional.ofNullable(thumb); return this; } public Builder thumb(Optional thumb) { Utils.checkNotNull(thumb, "thumb"); this.thumb = thumb; return this; } public Builder addedAt(int addedAt) { Utils.checkNotNull(addedAt, "addedAt"); this.addedAt = Optional.ofNullable(addedAt); return this; } public Builder addedAt(Optional addedAt) { Utils.checkNotNull(addedAt, "addedAt"); this.addedAt = addedAt; return this; } public Builder duration(int duration) { Utils.checkNotNull(duration, "duration"); this.duration = Optional.ofNullable(duration); return this; } public Builder duration(Optional duration) { Utils.checkNotNull(duration, "duration"); this.duration = duration; return this; } public Builder publicPagesURL(String publicPagesURL) { Utils.checkNotNull(publicPagesURL, "publicPagesURL"); this.publicPagesURL = Optional.ofNullable(publicPagesURL); return this; } public Builder publicPagesURL(Optional publicPagesURL) { Utils.checkNotNull(publicPagesURL, "publicPagesURL"); this.publicPagesURL = publicPagesURL; return this; } public Builder slug(String slug) { Utils.checkNotNull(slug, "slug"); this.slug = Optional.ofNullable(slug); return this; } public Builder slug(Optional slug) { Utils.checkNotNull(slug, "slug"); this.slug = slug; return this; } public Builder userState(boolean userState) { Utils.checkNotNull(userState, "userState"); this.userState = Optional.ofNullable(userState); return this; } public Builder userState(Optional userState) { Utils.checkNotNull(userState, "userState"); this.userState = userState; return this; } public Builder title(String title) { Utils.checkNotNull(title, "title"); this.title = Optional.ofNullable(title); return this; } public Builder title(Optional title) { Utils.checkNotNull(title, "title"); this.title = title; return this; } public Builder contentRating(String contentRating) { Utils.checkNotNull(contentRating, "contentRating"); this.contentRating = Optional.ofNullable(contentRating); return this; } public Builder contentRating(Optional contentRating) { Utils.checkNotNull(contentRating, "contentRating"); this.contentRating = contentRating; return this; } public Builder originallyAvailableAt(LocalDate originallyAvailableAt) { Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); this.originallyAvailableAt = Optional.ofNullable(originallyAvailableAt); return this; } public Builder originallyAvailableAt(Optional originallyAvailableAt) { Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); this.originallyAvailableAt = originallyAvailableAt; return this; } public Builder year(int year) { Utils.checkNotNull(year, "year"); this.year = Optional.ofNullable(year); return this; } public Builder year(Optional year) { Utils.checkNotNull(year, "year"); this.year = year; return this; } public Builder image(List image) { Utils.checkNotNull(image, "image"); this.image = Optional.ofNullable(image); return this; } public Builder image(Optional> image) { Utils.checkNotNull(image, "image"); this.image = image; return this; } public Builder banner(String banner) { Utils.checkNotNull(banner, "banner"); this.banner = Optional.ofNullable(banner); return this; } public Builder banner(Optional banner) { Utils.checkNotNull(banner, "banner"); this.banner = banner; return this; } public Builder rating(double rating) { Utils.checkNotNull(rating, "rating"); this.rating = Optional.ofNullable(rating); return this; } public Builder rating(Optional rating) { Utils.checkNotNull(rating, "rating"); this.rating = rating; return this; } public Builder expiresAt(int expiresAt) { Utils.checkNotNull(expiresAt, "expiresAt"); this.expiresAt = Optional.ofNullable(expiresAt); return this; } public Builder expiresAt(Optional expiresAt) { Utils.checkNotNull(expiresAt, "expiresAt"); this.expiresAt = expiresAt; return this; } public Builder originalTitle(String originalTitle) { Utils.checkNotNull(originalTitle, "originalTitle"); this.originalTitle = Optional.ofNullable(originalTitle); return this; } public Builder originalTitle(Optional originalTitle) { Utils.checkNotNull(originalTitle, "originalTitle"); this.originalTitle = originalTitle; return this; } public Builder audienceRating(double audienceRating) { Utils.checkNotNull(audienceRating, "audienceRating"); this.audienceRating = Optional.ofNullable(audienceRating); return this; } public Builder audienceRating(Optional audienceRating) { Utils.checkNotNull(audienceRating, "audienceRating"); this.audienceRating = audienceRating; return this; } public Builder audienceRatingImage(String audienceRatingImage) { Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); this.audienceRatingImage = Optional.ofNullable(audienceRatingImage); return this; } public Builder audienceRatingImage(Optional audienceRatingImage) { Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); this.audienceRatingImage = audienceRatingImage; return this; } public Builder ratingImage(String ratingImage) { Utils.checkNotNull(ratingImage, "ratingImage"); this.ratingImage = Optional.ofNullable(ratingImage); return this; } public Builder ratingImage(Optional ratingImage) { Utils.checkNotNull(ratingImage, "ratingImage"); this.ratingImage = ratingImage; return this; } public Builder imdbRatingCount(int imdbRatingCount) { Utils.checkNotNull(imdbRatingCount, "imdbRatingCount"); this.imdbRatingCount = Optional.ofNullable(imdbRatingCount); return this; } public Builder imdbRatingCount(Optional imdbRatingCount) { Utils.checkNotNull(imdbRatingCount, "imdbRatingCount"); this.imdbRatingCount = imdbRatingCount; return this; } public Builder subtype(String subtype) { Utils.checkNotNull(subtype, "subtype"); this.subtype = Optional.ofNullable(subtype); return this; } public Builder subtype(Optional subtype) { Utils.checkNotNull(subtype, "subtype"); this.subtype = subtype; return this; } public Builder theme(String theme) { Utils.checkNotNull(theme, "theme"); this.theme = Optional.ofNullable(theme); return this; } public Builder theme(Optional theme) { Utils.checkNotNull(theme, "theme"); this.theme = theme; return this; } public Builder leafCount(int leafCount) { Utils.checkNotNull(leafCount, "leafCount"); this.leafCount = Optional.ofNullable(leafCount); return this; } public Builder leafCount(Optional leafCount) { Utils.checkNotNull(leafCount, "leafCount"); this.leafCount = leafCount; return this; } public Builder childCount(int childCount) { Utils.checkNotNull(childCount, "childCount"); this.childCount = Optional.ofNullable(childCount); return this; } public Builder childCount(Optional childCount) { Utils.checkNotNull(childCount, "childCount"); this.childCount = childCount; return this; } public Builder isContinuingSeries(boolean isContinuingSeries) { Utils.checkNotNull(isContinuingSeries, "isContinuingSeries"); this.isContinuingSeries = Optional.ofNullable(isContinuingSeries); return this; } public Builder isContinuingSeries(Optional isContinuingSeries) { Utils.checkNotNull(isContinuingSeries, "isContinuingSeries"); this.isContinuingSeries = isContinuingSeries; return this; } public Builder skipChildren(boolean skipChildren) { Utils.checkNotNull(skipChildren, "skipChildren"); this.skipChildren = Optional.ofNullable(skipChildren); return this; } public Builder skipChildren(Optional skipChildren) { Utils.checkNotNull(skipChildren, "skipChildren"); this.skipChildren = skipChildren; return this; } public Builder availabilityId(String availabilityId) { Utils.checkNotNull(availabilityId, "availabilityId"); this.availabilityId = Optional.ofNullable(availabilityId); return this; } public Builder availabilityId(Optional availabilityId) { Utils.checkNotNull(availabilityId, "availabilityId"); this.availabilityId = availabilityId; return this; } public Builder streamingMediaId(String streamingMediaId) { Utils.checkNotNull(streamingMediaId, "streamingMediaId"); this.streamingMediaId = Optional.ofNullable(streamingMediaId); return this; } public Builder streamingMediaId(Optional streamingMediaId) { Utils.checkNotNull(streamingMediaId, "streamingMediaId"); this.streamingMediaId = streamingMediaId; return this; } public Builder playableKey(String playableKey) { Utils.checkNotNull(playableKey, "playableKey"); this.playableKey = Optional.ofNullable(playableKey); return this; } public Builder playableKey(Optional playableKey) { Utils.checkNotNull(playableKey, "playableKey"); this.playableKey = playableKey; return this; } public Metadata build() { return new Metadata( art, guid, key, ratingKey, studio, tagline, type, thumb, addedAt, duration, publicPagesURL, slug, userState, title, contentRating, originallyAvailableAt, year, image, banner, rating, expiresAt, originalTitle, audienceRating, audienceRatingImage, ratingImage, imdbRatingCount, subtype, theme, leafCount, childCount, isContinuingSeries, skipChildren, availabilityId, streamingMediaId, playableKey); } } }