public void SyncDownContacts() { RegisterSoup(); if (syncId == -1) { string soqlQuery = SOQLBuilder.GetInstanceWithFields(ContactObject.ContactFields) .From(Constants.Contact) .Limit(Limit) .Build(); SyncOptions options = SyncOptions.OptionsForSyncDown(SyncState.MergeModeOptions.LeaveIfChanged); SyncDownTarget target = new SoqlSyncDownTarget(soqlQuery); try { SyncState sync = _syncManager.SyncDown(target, ContactSoup, HandleSyncUpdate); syncId = sync.Id; } catch (SmartStoreException) { // log here } } else { _syncManager.ReSync(syncId, HandleSyncUpdate); } }
private long TrySyncDown(SyncState.MergeModeOptions mergeMode) { // Ids clause String idsClause = "('" + String.Join("', '", _idToNames.Keys) + "')"; // Create sync SyncDownTarget target = new SoqlSyncDownTarget("SELECT Id, Name, " + Constants.LastModifiedDate + " FROM Account WHERE Id IN " + idsClause); SyncOptions options = SyncOptions.OptionsForSyncDown(mergeMode); SyncState sync = SyncState.CreateSyncDown(_smartStore, target, AccountsSoup, options); long syncId = sync.Id; CheckStatus(sync, SyncState.SyncTypes.SyncDown, syncId, SyncState.SyncStatusTypes.New, 0, -1); // Run sync _syncCheck = 0; _syncManager.RunSync(sync, HandleSyncDownCheck); DateTime end = DateTime.Now.AddSeconds(60); while (_syncCheck < 3) { if (DateTime.Now > end) { Assert.Fail("Sync timed out"); } } return(syncId); }
internal async Task <User> GetCurrentUserFromSoql(SyncManager syncManager) { User currentUser = new NullUser(); JArray results; try { var target = new SoqlSyncDownTarget(SoqlQuery); if (target.hasTokenExpired()) { //logout await ObjectSyncDispatcher.Instance.RefreshToken(); return(currentUser); } results = await target.StartFetch(syncManager, -1); } catch { UseAlternativeFields = true; var target = new SoqlSyncDownTarget(SoqlQuery); results = await target.StartFetch(syncManager, -1); } var curUser = results?.Select(x => CustomPrefixJsonConvert.DeserializeObject <User>(x.ToString())).SingleOrDefault(); return(curUser ?? currentUser); }
public virtual async Task <SyncState> SyncDownRecords(Action <string> callbackHandler, CancellationToken token = default(CancellationToken)) { if (string.IsNullOrEmpty(SoqlQuery)) { return(new SyncState { Status = SyncState.SyncStatusTypes.Done }); } CallBackHandler = callbackHandler; RegisterClearSoup(); var options = SyncOptions.OptionsForSyncDown(SyncState.MergeModeOptions.Overwrite); var target = new SoqlSyncDownTarget(SoqlQuery); if (target.Query == null) //there are no data to sync down, so we return success { return(new SyncState { Status = SyncState.SyncStatusTypes.Done }); } SyncState syncResult = new SyncState { Status = SyncState.SyncStatusTypes.Failed }; try { var syncManager = SyncManager.GetInstance(AccountManager.GetAccount()); syncResult = await syncManager.SyncDown(target, SoupName, HandleSyncUpdate, options, token); } catch (SmartStoreException sse) { CreateLogItem("SmartStoreException", sse); } catch (OperationCanceledException oce) { CreateLogItem("OperationCanceledException", oce); throw; } catch (ErrorResponseException errorRes) { CreateLogItem("ErrorResponseException", errorRes); throw; } catch (Exception e) { CreateLogItem("General exception", e); } return(syncResult); }
public virtual async Task <SyncState> SyncDownRecordsToSoup(Action <string> callbackHandler, CancellationToken token = default(CancellationToken)) { if (string.IsNullOrEmpty(SoqlQuery)) { return(new SyncState { Status = SyncState.SyncStatusTypes.Done }); } CallBackHandler = callbackHandler; if (!string.IsNullOrWhiteSpace(TempSoupName) && !Store.HasSoup(TempSoupName)) { RegisterClearSoupBySoupName(TempSoupName); } if (!Store.HasSoup(SoupName)) { RegisterClearSoup(); } var options = SyncOptions.OptionsForSyncDown(SyncState.MergeModeOptions.Overwrite); var target = new SoqlSyncDownTarget(SoqlQuery); SyncState syncResult = new SyncState { Status = SyncState.SyncStatusTypes.Failed }; try { var syncManager = SyncManager.GetInstance(AccountManager.GetAccount()); if (!string.IsNullOrWhiteSpace(TempSoupName)) { syncResult = await syncManager.SyncDown(target, TempSoupName, HandleSyncUpdate, options, token); } else { syncResult = await syncManager.SyncDown(target, SoupName, HandleSyncUpdate, options, token); } } catch (SmartStoreException sse) { CreateLogItem("SmartStoreException", sse); } catch (Exception e) { CreateLogItem("General exception", e); } return(syncResult); }
public Models.SyncState SyncDown(string target, string soupName, string callback, Models.SyncOptions options) { var soqlsyncDownTarget = JObject.Parse(target); var soqlsyncDown = new SoqlSyncDownTarget(soqlsyncDownTarget); SyncDownTarget syncDown = soqlsyncDown; var action = JsonConvert.DeserializeObject <Action <SyncState> >(callback); var syncOptions = JsonConvert.SerializeObject(options); var state = _syncManager.SyncDown(syncDown, soupName, action, SyncOptions.FromJson(JObject.Parse(syncOptions))); var syncState = JsonConvert.SerializeObject(state); return(JsonConvert.DeserializeObject <Models.SyncState>(syncState)); }
/// <summary> /// Get content documents from sfdc /// </summary> internal async Task <IList <Model.Models.ContentDocument> > GetFromSoql(SyncManager syncManager) { var results = new List <Model.Models.ContentDocument>(); var target = new SoqlSyncDownTarget(SoqlQuery); var page = await target.StartFetch(syncManager, -1); while (page != null && page.Count > 0) { results.AddRange(page.Select(x => x.ToObject <Model.Models.ContentDocument>()).ToList()); page = await target.ContinueFetch(syncManager); } return(results); }
internal async Task <IList <Model.Models.MobileAppConfig> > GetFromSoql(SyncManager syncManager) { List <Model.Models.MobileAppConfig> results = new List <Model.Models.MobileAppConfig>(); var target = new SoqlSyncDownTarget(SoqlQuery); // Sync to JSON var _results = await target.StartFetch(syncManager, -1); while (_results != null && _results.Count > 0) { results.AddRange(_results.Select(x => x.ToObject <Model.Models.MobileAppConfig>()).ToList()); _results = await target.ContinueFetch(syncManager); } return(results); }
public void SyncDownNotes() { RegisterSoup(); string soqlQuery = SOQLBuilder.GetInstanceWithFields(NoteObject.NoteFields) .From(NoteObject.NoteSObjectType) .Limit(Limit) .Build(); SyncOptions options = SyncOptions.OptionsForSyncDown(SyncState.MergeModeOptions.LeaveIfChanged); SyncDownTarget target = new SoqlSyncDownTarget(soqlQuery); try { SyncState sync = _syncManager.SyncDown(target, NotesSoup, HandleSyncUpdate, options); syncId = sync.Id; } catch (SmartStoreException) { // log here } }