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

com.bertoncelj.fcm.client.MulticastResult Maven / Gradle / Ivy

The newest version!
/*
 * Copyright Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.bertoncelj.fcm.client;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Result of a GCM multicast message request .
 */
public final class MulticastResult implements Serializable {

    private final int success;
    private final int failure;
    private final int canonicalIds;
    private final long multicastId;
    private final List results;
    private final List retryMulticastIds;

    private MulticastResult(Builder builder) {
        success = builder.success;
        failure = builder.failure;
        canonicalIds = builder.canonicalIds;
        multicastId = builder.multicastId;
        results = Collections.unmodifiableList(builder.results);
        List tmpList = builder.retryMulticastIds;
        if (tmpList == null) {
            tmpList = Collections.emptyList();
        }
        retryMulticastIds = Collections.unmodifiableList(tmpList);
    }

    /**
     * Gets the multicast id.
     */
    public long getMulticastId() {
        return multicastId;
    }

    /**
     * Gets the number of successful messages.
     */
    public int getSuccess() {
        return success;
    }

    /**
     * Gets the total number of messages sent, regardless of the status.
     */
    public int getTotal() {
        return success + failure;
    }

    /**
     * Gets the number of failed messages.
     */
    public int getFailure() {
        return failure;
    }

    /**
     * Gets the number of successful messages that also returned a canonical
     * registration id.
     */
    public int getCanonicalIds() {
        return canonicalIds;
    }

    /**
     * Gets the results of each individual message, which is immutable.
     */
    public List getResults() {
        return results;
    }

    /**
     * Gets additional ids if more than one multicast message was sent.
     */
    public List getRetryMulticastIds() {
        return retryMulticastIds;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder("MulticastResult(")
                .append("multicast_id=").append(multicastId).append(",")
                .append("total=").append(getTotal()).append(",")
                .append("success=").append(success).append(",")
                .append("failure=").append(failure).append(",")
                .append("canonical_ids=").append(canonicalIds).append(",");
        if (!results.isEmpty()) {
            builder.append("results: " + results);
        }
        return builder.toString();
    }

    public static final class Builder {

        private final List results = new ArrayList();

        // required parameters
        private final int success;
        private final int failure;
        private final int canonicalIds;
        private final long multicastId;

        // optional parameters
        private List retryMulticastIds;

        public Builder(int success, int failure, int canonicalIds,
                       long multicastId) {
            this.success = success;
            this.failure = failure;
            this.canonicalIds = canonicalIds;
            this.multicastId = multicastId;
        }

        public Builder addResult(Result result) {
            results.add(result);
            return this;
        }

        public Builder retryMulticastIds(List retryMulticastIds) {
            this.retryMulticastIds = retryMulticastIds;
            return this;
        }

        public MulticastResult build() {
            return new MulticastResult(this);
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy