示例#1
0
 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);
 }
示例#2
0
        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);
        }