private bool IsSymbolPairMatchingRelationship(RelatedSymbolPair symbolPair, [NotNull] IModelRelationship relationship) { var sourceNode = LatestModel.TryGetNode(relationship.Source).Value; var targetNode = LatestModel.TryGetNode(relationship.Target).Value; return(relationship.Stereotype == symbolPair.Stereotype && _symbolEqualityComparer.Equals((ISymbol)sourceNode.Payload, symbolPair.SourceSymbol) && _symbolEqualityComparer.Equals((ISymbol)targetNode.Payload, symbolPair.TargetSymbol)); }
private void AddRelationshipIfNotExists(RelatedSymbolPair relatedSymbolPair) { var sourceNode = CurrentRoslynModel.GetNodeBySymbol(relatedSymbolPair.SourceSymbol); var targetNode = CurrentRoslynModel.GetNodeBySymbol(relatedSymbolPair.TargetSymbol); if (CurrentRoslynModel.RelationshipExists(sourceNode, targetNode, relatedSymbolPair.Stereotype)) { return; } var newRelationship = RoslynModelItemFactory.CreateRoslynRelationship(sourceNode, targetNode, relatedSymbolPair.Stereotype); AddRelationship(newRelationship); }
public IModelRelationship GetOrAddRelationship(RelatedSymbolPair relatedSymbolPair) { using (_asyncLock.Lock()) { return(_modelService.LatestModel.TryGetRelationshipByPayload(relatedSymbolPair).Match( some => some, () => { var sourceNode = GetOrAddNode(relatedSymbolPair.SourceSymbol); var targetNode = GetOrAddNode(relatedSymbolPair.TargetSymbol); return _modelService.AddRelationship(sourceNode.Id, targetNode.Id, relatedSymbolPair.Stereotype, relatedSymbolPair); })); } }
private static RelatedSymbolPair GetOriginalDefinition(RelatedSymbolPair symbolPair) { return(symbolPair.WithRelatedSymbol(GetOriginalDefinition(symbolPair.RelatedSymbol))); }