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

com.urbanairship.api.push.model.notification.adm.ADMDevicePayload Maven / Gradle / Ivy

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

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

import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import com.urbanairship.api.push.model.DeviceType;
import com.urbanairship.api.push.model.PushExpiry;
import com.urbanairship.api.push.model.PushModelObject;
import com.urbanairship.api.push.model.notification.DevicePayloadOverride;
import com.urbanairship.api.push.model.notification.Interactive;

import java.util.Map;

public final class ADMDevicePayload extends PushModelObject implements DevicePayloadOverride {
    private final Optional alert;
    private final Optional consolidationKey;
    private final Optional expiresAfter;
    private final Optional> extra;
    private final Optional interactive;

    private ADMDevicePayload(Optional alert,
                             Optional consolidationKey,
                             Optional expiresAfter,
                             Optional> extra,
                             Optional interactive) {
        this.alert = alert;
        this.consolidationKey = consolidationKey;
        this.expiresAfter = expiresAfter;
        this.extra = extra;
        this.interactive = interactive;
    }

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

    @Override
    public DeviceType getDeviceType() {
        return DeviceType.AMAZON;
    }

    @Override
    public Optional getAlert() {
        return alert;
    }

    public Optional getConsolidationKey() {
        return consolidationKey;
    }

    public Optional getExpiresAfter() {
        return expiresAfter;
    }

    public Optional> getExtra() {
        return extra;
    }

    public Optional getInteractive() {
        return interactive;
    }

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

        ADMDevicePayload that = (ADMDevicePayload)o;
        if (alert != null ? !alert.equals(that.alert) : that.alert != null) {
            return false;
        }
        if (consolidationKey != null ? !consolidationKey.equals(that.consolidationKey) : that.consolidationKey != null) {
            return false;
        }
        if (expiresAfter != null ? !expiresAfter.equals(that.expiresAfter) : that.expiresAfter != null) {
            return false;
        }
        if (extra != null ? !extra.equals(that.extra) : that.extra != null) {
            return false;
        }
        if (interactive != null ? !interactive.equals(that.interactive) : that.extra != null) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int result = (alert != null ? alert.hashCode() : 0);
        result = 31 * result + (consolidationKey != null ? consolidationKey.hashCode() : 0);
        result = 31 * result + (expiresAfter != null ? expiresAfter.hashCode() : 0);
        result = 31 * result + (extra != null ? extra.hashCode() : 0);
        result = 31 * result + (interactive != null ? interactive.hashCode() : 0);
        return result;
    }

    public static class Builder {
        private String alert = null;
        private String consolidationKey = null;
        private PushExpiry expiresAfter = null;
        private ImmutableMap.Builder extra = null;
        private Interactive interactive = null;

        private Builder() { }

        public Builder setAlert(String alert) {
            this.alert = alert;
            return this;
        }

        public Builder setConsolidationKey(String consolidationKey) {
            this.consolidationKey = consolidationKey;
            return this;
        }

        public Builder setExpiresAfter(PushExpiry value) {
            this.expiresAfter = value;
            return this;
        }

        public Builder addExtraEntry(String key, String value) {
            if (extra == null) {
                extra = ImmutableMap.builder();
            }
            this.extra.put(key, value);
            return this;
        }

        public Builder addAllExtraEntries(Map entries) {
            if (extra == null) {
                extra = ImmutableMap.builder();
            }
            this.extra.putAll(entries);
            return this;
        }

        public Builder setInteractive(Interactive value) {
            this.interactive = value;
            return this;
        }

        public ADMDevicePayload build() {
            return new ADMDevicePayload(Optional.fromNullable(alert),
                                        Optional.fromNullable(consolidationKey),
                                        Optional.fromNullable(expiresAfter),
                                        extra == null ? Optional.>absent() : Optional.fromNullable(extra.build()),
                                        Optional.fromNullable(interactive));
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy