コード例 #1
0
        private bool IsSelected([NotNull] IExternalInteractor item, string filter, ExternalInteractorListFilter filterSpecial)
        {
            bool result;

            if (string.IsNullOrWhiteSpace(filter))
            {
                result = true;
            }
            else
            {
                result = (!string.IsNullOrWhiteSpace(item.Name) &&
                          item.Name.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0) ||
                         (!string.IsNullOrWhiteSpace(item.Description) &&
                          item.Description.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0);
                if (!result && (item.Properties?.Any() ?? false))
                {
                    var properties = item.Properties.ToArray();
                    foreach (var property in properties)
                    {
                        var stringValue = property.StringValue;
                        if ((!string.IsNullOrWhiteSpace(stringValue) &&
                             stringValue.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0))
                        {
                            result = true;
                            break;
                        }
                    }
                }
            }

            if (result)
            {
                switch (filterSpecial)
                {
                case ExternalInteractorListFilter.NoDiagram:
                    result = _model.Diagrams?.All(x => x.GetEntityShape(item.Id) == null) ?? true;
                    break;

                case ExternalInteractorListFilter.NoThreatEvents:
                    result = !(item.ThreatEvents?.Any() ?? false);
                    break;

                case ExternalInteractorListFilter.MissingMitigations:
                    result = item.ThreatEvents?.Any(x => !(x.Mitigations?.Any() ?? false)) ?? false;
                    break;
                }
            }

            return(result);
        }
コード例 #2
0
        private void HandleEntityShapeEvent([NotNull] IExternalInteractor externalInteractor)
        {
            var row = GetRow(externalInteractor);

            if (row == null)
            {
                var filter        = _filter.Text;
                var filterSpecial = EnumExtensions.GetEnumValue <ExternalInteractorListFilter>((string)_specialFilter.SelectedItem);
                if (IsSelected(externalInteractor, filter, filterSpecial))
                {
                    AddGridRow(externalInteractor, _grid.PrimaryGrid);
                }
            }
            else
            {
                var filter        = _filter.Text;
                var filterSpecial = EnumExtensions.GetEnumValue <ExternalInteractorListFilter>((string)_specialFilter.SelectedItem);
                if (!IsSelected(externalInteractor, filter, filterSpecial))
                {
                    row.GridPanel.Rows.Remove(row);
                }
            }
        }