Exemplo n.º 1
0
        private static SyncTarget GetSyncTargetFromJson(SyncTypes syncType, JObject jsonTarget)
        {
            SyncTarget st = null;

            switch (syncType)
            {
            case SyncTypes.SyncDown:
                st = SyncDownTarget.FromJson(jsonTarget);
                break;

            case SyncTypes.SyncDownAttachment:
                st = AttachmentSyncDownTarget.FromJson(jsonTarget);
                break;

            case SyncTypes.SyncUp:
                st = SyncUpTarget.FromJSON(jsonTarget);
                break;
            }

            return(st);
        }
 /// <summary>
 ///     Create sync state in database for a sync up and return corresponding SyncState
 /// </summary>
 /// <param name="store"></param>
 /// <param name="target"></param>
 /// <param name="options"></param>
 /// <param name="soupName"></param>
 /// <returns></returns>
 public static SyncState CreateSyncUp(SmartStore.Store.SmartStore store, SyncUpTarget target, SyncOptions options, string soupName)
 {
     var sync = new JObject
     {
         {Constants.SyncType, SyncTypes.SyncUp.ToString()},
         {Constants.SyncSoupName, soupName},
         {Constants.SyncOptions, options.AsJson()},
         {Constants.SyncStatus, SyncStatusTypes.New.ToString()},
         {Constants.SyncProgress, 0},
         {Constants.SyncTotalSize, -1},
         {Constants.SyncMaxTimeStamp, -1},
         {Constants.SyncTarget, target.AsJson()}
     };
     JObject upserted = store.Upsert(Constants.SyncsSoup, sync);
     if (upserted != null)
     {
         return FromJson(upserted);
     }
     sync[Constants.SyncStatus] = SyncStatusTypes.Failed.ToString();
     return FromJson(sync);
 }
 /// <summary>
 ///     Create sync state in database for a sync up and return corresponding SyncState
 /// </summary>
 /// <param name="store"></param>
 /// <param name="target"></param>
 /// <param name="options"></param>
 /// <param name="soupName"></param>
 /// <returns></returns>
 public static SyncState CreateSyncUp(SmartStore.Store.SmartStore store, SyncUpTarget target, SyncOptions options, string soupName)
 {
     var sync = new JObject
     {
         {Constants.SyncType, SyncTypes.SyncUp.ToString()},
         {Constants.SyncSoupName, soupName},
         {Constants.SyncOptions, options.AsJson()},
         {Constants.SyncStatus, SyncStatusTypes.New.ToString()},
         {Constants.SyncProgress, 0},
         {Constants.SyncTotalSize, -1},
         {Constants.SyncMaxTimeStamp, -1},
         {Constants.SyncTarget, target.AsJson()}
     };
     JObject upserted = store.Upsert(Constants.SyncsSoup, sync);
     if (upserted != null)
     {
         return FromJson(upserted);
     }
     sync[Constants.SyncStatus] = SyncStatusTypes.Failed.ToString();
     return FromJson(sync);
 }
        /// <summary>
        ///     Build SyncState from json
        /// </summary>
        /// <param name="sync"></param>
        /// <returns></returns>
        public static SyncState FromJson(JObject sync)
        {
            if (sync == null)
            {
                return(null);
            }
            var jsonTarget = sync.ExtractValue <JObject>(Constants.SyncTarget);
            var syncType   = (SyncTypes)Enum.Parse(typeof(SyncTypes), sync.ExtractValue <string>(Constants.SyncType));
            var state      = new SyncState
            {
                Id        = sync.ExtractValue <long>(SmartStore.Store.SmartStore.SoupEntryId),
                Target    = (syncType == SyncTypes.SyncDown ? (SyncTarget)SyncDownTarget.FromJson(jsonTarget) : SyncUpTarget.FromJson(jsonTarget)),
                Options   = SyncOptions.FromJson(sync.ExtractValue <JObject>(Constants.SyncOptions)),
                SoupName  = sync.ExtractValue <string>(Constants.SyncSoupName),
                Progress  = sync.ExtractValue <int>(Constants.SyncProgress),
                TotalSize = sync.ExtractValue <int>(Constants.SyncTotalSize),
                Type      = syncType,
                Status    =
                    (SyncStatusTypes)
                    Enum.Parse(typeof(SyncStatusTypes), sync.ExtractValue <string>(Constants.SyncStatus)),
                MaxTimeStamp = sync.ExtractValue <long>(Constants.SyncMaxTimeStamp)
            };

            return(state);
        }
        private long TrySyncUp(int numberOfChanges,
            SyncState.MergeModeOptions mergeMode = SyncState.MergeModeOptions.Overwrite)
        {
            // Create sync
            SyncOptions options = SyncOptions.OptionsForSyncUp(new List<string>(new[] { Constants.Name }), mergeMode);
            var target = new SyncUpTarget();
            SyncState sync = SyncState.CreateSyncUp(_smartStore, target, options, AccountsSoup);
            long syncId = sync.Id;
            CheckStatus(sync, SyncState.SyncTypes.SyncUp, syncId, SyncState.SyncStatusTypes.New, 0, -1);

            // run sync

            _syncCheck = 0;
            _numberOfChanges = numberOfChanges;
            DateTime end = DateTime.Now.AddSeconds(60);
            _syncManager.RunSync(sync, HandleSyncUpCheck);
            while (_syncCheck < 1)
            {
                if (DateTime.Now > end)
                    Assert.Fail("Sync timed out");
            }
            return syncId;
        }
 public void SyncUpContacts()
 {
     RegisterSoup();
     SyncOptions options = SyncOptions.OptionsForSyncUp(ContactObject.ContactFields.ToList(), SyncState.MergeModeOptions.LeaveIfChanged);
     var target = new SyncUpTarget();
     _syncManager.SyncUp(target, options, ContactSoup, HandleSyncUpdate);
 }