Exemplo n.º 1
0
        private static IEnumerable <IPropertySchema> GetSchemas([NotNull] IThreatModel model, IEnumerable <IProperty> properties)
        {
            IEnumerable <IPropertySchema> result = null;

            if (properties?.Any() ?? false)
            {
                List <IPropertySchema> list = new List <IPropertySchema>();
                foreach (var property in properties)
                {
                    var propertyType = model.GetPropertyType(property.PropertyTypeId);
                    if (propertyType != null)
                    {
                        var schema = model.GetSchema(propertyType.SchemaId);
                        if (schema != null && !list.Contains(schema))
                        {
                            list.Add(schema);
                        }
                    }
                }

                if (list.Count > 0)
                {
                    result = list.Where(x => x.Visible)
                             .OrderByDescending(x => x.Priority)
                             .ThenByDescending(x => x.Name);
                }
            }

            return(result);
        }
Exemplo n.º 2
0
        private static void CleanProperties(this IPropertiesContainer container, [NotNull] IThreatModel model)
        {
            var properties = container?.Properties?.ToArray();

            if (properties?.Any() ?? false)
            {
                foreach (var property in properties)
                {
                    var propertyType = model.GetPropertyType(property.PropertyTypeId);
                    if (propertyType == null)
                    {
                        container.RemoveProperty(property.PropertyTypeId);
                    }
                }
            }
        }
        private void AddSchemas([NotNull] List <Guid> schemas, IEnumerable <IEnumerable <IProperty> > listProps)
        {
            var listPropsArray = listProps?.ToArray();

            if (listPropsArray?.Any() ?? false)
            {
                foreach (var listProp in listPropsArray)
                {
                    var props = listProp?.ToArray();
                    if (props?.Any() ?? false)
                    {
                        foreach (var prop in props)
                        {
                            var propertyType = _model.GetPropertyType(prop.PropertyTypeId);
                            if (propertyType != null)
                            {
                                if (!schemas.Contains(propertyType.SchemaId) && !(_model.GetSchema(propertyType.SchemaId)?.NotExportable ?? true))
                                {
                                    schemas.Add(propertyType.SchemaId);
                                }

                                if ((_extractors?.Any() ?? false) &&
                                    prop is IPropertyJsonSerializableObject jsonProperty)
                                {
                                    foreach (var extractor in _extractors)
                                    {
                                        var extractedSchemas = extractor.GetPropertySchemas(jsonProperty)?.ToArray();
                                        if (extractedSchemas?.Any() ?? false)
                                        {
                                            foreach (var schema in extractedSchemas)
                                            {
                                                if (!schema.NotExportable && !schemas.Contains(schema.Id))
                                                {
                                                    schemas.Add(schema.Id);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }