internal Dictionary <string, Dictionary <string, ComparisonParagraphUnit> > GetComparisonParagraphUnits(Dictionary <string, Dictionary <string, ParagraphUnit> > xFileParagraphUnitsOriginal , Dictionary <string, Dictionary <string, ParagraphUnit> > xFileParagraphUnitsUpdated) { var comparisonFileParagraphUnits = new Dictionary <string, Dictionary <string, ComparisonParagraphUnit> >(); var iProgressCurrent = 0; var iProgressMaximum = xFileParagraphUnitsOriginal.Sum(xFileParagraphUnits => xFileParagraphUnits.Value.Count()); var errorMatchingFileLevel01 = false; var errorMatchingFileLevel = false; var errorMatchingFileLevelMessage = string.Empty; var errorMatchingParagraphLevel = false; #region | check for initial errors | foreach (var fileParagraphUnitOriginal in xFileParagraphUnitsOriginal) { if (!xFileParagraphUnitsUpdated.ContainsKey(fileParagraphUnitOriginal.Key)) { errorMatchingFileLevel = true; errorMatchingFileLevelMessage = string.Format( "Error: Structure mismatch; unable to locate the corresponding file : '{0}' in the updated file", fileParagraphUnitOriginal.Key); var fileNameOriginal = Path.GetFileName(fileParagraphUnitOriginal.Key); errorMatchingFileLevel01 = xFileParagraphUnitsUpdated.Select(kvp => Path.GetFileName(kvp.Key)).All(fileNameUpdated => string.Compare(fileNameOriginal, fileNameUpdated, StringComparison.OrdinalIgnoreCase) != 0); break; } var fileParagraphUnitUpdated = xFileParagraphUnitsUpdated[fileParagraphUnitOriginal.Key]; if ((from paragraphUnitOriginalPair in fileParagraphUnitOriginal.Value select paragraphUnitOriginalPair.Value into paragraphUnitOriginal let paragraphUnitUpdated = new ParagraphUnit(paragraphUnitOriginal.ParagraphUnitId, new List <SegmentPair>()) select paragraphUnitOriginal).Any(paragraphUnitOriginal => !fileParagraphUnitUpdated.ContainsKey(paragraphUnitOriginal.ParagraphUnitId))) { errorMatchingParagraphLevel = true; } } #endregion if (errorMatchingFileLevel01) { //not possible to compare these files; excluding the file path information, the file names are different... throw new Exception(errorMatchingFileLevelMessage); } if (errorMatchingFileLevel || errorMatchingParagraphLevel) { #region | compare structure missmatch | foreach (var fileParagraphUnitOriginal in xFileParagraphUnitsOriginal) { var fileName = Path.GetFileName(fileParagraphUnitOriginal.Key); var comparisonParagraphUnits = new Dictionary <string, ComparisonParagraphUnit>(); var fileParagraphUnitOriginalTmp = fileParagraphUnitOriginal.Value; var nameOriginal = Path.GetFileName(fileParagraphUnitOriginal.Key); var fileParagraphUnitUpdated = (from kvp in xFileParagraphUnitsUpdated let fileNameUpdated = Path.GetFileName(kvp.Key) where string.Compare(nameOriginal, fileNameUpdated, StringComparison.OrdinalIgnoreCase) == 0 select kvp.Value).FirstOrDefault(); if (fileParagraphUnitUpdated == null) { throw new Exception( string.Format( "Error: Structure mismatch; unable to locate the corresponding file : '{0}' in the updated file", fileParagraphUnitOriginal.Key)); } //update paragraph ids in the updated object xFileParagraphUnit_updated fileParagraphUnitUpdated = GetUpdatedParagraphsIds(fileParagraphUnitOriginalTmp, fileParagraphUnitUpdated); foreach (var paragraphUnitOriginalPair in fileParagraphUnitOriginalTmp) { OnProgress(iProgressMaximum, iProgressCurrent++, fileName); var comparisonParagraphUnit = new ComparisonParagraphUnit { ParagraphId = paragraphUnitOriginalPair.Key, ParagraphIsUpdated = false, ParagraphStatusChanged = false, ParagraphHasComments = false }; var paragraphUnitOriginal = paragraphUnitOriginalPair.Value; var paragraphUnitUpdated = new ParagraphUnit(paragraphUnitOriginal.ParagraphUnitId, new List <SegmentPair>()); if (fileParagraphUnitUpdated.ContainsKey(paragraphUnitOriginal.ParagraphUnitId)) { paragraphUnitUpdated = fileParagraphUnitUpdated[paragraphUnitOriginal.ParagraphUnitId]; } if (paragraphUnitUpdated != null) { if (paragraphUnitOriginal.SegmentPairs.Count >= paragraphUnitUpdated.SegmentPairs.Count) { #region | xParagraphUnit_original.xSegmentPairs.Count >= xParagraphUnit_updated.xSegmentPairs.Count | //if segment count has not changed (or greater than the segment count in the updated file) for (var i = 0; i < paragraphUnitOriginal.SegmentPairs.Count; i++) { var segmentPairOriginal = paragraphUnitOriginal.SegmentPairs[i]; var segmentPairUpdated = new SegmentPair(); if (paragraphUnitUpdated.SegmentPairs.Count > i) { segmentPairUpdated = paragraphUnitUpdated.SegmentPairs[i]; } var comparisonSegmentUnit = new ComparisonSegmentUnit(segmentPairOriginal.Id, segmentPairOriginal.SourceSections, segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections, segmentPairOriginal.IsLocked); AddToComparision(ref comparisonParagraphUnit, comparisonSegmentUnit, segmentPairOriginal, segmentPairUpdated); } #endregion } else if (paragraphUnitOriginal.SegmentPairs.Count < paragraphUnitUpdated.SegmentPairs.Count) { #region | xParagraphUnit_original.xSegmentPairs.Count < xParagraphUnit_updated.xSegmentPairs.Count | //if more segments now exist in the updated file for (var i = 0; i < paragraphUnitUpdated.SegmentPairs.Count; i++) { var segmentPairOriginal = new SegmentPair(); if (paragraphUnitOriginal.SegmentPairs.Count > i) { segmentPairOriginal = paragraphUnitOriginal.SegmentPairs[i]; } var segmentPairUpdated = paragraphUnitUpdated.SegmentPairs[i]; var comparisonSegmentUnit = new ComparisonSegmentUnit(segmentPairUpdated.Id, segmentPairOriginal.SourceSections, segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections, segmentPairOriginal.IsLocked); AddToComparision(ref comparisonParagraphUnit, comparisonSegmentUnit, segmentPairOriginal, segmentPairUpdated); } #endregion } } else { #region | else | foreach (var segmentPairOriginal in paragraphUnitOriginal.SegmentPairs) { var segmentPairUpdated = new SegmentPair(); var comparisonSegmentUnit = new ComparisonSegmentUnit(segmentPairOriginal.Id, segmentPairOriginal.SourceSections, segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections, segmentPairOriginal.IsLocked); AddToComparision(ref comparisonParagraphUnit, comparisonSegmentUnit, segmentPairOriginal, segmentPairUpdated); } #endregion } comparisonParagraphUnits.Add(comparisonParagraphUnit.ParagraphId, comparisonParagraphUnit); } comparisonFileParagraphUnits.Add(fileParagraphUnitOriginal.Key, comparisonParagraphUnits); } #endregion } else { #region | compare normal | foreach (var fileParagraphUnitOriginal in xFileParagraphUnitsOriginal) { var fileName = Path.GetFileName(fileParagraphUnitOriginal.Key); var comparisonParagraphUnits = new Dictionary <string, ComparisonParagraphUnit>(); if (!xFileParagraphUnitsUpdated.ContainsKey(fileParagraphUnitOriginal.Key)) { throw new Exception( string.Format( "Error: Structure mismatch; unable to locate the corresponding file : '{0}' in the updated file", fileParagraphUnitOriginal.Key)); } var fileParagraphUnitUpdated = xFileParagraphUnitsUpdated[fileParagraphUnitOriginal.Key]; foreach (var paragraphUnitOriginalPair in fileParagraphUnitOriginal.Value) { OnProgress(iProgressMaximum, iProgressCurrent++, fileName); var comparisonParagraphUnit = new ComparisonParagraphUnit { ParagraphId = paragraphUnitOriginalPair.Key, ParagraphIsUpdated = false, ParagraphStatusChanged = false, ParagraphHasComments = false }; var paragraphUnitOriginal = paragraphUnitOriginalPair.Value; ParagraphUnit paragraphUnitUpdated; if (fileParagraphUnitUpdated.ContainsKey(paragraphUnitOriginal.ParagraphUnitId)) { paragraphUnitUpdated = fileParagraphUnitUpdated[paragraphUnitOriginal.ParagraphUnitId]; } else { throw new Exception( string.Format( "Error: Structure mismatch; unable to locate the corresponding paragraph ID: '{0}' in the updated file", paragraphUnitOriginal.ParagraphUnitId)); } if (paragraphUnitOriginal.SegmentPairs.Count >= paragraphUnitUpdated.SegmentPairs.Count) { #region | xParagraphUnit_original.xSegmentPairs.Count >= xParagraphUnit_updated.xSegmentPairs.Count | //if segment count has not changed (or greater than the segment count in the updated file) for (var i = 0; i < paragraphUnitOriginal.SegmentPairs.Count; i++) { var segmentPairOriginal = paragraphUnitOriginal.SegmentPairs[i]; var segmentPairUpdated = new SegmentPair(); if (paragraphUnitUpdated.SegmentPairs.Count > i) { segmentPairUpdated = paragraphUnitUpdated.SegmentPairs[i]; } var comparisonSegmentUnit = new ComparisonSegmentUnit(segmentPairOriginal.Id, segmentPairOriginal.SourceSections, segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections, segmentPairOriginal.IsLocked); AddToComparision(ref comparisonParagraphUnit, comparisonSegmentUnit, segmentPairOriginal, segmentPairUpdated); } #endregion } else if (paragraphUnitOriginal.SegmentPairs.Count < paragraphUnitUpdated.SegmentPairs.Count) { #region | xParagraphUnit_original.xSegmentPairs.Count < xParagraphUnit_updated.xSegmentPairs.Count | //if more segments now exist in the updated file for (var i = 0; i < paragraphUnitUpdated.SegmentPairs.Count; i++) { var segmentPairOriginal = new SegmentPair(); if (paragraphUnitOriginal.SegmentPairs.Count > i) { segmentPairOriginal = paragraphUnitOriginal.SegmentPairs[i]; } var segmentPairUpdated = paragraphUnitUpdated.SegmentPairs[i]; var comparisonSegmentUnit = new ComparisonSegmentUnit(segmentPairUpdated.Id, segmentPairOriginal.SourceSections, segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections, segmentPairOriginal.IsLocked); AddToComparision(ref comparisonParagraphUnit, comparisonSegmentUnit, segmentPairOriginal, segmentPairUpdated); } #endregion } comparisonParagraphUnits.Add(comparisonParagraphUnit.ParagraphId, comparisonParagraphUnit); } comparisonFileParagraphUnits.Add(fileParagraphUnitOriginal.Key, comparisonParagraphUnits); } #endregion } return(comparisonFileParagraphUnits); }
internal Dictionary <string, Dictionary <string, ComparisonParagraphUnit> > GetComparisonParagraphUnits(Dictionary <string, Dictionary <string, ParagraphUnit> > fileParagraphUnitsOriginal , Dictionary <string, Dictionary <string, ParagraphUnit> > fileParagraphUnitsUpdated) { var comparisonFileParagraphUnits = new Dictionary <string, Dictionary <string, ComparisonParagraphUnit> >(); var iProgressCurrent = 0; var iProgressMaximum = fileParagraphUnitsOriginal.Sum(fileParagraphUnits => fileParagraphUnits.Value.Count); foreach (var fileParagraphUnitOriginal in fileParagraphUnitsOriginal) { var comparisonParagraphUnits = new Dictionary <string, ComparisonParagraphUnit>(); if (!fileParagraphUnitsUpdated.ContainsKey(fileParagraphUnitOriginal.Key)) { throw new Exception("Error: Structure mismatch; unable to locate the corresponding file : '" + fileParagraphUnitOriginal.Key + "' in the updated file"); } var fileParagraphUnitUdpated = fileParagraphUnitsUpdated[fileParagraphUnitOriginal.Key]; foreach (var xParagraphUnitOriginalPair in fileParagraphUnitOriginal.Value) { OnProgress(iProgressMaximum, iProgressCurrent++, ""); var comparisonParagraphUnit = new ComparisonParagraphUnit { ParagraphId = xParagraphUnitOriginalPair.Key, ParagraphIsUpdated = false, ParagraphStatusChanged = false, ParagraphHasComments = false }; var paragraphUnitOriginal = xParagraphUnitOriginalPair.Value; ParagraphUnit paragraphUnitUpdated; if (fileParagraphUnitUdpated.ContainsKey(paragraphUnitOriginal.ParagraphUnitId)) { paragraphUnitUpdated = fileParagraphUnitUdpated[paragraphUnitOriginal.ParagraphUnitId]; } else { throw new Exception("Error: Structure mismatch; unable to locate the corresponding paragraph ID: '" + paragraphUnitOriginal.ParagraphUnitId + "' in the updated file"); } if (paragraphUnitOriginal.SegmentPairs.Count >= paragraphUnitUpdated.SegmentPairs.Count) { //if segment count has not changed (or greater than the segment count in the updated file) for (var i = 0; i < paragraphUnitOriginal.SegmentPairs.Count; i++) { var segmentPairOriginal = paragraphUnitOriginal.SegmentPairs[i]; var segmentPairUpdated = new SegmentPair(); if (paragraphUnitUpdated.SegmentPairs.Count > i) { segmentPairUpdated = paragraphUnitUpdated.SegmentPairs[i]; } var comparisonSegmentUnit = new ComparisonSegmentUnit(segmentPairOriginal.Id, segmentPairOriginal.SourceSections, segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections); AddToComparision(ref comparisonParagraphUnit, comparisonSegmentUnit, segmentPairOriginal, segmentPairUpdated); } } else if (paragraphUnitOriginal.SegmentPairs.Count < paragraphUnitUpdated.SegmentPairs.Count) { //if more segments now exist in the updated file for (var i = 0; i < paragraphUnitUpdated.SegmentPairs.Count; i++) { var segmentPairOriginal = new SegmentPair(); if (paragraphUnitOriginal.SegmentPairs.Count > i) { segmentPairOriginal = paragraphUnitOriginal.SegmentPairs[i]; } var segmentPairUpdated = paragraphUnitUpdated.SegmentPairs[i]; var comparisonSegmentUnit = new ComparisonSegmentUnit(segmentPairUpdated.Id, segmentPairOriginal.SourceSections, segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections); AddToComparision(ref comparisonParagraphUnit, comparisonSegmentUnit, segmentPairOriginal, segmentPairUpdated); } } comparisonParagraphUnits.Add(comparisonParagraphUnit.ParagraphId, comparisonParagraphUnit); } comparisonFileParagraphUnits.Add(fileParagraphUnitOriginal.Key, comparisonParagraphUnits); } return(comparisonFileParagraphUnits); }
private void AddToComparision(ref ComparisonParagraphUnit comparisonParagraphUnit , ComparisonSegmentUnit comparisonSegmentUnit , SegmentPair segmentPairOriginal , SegmentPair segmentPairUpdated) { comparisonSegmentUnit.SegmentStatusOriginal = segmentPairOriginal.SegmentStatus; comparisonSegmentUnit.SegmentStatusUpdated = segmentPairUpdated.SegmentStatus; comparisonSegmentUnit.TranslationStatusOriginal = GetTranslationStatus(segmentPairOriginal); comparisonSegmentUnit.TranslationStatusUpdated = GetTranslationStatus(segmentPairUpdated); if (segmentPairOriginal.TranslationOrigin != null) { comparisonSegmentUnit.TranslationOriginTypeOriginal = segmentPairOriginal.TranslationOrigin.OriginType; } if (segmentPairUpdated.TranslationOrigin != null) { comparisonSegmentUnit.TranslationOriginTypeUpdated = segmentPairUpdated.TranslationOrigin.OriginType; } if (string.CompareOrdinal(segmentPairOriginal.Target, segmentPairUpdated.Target) != 0) { comparisonSegmentUnit.ComparisonTextUnits = GetComparisonTextUnits(segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections); comparisonSegmentUnit.SegmentTextUpdated = true; comparisonParagraphUnit.ParagraphIsUpdated = true; } comparisonSegmentUnit.SourceWordsOriginal = segmentPairOriginal.SourceWords; comparisonSegmentUnit.SourceCharsOriginal = segmentPairOriginal.SourceChars; comparisonSegmentUnit.SourceTagsOriginal = segmentPairOriginal.SourceTags; comparisonSegmentUnit.SourceWordsUpdated = segmentPairUpdated.SourceWords; comparisonSegmentUnit.SourceCharsUpdated = segmentPairUpdated.SourceChars; comparisonSegmentUnit.SourceTagsUpdated = segmentPairUpdated.SourceTags; if (string.Compare(comparisonSegmentUnit.SegmentStatusOriginal, comparisonSegmentUnit.SegmentStatusUpdated, StringComparison.OrdinalIgnoreCase) != 0) { comparisonSegmentUnit.SegmentSegmentStatusUpdated = true; comparisonParagraphUnit.ParagraphStatusChanged = true; } if (segmentPairUpdated.Comments != null && segmentPairUpdated.Comments.Count > 0) { comparisonSegmentUnit.Comments = segmentPairUpdated.Comments; comparisonSegmentUnit.SegmentHasComments = true; comparisonParagraphUnit.ParagraphHasComments = true; } comparisonSegmentUnit.TargetOriginalRevisionMarkers = new List <SegmentSection>(); foreach (var section in segmentPairOriginal.TargetSections) { if (section.RevisionMarker != null) { comparisonSegmentUnit.TargetOriginalRevisionMarkers.Add(section); } } comparisonSegmentUnit.TargetUpdatedRevisionMarkers = new List <SegmentSection>(); foreach (var section in segmentPairUpdated.TargetSections) { if (section.RevisionMarker != null) { comparisonSegmentUnit.TargetUpdatedRevisionMarkers.Add(section); } } comparisonParagraphUnit.ComparisonSegmentUnits.Add(comparisonSegmentUnit); }
private void AddToComparision(ref ComparisonParagraphUnit comparisonParagraphUnit , ComparisonSegmentUnit comparisonSegmentUnit , SegmentPair segmentPairOriginal , SegmentPair segmentPairUpdated) { comparisonSegmentUnit.SegmentStatusOriginal = segmentPairOriginal.SegmentStatus; comparisonSegmentUnit.SegmentStatusUpdated = segmentPairUpdated.SegmentStatus; comparisonSegmentUnit.TranslationStatusOriginal = GetTranslationStatus(segmentPairOriginal); comparisonSegmentUnit.TranslationStatusUpdated = GetTranslationStatus(segmentPairUpdated); if (segmentPairOriginal.TranslationOrigin != null) { comparisonSegmentUnit.TranslationOriginTypeOriginal = segmentPairOriginal.TranslationOrigin.OriginType; } if (segmentPairUpdated.TranslationOrigin != null) { comparisonSegmentUnit.TranslationOriginTypeUpdated = segmentPairUpdated.TranslationOrigin.OriginType; } comparisonSegmentUnit.TranslationSectionsWordsIdentical = 0; comparisonSegmentUnit.TranslationSectionsCharactersIdentical = 0; comparisonSegmentUnit.TranslationSectionsTagsIdentical = 0; comparisonSegmentUnit.TranslationSectionsWordsNew = 0; comparisonSegmentUnit.TranslationSectionsCharactersNew = 0; comparisonSegmentUnit.TranslationSectionsTagsNew = 0; comparisonSegmentUnit.TranslationSectionsWordsRemoved = 0; comparisonSegmentUnit.TranslationSectionsCharactersRemoved = 0; comparisonSegmentUnit.TranslationSectionsTagsRemoved = 0; comparisonSegmentUnit.TranslationSectionsWords = 0; comparisonSegmentUnit.TranslationSectionsCharacters = 0; comparisonSegmentUnit.TranslationSectionsTags = 0; comparisonSegmentUnit.TranslationSectionsChangedWords = 0; comparisonSegmentUnit.TranslationSectionsChangedCharacters = 0; comparisonSegmentUnit.TranslationSectionsChangedTags = 0; if (string.Compare(segmentPairOriginal.Target, segmentPairUpdated.Target, StringComparison.OrdinalIgnoreCase) != 0) { try { comparisonSegmentUnit.ComparisonTextUnits = GetComparisonTextUnits(segmentPairOriginal.TargetSections, segmentPairUpdated.TargetSections); foreach (var comparisonTextUnit in comparisonSegmentUnit.ComparisonTextUnits) { switch (comparisonTextUnit.ComparisonTextUnitType) { case ComparisonTextUnitType.Identical: foreach (var segmentSection in comparisonTextUnit.TextSections) { if (segmentSection.Content.Trim() != string.Empty) { if (segmentSection.IsText) { comparisonSegmentUnit.TranslationSectionsWordsIdentical++; } else { comparisonSegmentUnit.TranslationSectionsTagsIdentical++; } } if (segmentSection.IsText) { comparisonSegmentUnit.TranslationSectionsCharactersIdentical += segmentSection.Content.ToCharArray().Length; } } break; case ComparisonTextUnitType.New: foreach (var segmentSection in comparisonTextUnit.TextSections) { if (segmentSection.Content.Trim() != string.Empty) { if (segmentSection.IsText) { comparisonSegmentUnit.TranslationSectionsWordsNew++; } else { comparisonSegmentUnit.TranslationSectionsTagsNew++; } } if (segmentSection.IsText) { comparisonSegmentUnit.TranslationSectionsCharactersNew += segmentSection.Content.ToCharArray().Length; } } break; case ComparisonTextUnitType.Removed: foreach (var segmentSection in comparisonTextUnit.TextSections) { if (segmentSection.Content.Trim() != string.Empty) { if (segmentSection.IsText) { comparisonSegmentUnit.TranslationSectionsWordsRemoved++; } else { comparisonSegmentUnit.TranslationSectionsTagsRemoved++; } } if (segmentSection.IsText) { comparisonSegmentUnit.TranslationSectionsCharactersRemoved += segmentSection.Content.ToCharArray().Length; } } break; } } comparisonSegmentUnit.TranslationSectionsWords = comparisonSegmentUnit.TranslationSectionsWordsIdentical + comparisonSegmentUnit.TranslationSectionsWordsRemoved; comparisonSegmentUnit.TranslationSectionsCharacters = comparisonSegmentUnit.TranslationSectionsCharactersIdentical + comparisonSegmentUnit.TranslationSectionsCharactersRemoved; comparisonSegmentUnit.TranslationSectionsTags = comparisonSegmentUnit.TranslationSectionsTagsIdentical + comparisonSegmentUnit.TranslationSectionsTagsRemoved; var totalChangesWords = comparisonSegmentUnit.TranslationSectionsWordsNew + comparisonSegmentUnit.TranslationSectionsWordsRemoved; var totalChangesCharacters = comparisonSegmentUnit.TranslationSectionsCharactersNew + comparisonSegmentUnit.TranslationSectionsCharactersRemoved; var totalChangesTags = comparisonSegmentUnit.TranslationSectionsTagsNew + comparisonSegmentUnit.TranslationSectionsTagsRemoved; comparisonSegmentUnit.TranslationSectionsChangedWords = totalChangesWords; comparisonSegmentUnit.TranslationSectionsChangedCharacters = totalChangesCharacters; comparisonSegmentUnit.TranslationSectionsChangedTags = totalChangesTags; } catch (Exception ex) { Console.WriteLine(ex.Message); } comparisonSegmentUnit.SegmentTextUpdated = true; comparisonParagraphUnit.ParagraphIsUpdated = true; } if (string.Compare(comparisonSegmentUnit.SegmentStatusOriginal, comparisonSegmentUnit.SegmentStatusUpdated, StringComparison.OrdinalIgnoreCase) != 0) { comparisonSegmentUnit.SegmentSegmentStatusUpdated = true; comparisonParagraphUnit.ParagraphStatusChanged = true; } if (segmentPairUpdated.Comments != null && segmentPairUpdated.Comments.Count > 0) { comparisonSegmentUnit.Comments = segmentPairUpdated.Comments; comparisonSegmentUnit.SegmentHasComments = true; comparisonParagraphUnit.ParagraphHasComments = true; } comparisonParagraphUnit.ComparisonSegmentUnits.Add(comparisonSegmentUnit); }