public void UpdateExistingDivergence(FailedMSOSyncObject divergence, int occurenceCount, bool incrementalOnly, bool linkRelated, bool temporary, bool tenantWide, string[] errors, int errorListLengthLimit, bool validationDivergence, bool retriable, IDictionary divergenceInfoTable) { divergence.IsIncrementalOnly = (divergence.IsIncrementalOnly && incrementalOnly); divergence.IsLinkRelated = (divergence.IsLinkRelated || linkRelated); divergence.IsTemporary = temporary; divergence.IsTenantWideDivergence = (divergence.IsTenantWideDivergence || tenantWide); divergence.IsValidationDivergence = (divergence.IsValidationDivergence && validationDivergence); divergence.IsRetriable = retriable; if (!validationDivergence && divergence.IsValidationDivergence) { divergence.DivergenceCount = 1; } else { divergence.DivergenceCount += occurenceCount; } if (divergence.Errors == null) { divergence.Errors = new MultiValuedProperty <string>(); } if (errors != null) { ForwardSyncDataAccessHelper.AddErrors(errors, divergence); } while (divergence.Errors.Count > 0 && divergence.Errors.Count > errorListLengthLimit) { divergence.Errors.RemoveAt(0); } if (divergenceInfoTable != null) { ForwardSyncDataAccessHelper.SetDivergenceInfoValues(divergenceInfoTable, divergence); divergence.SaveDivergenceInfoXml(); } this.SaveDivergence(divergence); }
public void PersistNewDivergence(SyncObjectId syncObjectId, DateTime divergenceTime, bool incrementalOnly, bool linkRelated, bool temporary, bool tenantWide, string[] errors, bool validationDivergence, bool retriable, IDictionary divergenceInfoTable) { FailedMSOSyncObject failedMSOSyncObject = new FailedMSOSyncObject(); failedMSOSyncObject.LoadDivergenceInfoXml(); failedMSOSyncObject.SetId(this.GetDivergenceObjectId(syncObjectId)); failedMSOSyncObject.ObjectId = syncObjectId; failedMSOSyncObject.DivergenceTimestamp = new DateTime?(divergenceTime); failedMSOSyncObject.IsIncrementalOnly = incrementalOnly; failedMSOSyncObject.IsLinkRelated = linkRelated; failedMSOSyncObject.IsTemporary = temporary; failedMSOSyncObject.DivergenceCount = 1; failedMSOSyncObject.IsTenantWideDivergence = tenantWide; failedMSOSyncObject.IsValidationDivergence = validationDivergence; failedMSOSyncObject.IsRetriable = retriable; if (failedMSOSyncObject.IsValidationDivergence) { failedMSOSyncObject.IsIgnoredInHaltCondition = true; } else { failedMSOSyncObject.IsIgnoredInHaltCondition = false; } failedMSOSyncObject.Errors = new MultiValuedProperty <string>(); if (errors != null) { ForwardSyncDataAccessHelper.AddErrors(errors, failedMSOSyncObject); } if (divergenceInfoTable != null) { ForwardSyncDataAccessHelper.SetDivergenceInfoValues(divergenceInfoTable, failedMSOSyncObject); failedMSOSyncObject.SaveDivergenceInfoXml(); } this.SaveDivergence(failedMSOSyncObject); }