Exemple #1
0
        private static bool DocumentStructureInfoSearch(DisplayFilterRowInfo rowInfo, CustomFilterSettings customSettings)
        {
            if (!rowInfo.IsSegment)
            {
                return(false);
            }

            foreach (var contextInfo in rowInfo.ContextInfo)
            {
                if (contextInfo != null)
                {
                    if (contextInfo.DisplayName?.IndexOf(customSettings.DocumentStructureInformation,
                                                         StringComparison.InvariantCultureIgnoreCase) > -1)
                    {
                        return(true);
                    }

                    if (contextInfo.DisplayCode?.IndexOf(customSettings.DocumentStructureInformation,
                                                         StringComparison.InvariantCultureIgnoreCase) > -1)
                    {
                        return(true);
                    }

                    if (contextInfo.Description?.IndexOf(customSettings.DocumentStructureInformation,
                                                         StringComparison.InvariantCultureIgnoreCase) > -1)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemple #2
0
 public ContentMatchingService(DisplayFilterSettings settings, CustomFilterSettings customSettings)
 {
     _settings       = settings;
     _customSettings = customSettings;
 }
Exemple #3
0
 public CustomFilterService(DisplayFilterSettings settings, CustomFilterSettings customSettings, Document document)
 {
     _settings       = settings;
     _customSettings = customSettings;
     _document       = document;
 }
Exemple #4
0
        private static List <ISegmentPair> GetQualifiedSegmentPairs(IEnumerable <ISegmentPair> segmentPairs, CustomFilterSettings customFilterSettings)
        {
            var availableSegmentPairs = new List <ISegmentPair>();
            var segmentVisitor        = new SegmentTextVisitor();

            foreach (var segmentPair in segmentPairs)
            {
                var sourceText = segmentVisitor.GetText(segmentPair.Source);
                var targetText = segmentVisitor.GetText(segmentPair.Target);

                if (string.IsNullOrEmpty(targetText))
                {
                    targetText = sourceText;
                }

                if (targetText.Length >= customFilterSettings.QualitySamplingMinCharsValue &&
                    targetText.Length <= customFilterSettings.QualitySamplingMaxCharsValue)
                {
                    availableSegmentPairs.Add(segmentPair);
                }
            }

            return(availableSegmentPairs);
        }
Exemple #5
0
        public List <string> GetSamplingSegmentPairsIds(Document document, CustomFilterSettings customFilterSettings)
        {
            if (!customFilterSettings.QualitySamplingSegmentSelection &&
                !customFilterSettings.QualitySamplingMinMaxCharacters)
            {
                return(null);
            }

            var segmentPairs = document.SegmentPairs.ToList();

            if (segmentPairs.Count <= 0)
            {
                return(null);
            }

            var segmentPairIds = new List <string>();

            if (customFilterSettings.QualitySamplingSegmentSelection)
            {
                if (customFilterSettings.QualitySamplingRandomlySelect)
                {
                    // first get a qualified list, taking into consideration the min/max char range
                    if (customFilterSettings.QualitySamplingMinMaxCharacters)
                    {
                        segmentPairs = GetQualifiedSegmentPairs(segmentPairs, customFilterSettings);
                    }

                    // get total number of segment to work with.
                    var percentage    = ((decimal)customFilterSettings.QualitySamplingRandomlySelectValue / 100);
                    var segmentsCount = (int)Math.Round(segmentPairs.Count * percentage, 0);

                    // select the segments randomly
                    var segmentPairIndexes = new List <int>();
                    if (segmentsCount == segmentPairs.Count)
                    {
                        for (var i = 0; i < segmentsCount; i++)
                        {
                            segmentPairIndexes.Add(i);
                        }
                    }

                    for (var i = 0; i < segmentsCount; i++)
                    {
                        segmentPairIndexes.Add(RandomNumber(1, segmentPairs.Count + 1, segmentPairIndexes));
                    }

                    foreach (var segmentPairIndex in segmentPairIndexes)
                    {
                        var segmentPair   = segmentPairs[segmentPairIndex - 1];
                        var segmentPairId = GetSegmentPairId(segmentPair);
                        segmentPairIds.Add(segmentPairId);
                    }
                }
                else
                {
                    var segmentPairGroups = new List <List <ISegmentPair> >();
                    while (segmentPairs.Any())
                    {
                        segmentPairGroups.Add(segmentPairs.Take(customFilterSettings.QualitySamplingSelectOneInEveryValue).ToList());
                        segmentPairs = segmentPairs.Skip(customFilterSettings.QualitySamplingSelectOneInEveryValue).ToList();
                    }

                    foreach (var segmentPairGroup in segmentPairGroups)
                    {
                        var qualifiedSegmentPairs = customFilterSettings.QualitySamplingMinMaxCharacters
                                                        ? GetQualifiedSegmentPairs(segmentPairGroup, customFilterSettings)
                                                        : segmentPairGroup;

                        if (!(qualifiedSegmentPairs?.Count > 0))
                        {
                            continue;
                        }

                        var segmentPairIndex = RandomNumber(1, qualifiedSegmentPairs.Count + 1);
                        var segmentPair      = qualifiedSegmentPairs[segmentPairIndex - 1];
                        var segmentPairId    = GetSegmentPairId(segmentPair);
                        segmentPairIds.Add(segmentPairId);
                    }
                }
            }
            else if (customFilterSettings.QualitySamplingMinMaxCharacters)
            {
                segmentPairs = GetQualifiedSegmentPairs(segmentPairs, customFilterSettings);

                foreach (var segmentPair in segmentPairs)
                {
                    var segmentPairId = GetSegmentPairId(segmentPair);
                    segmentPairIds.Add(segmentPairId);
                }
            }

            return(segmentPairIds);
        }
        public static bool Filter(CustomFilterSettings customSettings, DisplayFilterRowInfo rowInfo, bool success, Document activeDocument)
        {
            var rowId = rowInfo.SegmentPair.Properties.Id.Id;

            if (success && customSettings.EvenNo)
            {
                success = SegmentNumbersHelper.IsEven(rowId);
            }
            if (success && customSettings.OddsNo)
            {
                success = SegmentNumbersHelper.IsOdd(rowId);
            }
            if (success && customSettings.SplitSegments)
            {
                success = SegmentNumbersHelper.IsSplitSegment(rowId, activeDocument);
            }
            if (success && (customSettings.MergedSegments || customSettings.MergedAcross))
            {
                success = SegmentNumbersHelper.IsMergedSegment(rowId, activeDocument, customSettings.MergedAcross);
            }

            if (success && customSettings.SourceEqualsTarget)
            {
                success = SegmentNumbersHelper.IsSourceEqualsToTarget(rowInfo.SegmentPair, customSettings.IsEqualsCaseSensitive);
            }
            if (success && customSettings.Grouped && !string.IsNullOrWhiteSpace(customSettings.GroupedList))
            {
                success = SegmentNumbersHelper.IdInRange(rowId, customSettings.GroupedList);
            }
            if (success && customSettings.UseRegexCommentSearch &&
                !string.IsNullOrWhiteSpace(customSettings.CommentRegex))
            {
                //create a list with source and target comments
                var commentsList = rowInfo.SegmentPair.Source.GetComments();
                commentsList.AddRange(rowInfo.SegmentPair.Target.GetComments());

                success = CommentsHelper.IsCommentTextFoundWithRegex(commentsList, customSettings.CommentRegex);
            }
            if (success && customSettings.Colors.Count > 0)
            {
                try
                {
                    success = ColorPickerHelper.ContainsColor(rowInfo, customSettings.Colors);
                }
                catch (Exception e) { }
            }

            //fuzzy
            if (success && !string.IsNullOrWhiteSpace(customSettings.FuzzyMin) &&
                !string.IsNullOrWhiteSpace(customSettings.FuzzyMax))
            {
                success = FuzzyHelper.IsInFuzzyRange(rowInfo, customSettings.FuzzyMin, customSettings.FuzzyMax);
            }
            if (success && customSettings.ContainsTags)
            {
                var containsTagVisitor = new TagVisitor();
                success = containsTagVisitor.ContainsTag(rowInfo.SegmentPair.Source);
            }
            //unique
            if (success && customSettings.Unique)
            {
                var settings = new DisplayFilterSettings
                {
                    RepetitionTypes = new List <string>
                    {
                        "FirstOccurrences"
                    }
                };

                var isFirst = rowInfo.IsRepetitionsFirstOccurrences(settings);
                if (isFirst)
                {
                    return(true);
                }

                if (rowInfo.SegmentPair.Properties.TranslationOrigin != null)
                {
                    var isRepeated = rowInfo.SegmentPair.Properties.TranslationOrigin.IsRepeated;
                    return(!isRepeated);
                }

                return(false);
            }
            //created by
            if (success && customSettings.CreatedByChecked && !string.IsNullOrWhiteSpace(customSettings.CreatedBy))
            {
                var userVisitor = new UserVisitor();
                success = userVisitor.CreatedBy(rowInfo.SegmentPair.Source, customSettings.CreatedBy);
            }
            //modify by
            if (success && customSettings.ModifiedByChecked && !string.IsNullOrWhiteSpace(customSettings.ModifiedBy))
            {
                var userVisitor = new UserVisitor();
                success = userVisitor.ModifiedBy(rowInfo.SegmentPair.Source, customSettings.ModifiedBy);
            }
            if (success && customSettings.EditedFuzzy)
            {
                success = FuzzyHelper.ContainsFuzzy(rowInfo.SegmentPair.Target) && FuzzyHelper.IsEditedFuzzy(rowInfo.SegmentPair.Target);
            }
            if (success && customSettings.UnEditedFuzzy)
            {
                success = FuzzyHelper.ContainsFuzzy(rowInfo.SegmentPair.Target) && !FuzzyHelper.IsEditedFuzzy(rowInfo.SegmentPair.Target);
            }
            return(success);
        }
        public static bool Reverse(DisplayFilterSettings settings, bool success, DisplayFilterRowInfo rowInfo, CustomFilterSettings customSettings, Document activeDocument)
        {
            success = false;
            if (!success && settings.SegmentReviewTypes != null && settings.SegmentReviewTypes.Any())
            {
                success = rowInfo.IsSegmentReviewTypes(settings);
            }


            if (!success && settings.ConfirmationLevels != null && settings.ConfirmationLevels.Any())
            {
                success = rowInfo.IsConfirmationLevelFound(settings);
            }


            if (!success && settings.OriginTypes != null && settings.OriginTypes.Any())
            {
                success = rowInfo.IsOriginTypeFound(settings);
            }


            if (!success && settings.PreviousOriginTypes != null && settings.PreviousOriginTypes.Any())
            {
                success = rowInfo.IsPreviousOriginTypeFound(settings);
            }


            if (!success && settings.RepetitionTypes != null && settings.RepetitionTypes.Any())
            {
                success = rowInfo.IsRepetitionTypes(settings);
            }


            if (!success && settings.SegmentLockingTypes != null && settings.SegmentLockingTypes.Any())
            {
                success = rowInfo.IsSegmentLockingTypes(settings);
            }


            if (!success && settings.SegmentContentTypes != null && settings.SegmentContentTypes.Any())
            {
                success = rowInfo.IsSegmentContentTypes(settings);
            }


            if (!success && settings.SourceText.Trim() != string.Empty)
            {
                success = rowInfo.IsTextFoundInSource(settings);
            }


            if (!success && settings.TargetText.Trim() != string.Empty)
            {
                success = rowInfo.IsTextFoundInTarget(settings);
            }


            if (!success && !customSettings.UseRegexCommentSearch && settings.CommentText.Trim() != string.Empty)
            {
                success = rowInfo.IsTextFoundInComment(settings);
            }


            if (!success && settings.CommentAuthor.Trim() != string.Empty)
            {
                success = rowInfo.IsAuthorFoundInComment(settings);
            }


            if (!success && settings.CommentSeverity > 0)
            {
                success = rowInfo.IsSeverityFoundInComment(settings);
            }


            if (!success && settings.ContextInfoTypes.Any())
            {
                success = rowInfo.IsContextInfoTypes(settings);
            }

            // check custom settings
            var rowId = rowInfo.SegmentPair.Properties.Id.Id;

            if (!success && customSettings.EvenNo)
            {
                success = SegmentNumbersHelper.IsEven(rowId);
            }
            if (!success && customSettings.OddsNo)
            {
                success = SegmentNumbersHelper.IsOdd(rowId);
            }
            if (!success && customSettings.SplitSegments)
            {
                success = SegmentNumbersHelper.IsSplitSegment(rowId, activeDocument);
            }
            if (!success && (customSettings.MergedSegments || customSettings.MergedAcross))
            {
                success = SegmentNumbersHelper.IsMergedSegment(rowId, activeDocument, customSettings.MergedAcross);
            }
            if (!success && customSettings.SourceEqualsTarget)
            {
                success = SegmentNumbersHelper.IsSourceEqualsToTarget(rowInfo.SegmentPair, customSettings.IsEqualsCaseSensitive);
            }
            if (!success && customSettings.Grouped && !string.IsNullOrWhiteSpace(customSettings.GroupedList))
            {
                success = SegmentNumbersHelper.IdInRange(rowId, customSettings.GroupedList);
            }
            if (!success && customSettings.UseRegexCommentSearch &&
                !string.IsNullOrWhiteSpace(customSettings.CommentRegex))
            {
                //create a list with source and target comments
                var commentsList = rowInfo.SegmentPair.Source.GetComments();
                commentsList.AddRange(rowInfo.SegmentPair.Target.GetComments());

                success = CommentsHelper.IsCommentTextFoundWithRegex(commentsList, customSettings.CommentRegex);
            }
            if (!success && customSettings.Colors.Count > 0)
            {
                try
                {
                    success = ColorPickerHelper.ContainsColor(rowInfo, customSettings.Colors);
                }
                catch (Exception e) { }
            }

            //fuzzy
            if (!success && !string.IsNullOrWhiteSpace(customSettings.FuzzyMin) &&
                !string.IsNullOrWhiteSpace(customSettings.FuzzyMax))
            {
                success = FuzzyHelper.IsInFuzzyRange(rowInfo, customSettings.FuzzyMin, customSettings.FuzzyMax);
            }
            //tags
            if (!success && customSettings.ContainsTags)
            {
                var containsTagVisitor = new TagVisitor();
                success = containsTagVisitor.ContainsTag(rowInfo.SegmentPair.Source);
            }
            if (!success && customSettings.CreatedByChecked && !string.IsNullOrWhiteSpace(customSettings.CreatedBy))
            {
                var userVisitor = new UserVisitor();
                success = userVisitor.CreatedBy(rowInfo.SegmentPair.Source, customSettings.CreatedBy);
            }
            //modify by
            if (!success && customSettings.ModifiedByChecked && !string.IsNullOrWhiteSpace(customSettings.ModifiedBy))
            {
                var userVisitor = new UserVisitor();
                success = userVisitor.ModifiedBy(rowInfo.SegmentPair.Source, customSettings.ModifiedBy);
            }
            if (!success && customSettings.EditedFuzzy)
            {
                if (FuzzyHelper.ContainsFuzzy(rowInfo.SegmentPair.Target))
                {
                    success = FuzzyHelper.IsEditedFuzzy(rowInfo.SegmentPair.Target);
                }
                else
                {
                    return(false);
                }
            }
            if (!success && customSettings.UnEditedFuzzy)
            {
                if (FuzzyHelper.ContainsFuzzy(rowInfo.SegmentPair.Target))
                {
                    success = !FuzzyHelper.IsEditedFuzzy(rowInfo.SegmentPair.Target);
                }
                else
                {
                    return(false);
                }
            }
            return(!success);
        }