private void ImportElements([NotNull] ThreatModel source, [NotNull] IThreatModel target, out int externalInteractors, out int process, out int dataStore) { externalInteractors = 0; process = 0; dataStore = 0; var elements = source.Elements?.ToArray(); if (elements?.Any() ?? false) { var schemaManager = new EntitiesPropertySchemaManager(target); var schema = schemaManager.GetSchema(); foreach (var element in elements) { IEntity entity; switch (element.Value.ElementType) { case ElementType.StencilRectangle: entity = target.AddEntity <IExternalInteractor>(element.Value.Name); externalInteractors++; break; case ElementType.StencilEllipse: entity = target.AddEntity <IProcess>(element.Value.Name); process++; break; case ElementType.StencilParallelLines: entity = target.AddEntity <IDataStore>(element.Value.Name); dataStore++; break; default: entity = null; break; } if (entity != null) { schemaManager.SetMsTmtEntityId(entity, element.Key.ToString()); var properties = element.Value.Properties?.ToArray(); AddProperties(schema, entity, properties); IDiagram diagram = target.Diagrams?.FirstOrDefault(x => string.CompareOrdinal(x.Name, element.Value.Page) == 0); if (diagram == null) { diagram = target.AddDiagram(element.Value.Page); } diagram.AddEntityShape(entity.Id, new PointF(element.Value.Position.X * 2f, element.Value.Position.Y * 2f)); } } } }
public void Initialize([NotNull] IThreatModel model) { var entitiesPropertySchemaManager = new EntitiesPropertySchemaManager(model); entitiesPropertySchemaManager.GetSchema(); var dataFlowsPropertySchemaManager = new DataFlowsPropertySchemaManager(model); dataFlowsPropertySchemaManager.GetSchema(); var threatsPropertySchemaManager = new ThreatsPropertySchemaManager(model); threatsPropertySchemaManager.GetSchema(); }