Synchronize Status Listener

Retrieve the synchronization status.

Synchronize Status Listener is mainly for debugging and performance measuring purposes to monitor stages of a synchronize session. It could also be used in UI for synchronization progress status. Below is a sample Synchronize Status Listener.

import com.sybase.persistence.ObjectSyncStatusData;
import com.sybase.persistence.SyncStatusListener;
import com.sybase.persistence.SyncStatusState;

public class MySyncStatusListener implements SyncStatusListener
{
    long start;

    public MySyncStatusListener()
    {
        start = System.currentTimeMillis();
    }

    public boolean objectSyncStatus(ObjectSyncStatusData statusData)
    {
        long now = System.currentTimeMillis();
        long interval = now - start;
        start = now;
        String infoMessage;

        int syncState = statusData.getSyncStatusState();

        switch (syncState)
        {
            case SyncStatusState.SYNC_STARTING:
                infoMessage = "START [" interval "]";
                break;
            case SyncStatusState.APPLICATION_SYNC_SENDING_HEADER:
                infoMessage = "SENDING HEADERS [" interval "]";
                break;
            case SyncStatusState.APPLICATION_SYNC_SENDING_SCHEMA:
                infoMessage = "SENDING SCHEMA [" interval "]";
                break;
            case SyncStatusState.APPLICATION_DATA_UPLOADING:
                infoMessage = "DATA UPLOADING [" interval "] "
                    + statusData.getCurrentMBO() ": (S>"
                    + statusData.getSentByteCount() ":"
                    + statusData.getSentRowCount() " R<"
                    + statusData.getReceivedByteCount() ":"
                    + statusData.getReceivedRowCount() ")";
                break;
            case SyncStatusState.APPLICATION_SYNC_RECEIVING_UPLOAD_ACK:
                infoMessage = "RECEIVING UPLOAD ACK [" interval "]";
                break;
            case SyncStatusState.APPLICATION_DATA_UPLOADING_DONE:
                infoMessage = "UPLOAD DONE [" interval "] "
                    + statusData.getCurrentMBO() ": (S>"
                    + statusData.getSentByteCount() ":"
                    + statusData.getSentRowCount() " R<"
                    + statusData.getReceivedByteCount() ":"
                    + statusData.getReceivedRowCount() ")";
                break;
            case SyncStatusState.APPLICATION_DATA_DOWNLOADING:
                infoMessage = "DATA DOWNLOADING[" interval "] "
                    + statusData.getCurrentMBO() ": (S>"
                    + statusData.getSentByteCount() ":"
                    + statusData.getSentRowCount() " R<"
                    + statusData.getReceivedByteCount() ":"
                    + statusData.getReceivedRowCount() ")";
                break;
            case SyncStatusState.APPLICATION_SYNC_DISCONNECTING:
                infoMessage = "DISCONNECTING [" interval "]";
                break;
            case SyncStatusState.APPLICATION_SYNC_CHECKING_LAST_UPLOAD:
                infoMessage = "CHECKING LAST UPLOAD [" interval "]";
                break;
            case SyncStatusState.APPLICATION_SYNC_COMMITTING_DOWNLOAD:
                infoMessage = "COMMITTING DOWNLOAD [" interval "] "
                    + statusData.getCurrentMBO() ": (S>"
                    + statusData.getSentByteCount() ":"
                    + statusData.getSentRowCount() " R<"
                    + statusData.getReceivedByteCount() ":"
                    + statusData.getReceivedRowCount() ")";
                break;
            case SyncStatusState.APPLICATION_SYNC_CANCELLED:
                infoMessage = "SYNC CANCELED ["+ interval "]";
                break;
            case SyncStatusState.APPLICATION_DATA_DOWNLOADING_DONE:
                infoMessage = "DATA DOWNLOADING DONE [" interval "]";
                break;
            case SyncStatusState.SYNC_DONE:

                infoMessage = "DONE [" interval "]";
                break;
            default:
                infoMessage = "STATE" syncState "[" interval "]";
                break;
        }
        LogMessage(infoMessage);
        return false;
    }
}