Example #1
0
        public CompositeNode(string name, AssemblyName assemblyName, CompositeNode parent, ModelItem oldItem)
            : this()
        {
            Contract.Requires(name != null);
            Contract.Requires(assemblyName != null);

            Name = name;
            AssemblyName = assemblyName;
            Parent = parent;
            OldItem = oldItem;
            CreateKey();
        }
Example #2
0
 private void UpdateTopModel(CompositeNode node)
 {
     if (node.Parent == null)
     {
         node.NewItem = CompositeService.UpdateModelItem(node.OldItem, node.Activity);
     }
     else
     {
         UpdateParentModel(node.Parent, node);
     }
 }
Example #3
0
 private void UpdateParentModel(CompositeNode parent, CompositeNode child)
 {
     var items = CompositeService.GetSubModelItems(parent.OldItem);
     ModelItem childModel = items.FirstOrDefault(m => child.AssemblyName.Equal(m));
     if (childModel != null)
     {
         CompositeService.UpdateModelItem(childModel, child.Activity);
     }
 }
Example #4
0
        private void UpdateActivity(CompositeNode node)
        {
            if (node.NewItem == null)
            {
                node.NewItem = CompositeService.CreateModelItem(node.Activity);
            }

            var items = CompositeService.GetSubModelItems(node.NewItem);
            foreach (var child in node.Children)
            {
                ModelItem childModel = items.FirstOrDefault(m => child.AssemblyName.Equal(m));
                if (childModel != null)
                {
                    CompositeService.UpdateModelItem(childModel, child.Activity);
                }
            }
            if (node.NewItem != null)
            {
                node.Activity = node.NewItem.GetActivity();
            }

            foreach (var item in items)
            {
                NodeKeyManager.ApplyModelKey(item, node.Key);
            }
        }
Example #5
0
 private void RefreshKey(ModelItem model, CompositeNode parentNode)
 {
     if (NodeKeyManager.CheckIsModel(model) && parentNode != null)
     {
         NodeKeyManager.RefreshModelKey(model, parentNode.Key);
     }
     else if (NodeKeyManager.CheckIsNode(model))
     {
         NodeKey nodeKey = NodeKeyManager.GetNodeKey(model);
         if (!nodeKey.IsSuccessfullyApplied)
         {
             NodeKeyManager.ApplyNodeSuccessfully(model);
         }
         else if (parentNode != null && nodeKey.Name == parentNode.AssemblyName.FullName)
         {
             NodeKeyManager.RefreshModelKey(model, parentNode.Key);
         }
     }
 }
Example #6
0
 private void RecursiveUpdateActivities(CompositeNode node)
 {
     if (!node.Children.Any())
     {
         node.NewItem = CompositeService.CreateModelItem(node.Activity);
         NodeKeyManager.ApplyKey(node.NewItem, node.Key);
     }
     else
     {
         foreach (var child in node.Children)
         {
             RecursiveUpdateActivities(child);
         }
         UpdateActivity(node);
         NodeKeyManager.ApplyNodeKey(node.NewItem, node.Key);
     }
 }
Example #7
0
        private CompositeNode CreateNewNode(CompositeNode parent, ModelItem item, Activity root)
        {
            CompositeNode node = null;
            AssemblyName assembly = null;
            if (item != null)
            {
                assembly = item.GetAssemblyName();

                root = CompositeService.GetRootActivity(item.GetActivity());
                if (root == null)
                {
                    return null;
                }
            }
            else
            {
                assembly = root.GetAssemblyName();
            }
            if (!AssemblyService.AssemblyIsBuiltIn(assembly))
            {
                node = new CompositeNode(GetDisplayName(item, assembly), assembly, parent, item);
                node.Activity = root;

                var subs = WorkflowInspectionServices.GetActivities(node.Activity);
                foreach (var sub in subs)
                {
                    var child = CreateNewNode(node, null, sub);
                    child.IfNotNull(c => node.Children.Add(c));
                }
            }
            return node;
        }
Example #8
0
 private bool CheckAddModelIsReferenceSelfCore(ModelItem addedModel, CompositeNode parent)
 {
     if (parent == null)
     {
         return false;
     }
     else
     {
         List<CompositeNode> checkParentList = new List<CompositeNode>();
         CompositeNode checkParent = parent;
         while (checkParent != null)
         {
             checkParentList.Add(checkParent);
             checkParent = checkParent.Parent;
         }
         return CheckNodeListHasEqualModel(checkParentList, addedModel);
     }
 }
Example #9
0
 private bool CheckAddModelIsReferenceSelf(ModelItem addedModel, CompositeNode parent)
 {
     if (CheckAddModelIsReferenceSelfCore(addedModel, parent))
     {
         string message = string.Format(MSG_UpdateReferenceInSelf, parent.AssemblyName.Name);
         AddInMessageBoxService.Show(message,
                                 Title_UpdateOtherActivities,
                                 MessageBoxButton.OK,
                                 MessageBoxImage.Warning);
         return true;
     }
     return false;
 }
Example #10
0
        private CompositeNode AddNewNode(CompositeNode parent, ModelItem modelItem)
        {
            CompositeNode addNode = CreateNewNode(parent, modelItem, null);

            if (addNode != null)
            {
                RecursiveUpdateActivities(addNode);
                UpdateTopModel(addNode);
            }
            ArgumentService.CreateArguments(modelItem);
            return addNode;
        }
Example #11
0
        /// <summary>
        /// Create node key by assembly
        /// </summary>
        public static NodeKey CreateKey(AssemblyName assemblyName, CompositeNode parent)
        {
            Contract.Requires(assemblyName != null);

            return new NodeKey()
            {
                Key = Guid.NewGuid(),
                Name = assemblyName.FullName,
                Parent = parent != null ? parent.Key.Key : Guid.Empty,
                IsSuccessfullyApplied = false,
            };
        }