Beispiel #1
0
        private void ResolveReferences(GraphElement element)
        {
            foreach (var entry in element.InRefernceIdentifiers)
            {
                // Type is the _Ref xml element minus the _Ref. (e.g. <Mother_Ref> => Mother)
                //
                var referenceType = entry.Key.Substring(0, entry.Key.Length - (StrLits.Ref.Length + 1));

                foreach (var referenceId in entry.Value)
                {
                    GraphElement referencedElement = null;
                    if (_elementsByIdCollection.TryGetValue(referenceId, out referencedElement))
                    {
                        referencedElement.AddOutReference(referenceType, element);
                        element.AddInReference(referenceType, referencedElement);
                    }
                }
            }

            foreach (var entry in element.OutRefernceIdentifiers)
            {
                // Type is the _Ref xml element minus the _Ref. (e.g. <Mother_Ref> => Mother)
                var referenceType = entry.Key.Substring(0, entry.Key.Length - (StrLits.Ref.Length + 1));

                foreach (var referenceId in entry.Value)
                {
                    GraphElement referencedElement = null;
                    if (_elementsByIdCollection.TryGetValue(referenceId, out referencedElement))
                    {
                        referencedElement.AddInReference(referenceType, element);
                        element.AddOutReference(referenceType, referencedElement);
                    }
                }
            }
        }
Beispiel #2
0
        public void RemoveOutReference(string referenceType, GraphElement element)
        {
            List <GraphElement> list;

            if (!_outgoingElements.TryGetValue(referenceType, out list))
            {
                return;
            }

            list.Remove(element);
        }
Beispiel #3
0
        public void AddOutReference(string referenceType, GraphElement element)
        {
            List <GraphElement> list;

            if (!_outgoingElements.TryGetValue(referenceType, out list))
            {
                list = new List <GraphElement>();
                _outgoingElements.GetOrAdd(referenceType, list);
            }

            list.Add(element);
        }
Beispiel #4
0
        private void ResolveChildren(GraphElement element)
        {
            if (!String.IsNullOrWhiteSpace(element.ParentId))
            {
                GraphElement parent = null;
                if (_elementsByIdCollection.TryGetValue(element.ParentId, out parent))
                {
                    element.Parent = parent;
                }
            }

            foreach (var childId in element.ChildrenIdenifiers)
            {
                GraphElement child = null;
                if (_elementsByIdCollection.TryGetValue(element.ParentId, out child))
                {
                    element.Children.GetOrAdd(childId, child);
                }
            }
        }
Beispiel #5
0
 private void Resolve(GraphElement element)
 {
     ResolveChildren(element);
     ResolveReferences(element);
 }