private TestModelBuilder AddRelationship(string sourceName, string targetName, ModelRelationshipClassifier classifier, ModelRelationshipStereotype stereotype) { if (_testModel.Relationships .Any(i => i.Source.Name == sourceName && i.Classifier == classifier && i.Stereotype == stereotype && i.Target.Name == targetName)) { throw new InvalidOperationException($"Relationship already exists {sourceName}--{classifier}({stereotype})-->{targetName}."); } var sourceEntity = _testModel.Entities.FirstOrDefault(i => i.Name == sourceName) as ModelEntity; if (sourceEntity == null) { throw new InvalidOperationException($"Entity with name {sourceName} not found."); } var targetEntity = _testModel.Entities.FirstOrDefault(i => i.Name == targetName) as ModelEntity; if (targetEntity == null) { throw new InvalidOperationException($"Entity with name {targetName} not found."); } var newRelationship = new ModelRelationship(sourceEntity, targetEntity, classifier, stereotype); _testModel.GetOrAddRelationship(newRelationship); return(this); }
private ModelRelationship AddRelationshipIfNotExists(RoslynSymbolRelation symbolRelation) { var sourceEntity = _model.GetEntityBySymbol(symbolRelation.SourceSymbol); var targetEntity = _model.GetEntityBySymbol(symbolRelation.TargetSymbol); var relationship = new ModelRelationship(sourceEntity, targetEntity, symbolRelation.Type); return(_model.GetOrAddRelationship(relationship)); }
private void CreateChildren(TestClass parent, int childCount, int currentLevel, int maxLevel) { if (currentLevel == maxLevel) { return; } for (var i = 0; i < childCount; i++) { var newEntity = CreateAndAddClass($"{parent.Name}-{i}"); var newRelationship = new ModelRelationship(newEntity, parent, ModelRelationshipClassifier.Generalization, ModelRelationshipStereotype.None); _testModel.GetOrAddRelationship(newRelationship); CreateChildren(newEntity, childCount, currentLevel + 1, maxLevel); } }
private static IDiagramConnector CreateConnector( [NotNull] IImmutableSet <IDiagramNode> nodes, [NotNull] string sourceNodeName, [NotNull] string targetNodeName) { var sourceNode = nodes.Single(i => i.Name == sourceNodeName); var targetNode = nodes.Single(i => i.Name == targetNodeName); var relationshipName = $"{sourceNodeName}->{targetNodeName}"; var relationship = new ModelRelationship( ModelRelationshipId.Create(), sourceNode.Id, targetNode.Id, ModelRelationshipStereotype.Default, relationshipName); return(new DiagramConnector(relationship, ConnectorTypes.Dependency)); }
public Model() { Fields = new Field[0]; SourceModelRelationships = new ModelRelationship[0]; RelatedModelRelationships = new ModelRelationship[0]; }
public override ModelRelationship GetOrAddRelationship(ModelRelationship modelRelationship) { _modelItemGroups.Last().Add(modelRelationship); return(base.GetOrAddRelationship(modelRelationship)); }
public bool Matches(ModelRelationship relationship) { return(relationship.Type == Type && SourceSymbol.OriginalDefinition.SymbolEquals(((IRoslynBasedModelEntity)relationship.Source).RoslynSymbol.OriginalDefinition) && TargetSymbol.OriginalDefinition.SymbolEquals(((IRoslynBasedModelEntity)relationship.Target).RoslynSymbol.OriginalDefinition)); }