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

com.urbanairship.api.push.model.notification.wns.WNSToastData Maven / Gradle / Ivy

There is a newer version: 9.7.0
Show newest version
/*
 * Copyright 2013 Urban Airship and Contributors
 */

package com.urbanairship.api.push.model.notification.wns;

import com.google.common.base.Optional;
import static com.google.common.base.Preconditions.checkArgument;

public class WNSToastData {
    public enum Duration {
        LONG,
        SHORT;

        public String getIdentifier() {
            return name().toLowerCase();
        }

        public static Duration get(String value) {
            for (Duration d : values()) {
                if (value.equalsIgnoreCase(d.name())) {
                    return d;
                }
            }
            return null;
        }
    }

    private final WNSBinding binding;
    private final Optional duration;
    private final Optional audio;

    private WNSToastData(WNSBinding binding,
                         Optional duration,
                         Optional audio)
    {
        this.binding = binding;
        this.duration = duration;
        this.audio = audio;
    }

    public static Builder newBuilder() {
        return new Builder();
    }

    public WNSBinding getBinding() {
        return binding;
    }

    public Optional getDuration() {
        return duration;
    }

    public Optional getAudio() {
        return audio;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        WNSToastData that = (WNSToastData)o;
        if (binding != null ? !binding.equals(that.binding) : that.binding != null) {
            return false;
        }
        if (duration != null ? !duration.equals(that.duration) : that.duration != null) {
            return false;
        }
        if (audio != null ? !audio.equals(that.audio) : that.audio != null) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int result = (binding != null ? binding.hashCode() : 0);
        result = 31 * result + (duration != null ? duration.hashCode() : 0);
        result = 31 * result + (audio != null ? audio.hashCode() : 0);
        return result;
    }

    public static class Builder {

        private WNSBinding binding;
        private Duration duration;
        private WNSAudioData audio;

        private Builder() { }

        public Builder setBinding(WNSBinding value) {
            this.binding = value;
            return this;
        }

        public Builder setDuration(Duration value) {
            this.duration = value;
            return this;
        }

        public Builder setAudio(WNSAudioData value) {
            this.audio = value;
            return this;
        }

        public WNSToastData build() {
            checkArgument(binding != null, "toast must have a value for 'binding'");
            return new WNSToastData(binding,
                                    Optional.fromNullable(duration),
                                    Optional.fromNullable(audio));
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy