All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.urbanairship.api.staticlists.model.StaticListView Maven / Gradle / Ivy

There is a newer version: 9.3.0
Show newest version
/*
 * Copyright (c) 2013-2016.  Urban Airship and Contributors
 */

package com.urbanairship.api.staticlists.model;

import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import org.joda.time.DateTime;

public class StaticListView {
    private final Optional ok;
    private final String name;
    private final Optional description;
    private final Optional> extras;
    private final DateTime created;
    private final DateTime lastUpdated;
    private final Integer channelCount;
    private final String status;

    private StaticListView(Builder builder) {
        this.ok = Optional.fromNullable(builder.ok);
        this.name = builder.name;
        this.description = Optional.fromNullable(builder.description);
        this.extras = Optional.fromNullable(builder.extras.build());
        this.created = builder.created;
        this.lastUpdated = builder.lastUpdated;
        this.channelCount = builder.channelCount;
        this.status = builder.status;
    }

    /**
     * New ChannelView builder.
     *
     * @return Builder
     */
    public static Builder newBuilder() {
        return new Builder();
    }

    /**
     * Get the value for ok.
     *
     * @return An Optional Boolean ok
     */
    public Optional getOk() {
        return ok;
    }

    /**
     * Get the static list name.
     *
     * @return String name
     */
    public String getName() {
        return name;
    }

    /**
     * Get the static list description.
     *
     * @return An Optional String
     */
    public Optional getDescription() {
        return description;
    }

    /**
     * Get any extra values associated with the static list.
     *
     * @return An Optional ImmutableMap of Strings to Strings
     */
    public Optional> getExtras() {
        return extras;
    }

    /**
     * Get the static list creation date.
     *
     * @return DateTime
     */
    public DateTime getCreated() {
        return created;
    }

    /**
     * Get the date the static list was last updated.
     *
     * @return An Optional DateTime
     */
    public DateTime getLastUpdated() {
        return lastUpdated;
    }

    /**
     * Get the number of channels associated with the static list.
     *
     * @return int channel count
     */
    public Integer getChannelCount() {
        return channelCount;
    }

    /**
     * Get the status of the static list.
     *
     * @return String, one of "ready", "processing", or "failure"
     */
    public String getStatus() {
        return status;
    }

    @Override
    public String toString() {
        return "StaticListView{" +
                "ok=" + ok +
                ", name=\'" + name + '\'' +
                ", description=" + description +
                ", extras=" + extras +
                ", created=" + created +
                ", lastUpdated=" + lastUpdated +
                ", channelCount=" + channelCount +
                ", status=" + status +
                '}';
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(ok, name, description, extras, created, lastUpdated, channelCount, status);
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        final StaticListView other = (StaticListView) obj;
        return Objects.equal(this.ok, other.ok) &&
                Objects.equal(this.name, other.name) &&
                Objects.equal(this.description, other.description) &&
                Objects.equal(this.extras, other.extras) &&
                Objects.equal(this.created, other.created) &&
                Objects.equal(this.lastUpdated, other.lastUpdated) &&
                Objects.equal(this.channelCount, other.channelCount) &&
                Objects.equal(this.status, other.status);
    }


    public final static class Builder {
        private Boolean ok = null;
        private String name = null;
        private String description = null;
        private ImmutableMap.Builder extras = ImmutableMap.builder();
        private DateTime created = null;
        private DateTime lastUpdated = null;
        private Integer channelCount = null;
        private String status = null;

        private Builder() {
        }

        /**
         * Set ok.
         *
         * @param ok Boolean
         * @return Builder
         */
        public Builder setOk(Boolean ok) {
            this.ok = ok;
            return this;
        }

        /**
         * Set the name.
         *
         * @param name String
         * @return Builder
         */
        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        /**
         * Set the description.
         *
         * @param description String
         * @return Builder
         */
        public Builder setDescription(String description) {
            this.description = description;
            return this;
        }

        /**
         * Set the creation date
         *
         * @param created DateTime
         * @return Builder
         */
        public Builder setCreated(DateTime created) {
            this.created = created;
            return this;
        }

        /**
         * Set the last updated date.
         *
         * @param lastUpdated DateTime
         * @return Builder
         */
        public Builder setLastUpdated(DateTime lastUpdated) {
            this.lastUpdated = lastUpdated;
            return this;
        }

        /**
         * Set the channel count.
         *
         * @param channelCount int
         * @return Builder
         */
        public Builder setChannelCount(int channelCount) {
            this.channelCount = channelCount;
            return this;
        }

        /**
         * Set the status.
         *
         * @param status String
         * @return Builder
         */
        public Builder setStatus(String status) {
            this.status = status;
            return this;
        }

        /**
         * Add an extra key-value pair.
         *
         * @param key A key of an arbitrary key-value pair.
         * @param val A val of an arbitrary key-value pair.
         * @return Builder
         */
        public Builder addExtra(String key, String val) {
            this.extras.put(key, val);
            return this;
        }

        /**
         * Add all key-value pairs.
         *
         * @param extras ImmutableMap of arbitrary key-value pairs.
         * @return Builder
         */
        public Builder addAllExtras(ImmutableMap extras) {
            if (!extras.isEmpty()) {
                this.extras.putAll(extras);
            }
            return this;
        }

        /**
         * Build the StaticListView object
         * @return StaticListView
         */
        public StaticListView build() {
            Preconditions.checkNotNull(name);
            Preconditions.checkNotNull(created);
            Preconditions.checkNotNull(lastUpdated);
            Preconditions.checkNotNull(channelCount);
            Preconditions.checkNotNull(status);

            return new StaticListView(this);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy