private (IModelGraph, ImmutableDictionary <object, IModelNode>) UpdateNodeCore( [NotNull] IModelNode updatedNode, [NotNull] IModelGraph modelGraph, [NotNull] ImmutableDictionary <object, IModelNode> payloadToModelNodeMap, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { var oldNode = GetNode(updatedNode.Id); itemEvents.Add(new ModelNodeUpdatedEvent(oldNode, updatedNode)); if (oldNode.Payload != null) { payloadToModelNodeMap = payloadToModelNodeMap.Remove(oldNode.Payload); } if (updatedNode.Payload != null) { payloadToModelNodeMap = payloadToModelNodeMap.Add(updatedNode.Payload, updatedNode); } return( modelGraph.UpdateVertex(updatedNode), payloadToModelNodeMap ); }
private static IModelGraph AddRelationshipCore( [NotNull] IModelRelationship relationship, [NotNull] IModelGraph modelGraph, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { itemEvents.Add(new ModelRelationshipAddedEvent(relationship)); return(modelGraph.AddEdge(relationship)); }
private static IModelGraph AddNodeCore( [NotNull] IModelNode newNode, [NotNull] IModelGraph modelGraph, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { itemEvents.Add(new ModelNodeAddedEvent(newNode)); return(modelGraph.AddVertex(newNode)); }
private IModelGraph RemoveRelationshipCore( ModelRelationshipId relationshipId, [NotNull] IModelGraph modelGraph, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { var oldRelationship = GetRelationship(relationshipId); itemEvents.Add(new ModelRelationshipRemovedEvent(oldRelationship)); return(modelGraph.RemoveEdge(relationshipId)); }
private IModelGraph RemoveNodeCore( ModelNodeId nodeId, [NotNull] IModelGraph modelGraph, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { var oldNode = GetNode(nodeId); itemEvents.Add(new ModelNodeRemovedEvent(oldNode)); return(modelGraph.RemoveVertex(nodeId)); }
private IModel CreateInstance( IModelGraph graph, [NotNull] ImmutableDictionary <object, IModelNode> payloadToModelNodeMap, [NotNull] ImmutableDictionary <object, IModelRelationship> payloadToModelRelationshipMap) => new Model( graph, payloadToModelNodeMap, payloadToModelRelationshipMap, _sequenceProvider, _modelRuleProviders, _nodePayloadEqualityComparer, _relationshipPayloadEqualityComparer);
private static (IModelGraph, ImmutableDictionary <object, IModelRelationship> payloadToModelRelationshipMap) AddRelationshipCore( [NotNull] IModelRelationship relationship, [NotNull] IModelGraph modelGraph, [NotNull] ImmutableDictionary <object, IModelRelationship> payloadToModelRelationshipMap, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { itemEvents.Add(new ModelRelationshipAddedEvent(relationship)); return( modelGraph.AddEdge(relationship), relationship.Payload == null ? payloadToModelRelationshipMap : payloadToModelRelationshipMap.Add(relationship.Payload, relationship) ); }
private static (IModelGraph, ImmutableDictionary <object, IModelNode>) AddNodeCore( [NotNull] IModelNode newNode, [NotNull] IModelGraph modelGraph, [NotNull] ImmutableDictionary <object, IModelNode> payloadToModelNodeMap, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { itemEvents.Add(new ModelNodeAddedEvent(newNode)); return( modelGraph.AddVertex(newNode), newNode.Payload == null ? payloadToModelNodeMap : payloadToModelNodeMap.Add(newNode.Payload, newNode) ); }
private (IModelGraph, ImmutableDictionary <object, IModelRelationship>) RemoveRelationshipCore( ModelRelationshipId relationshipId, [NotNull] IModelGraph modelGraph, [NotNull] ImmutableDictionary <object, IModelRelationship> payloadToModelRelationshipMap, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { var oldRelationship = GetRelationship(relationshipId); itemEvents.Add(new ModelRelationshipRemovedEvent(oldRelationship)); return( modelGraph.RemoveEdge(relationshipId), oldRelationship.Payload == null ? payloadToModelRelationshipMap : payloadToModelRelationshipMap.Remove(oldRelationship.Payload) ); }
private (IModelGraph, ImmutableDictionary <object, IModelNode>) RemoveNodeCore( ModelNodeId nodeId, [NotNull] IModelGraph modelGraph, [NotNull] ImmutableDictionary <object, IModelNode> payloadToModelNodeMap, [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents) { var oldNode = GetNode(nodeId); itemEvents.Add(new ModelNodeRemovedEvent(oldNode)); return( modelGraph.RemoveVertex(nodeId), oldNode.Payload == null ? payloadToModelNodeMap : payloadToModelNodeMap.Remove(oldNode.Payload) ); }
private Model( IModelGraph graph, [NotNull] ImmutableDictionary <object, IModelNode> payloadToModelNodeMap, [NotNull] ImmutableDictionary <object, IModelRelationship> payloadToModelRelationshipMap, [NotNull] ISequenceProvider sequenceProvider, [CanBeNull] IEnumerable <IModelRuleProvider> modelRuleProviders, [CanBeNull] IEqualityComparer <object> nodePayloadEqualityComparer, [CanBeNull] IEqualityComparer <object> relationshipPayloadEqualityComparer) { _graph = graph; _payloadToModelNodeMap = payloadToModelNodeMap; _payloadToModelRelationshipMap = payloadToModelRelationshipMap; _sequenceProvider = sequenceProvider; _modelRuleProviders = modelRuleProviders; _nodePayloadEqualityComparer = nodePayloadEqualityComparer; _relationshipPayloadEqualityComparer = relationshipPayloadEqualityComparer; }
private static IModel CreateInstance(IModelGraph graph) => new Model(graph);
private Model(IModelGraph graph) { _graph = graph; }
private Model(IModelGraph graph, [NotNull] params IModelRuleProvider[] modelRuleProviders) { _graph = graph; _modelRuleProviders = modelRuleProviders; }
private IModel CreateInstance(IModelGraph graph) => new Model(graph, _modelRuleProviders);