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

com.amazonaws.mobileconnectors.cognito.PushSyncUpdate Maven / Gradle / Ivy

Go to download

The AWS Android SDK for Amazon Cognito Sync module holds the client classes that are used for communicating with Amazon Cognito Sync Service

There is a newer version: 2.6.9
Show newest version
/**
 * Copyright 2013-2016 Amazon.com, 
 * Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Amazon Software License (the "License"). 
 * You may not use this file except in compliance with the 
 * License. A copy of the License is located at
 * 
 *     http://aws.amazon.com/asl/
 * 
 * or in the "license" file accompanying this file. This file is 
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
 * CONDITIONS OF ANY KIND, express or implied. See the License 
 * for the specific language governing permissions and 
 * limitations under the License.
 */
package com.amazonaws.mobileconnectors.cognito;

import android.os.Bundle;
import android.content.Intent;
import android.util.Log;

import com.amazonaws.services.cognitosync.model.InvalidParameterException;

/**
 * A class to keep handy the data that is given in a push sync message, for the
 * sake of parsing the message to uniquely identify the dataset for update and use 
 * that information to synchronize the local data. This class should only be used 
 * with a push sync notification, isPushSyncUpdate(Intent intent) can be used 
 * to verify as much. 
 */
public class PushSyncUpdate {
    private final String source;
    private final String identityPoolId;
    private final String identityId;
    private final String datasetName;
    private final long syncCount;

    PushSyncUpdate(Intent intent) {
        if(!isPushSyncUpdate(intent)) {
            throw new InvalidParameterException("Invalid bundle, only messages from Cognito for push sync are valid");
        }
        else {
            Bundle extras = intent.getExtras();
            this.source = extras.getString("source");
            this.identityPoolId = extras.getString("identityPoolId");
            this.identityId = extras.getString("identityId");
            this.datasetName = extras.getString("datasetName");
            this.syncCount = Long.parseLong(extras.getString("syncCount"));
        }
    }

    /**
     * Gets the source of the notification, 'cognito-sync' from push sync
     */
    public String getSource() {
        return source;
    }

    /**
     * Gets the identity id for which the change was made
     */
    public String getIdentityId() {
        return identityId;
    }

    /**
     * Gets the identity pool in which the user belongs
     */
    public String getIdentityPoolId() {
        return identityPoolId;
    }

    /**
     * Gets the name of the changed datset
     */
    public String getDatasetName() {
        return datasetName;
    }

    /**
     * Gets the sync count of the changed dataset
     */
    public long getSyncCount() {
        return syncCount;
    }
    
    /**
     * A helper to determine if the intent in question is one received from 
     * Cognito for a push sync update to a dataset. If there's question, this should
     * be called before creating a push sync object, as if it is not valid, that object 
     * will be null.
     * 
     * @param intent the intent to check the validity of format of
     * @return true if it's a push sync update, false if not.
     */
    public static boolean isPushSyncUpdate(Intent intent){
        return intent != null && (intent.hasExtra("source") && intent.hasExtra("identityPoolId") 
                && intent.hasExtra("identityId") && intent.hasExtra("datasetName") && intent.hasExtra("syncCount"));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy