예제 #1
0
 public void DesignRoot(NodeDataArray root)
 {
     //if (root.isWhile)
     //{
     //    XmlWhileGenerator(root, null);
     //}
     if (root.IsSwitch)
     {
         XmlSwitchGenerator(root, null);
     }
     else if (root.IsIf)
     {
         XmlIfGenerator(root, null);
     }
     else
     {
         XmlTaskGenerator(root, null);
     }
 }
예제 #2
0
        public void XmlSwitchGenerator(NodeDataArray node = null, NodeDataArray parent = null)
        {
            if (parent == null)
            {
                parent = new NodeDataArray();
            }
            if (parent.IsIf)
            {
                if (parent.DoNodeId == node.Key)
                {
                    var xRoot = new XElement(xn + "Switch",
                                             new XAttribute("id", switchId++),
                                             new XAttribute("parent", "-1"),
                                             new XAttribute("switch", node.TaskId),
                                             new XAttribute("index", node.Key));
                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .Element(xn + "Do")
                    .Add(xRoot);
                }
                else if (parent.ElseNodeId == node.Key)
                {
                    var xRoot = new XElement(xn + "Switch",
                                             new XAttribute("id", switchId++),
                                             new XAttribute("parent", "-1"),
                                             new XAttribute("switch", node.TaskId),
                                             new XAttribute("index", node.Key));
                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .Element(xn + "Else")
                    .Add(xRoot);
                }
                else
                {
                    var xRoot = new XElement(xn + "Switch",
                                             new XAttribute("id", switchId++),
                                             new XAttribute("parent", ifId - 1),
                                             new XAttribute("switch", node.TaskId),
                                             new XAttribute("index", node.Key));
                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .AddAfterSelf(xRoot);
                }
            }
            //else if (parent.isWhile && node.isInWhile)
            //{
            //    var xRoot = new XElement(xn + "Switch",
            //        new XAttribute("id", switchId++),
            //        new XAttribute("parent", "-1"),
            //        new XAttribute("switch", node.taskId),
            //        new XAttribute("index", node.key));

            //    xGraph.Descendants()
            //     .Where(x => (string)x.Attribute("index") == parent.key.ToString())
            //     .FirstOrDefault()
            //     .Add(xRoot);
            //}
            //else if (parent.isWhile && !node.isInWhile)
            //{
            //    var xRoot = new XElement(xn + "Switch",
            //        new XAttribute("id", switchId++),
            //        new XAttribute("parent", whileId - 1),
            //        new XAttribute("switch", node.taskId),
            //        new XAttribute("index", node.key));

            //    xGraph.Descendants()
            //     .Where(x => (string)x.Attribute("index") == parent.key.ToString())
            //     .FirstOrDefault()
            //     .Add(xRoot);
            //}
            else
            {
                if (parent.Key != 0)
                {
                    var xRoot = new XElement(xn + "Switch",
                                             new XAttribute("id", switchId++),
                                             new XAttribute("parent", parent.TaskId.ToString()),
                                             new XAttribute("switch", node.TaskId),
                                             new XAttribute("index", node.Key));
                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .AddAfterSelf(xRoot);
                }
                else
                {
                    var xRoot = new XElement(xn + "Switch",
                                             new XAttribute("id", switchId++),
                                             new XAttribute("parent", "-1"),
                                             new XAttribute("switch", node.TaskId),
                                             new XAttribute("index", node.Key));
                    xGraph.Add(xRoot);
                }
            }
        }
예제 #3
0
        //public void XmlWhileGenerator(NodeDataArray node = null, NodeDataArray parent = null)
        //{
        //    if (parent == null) parent = new NodeDataArray();
        //    if (parent.isIf)
        //    {
        //        if (parent.doNodeId == node.key)
        //        {
        //            var xRoot = new XElement(xn + "While",
        //                new XAttribute("id", whileId++),
        //                new XAttribute("parent", "-1"),
        //                new XAttribute("while", node.taskId),
        //                new XAttribute("index", node.key));
        //            xGraph.Descendants()
        //                 .Where(x => (string)x.Attribute("index") == parent.key.ToString())
        //                 .FirstOrDefault()
        //                 .Element(xn + "Do")
        //                 .Add(xRoot);
        //        }
        //        if (parent.elseNodeId == node.key)
        //        {
        //            var xRoot = new XElement(xn + "While",
        //                new XAttribute("id", whileId++),
        //                new XAttribute("parent", "-1"),
        //                new XAttribute("while", node.taskId),
        //                new XAttribute("index", node.key));
        //            xGraph.Descendants()
        //                 .Where(x => (string)x.Attribute("index") == parent.key.ToString())
        //                 .FirstOrDefault()
        //                 .Element(xn + "Else")
        //                 .Add(xRoot);
        //        }
        //    }
        //    else if (parent.isWhile)
        //    {

        //    }
        //    else
        //    {
        //        if (parent.key != 0)
        //        {
        //            var xRoot = new XElement(xn + "While",
        //                new XAttribute("id", whileId++),
        //                new XAttribute("parent", parent.key == 0 ? "-1" : parent.taskId.ToString()),
        //                new XAttribute("while", node.taskId),
        //                new XAttribute("index", node.key));
        //            xGraph.Descendants()
        //             .Where(x => (string)x.Attribute("index") == parent.key.ToString())
        //             .FirstOrDefault()
        //             .AddAfterSelf(xRoot);
        //        }
        //        else
        //        {
        //            var xRoot = new XElement(xn + "While",
        //                new XAttribute("id", whileId++),
        //                new XAttribute("parent", parent.key == 0 ? "-1" : parent.taskId.ToString()),
        //                new XAttribute("while", node.taskId),
        //                new XAttribute("index", node.key));
        //            xGraph.Add(xRoot);
        //        }
        //    }
        //}
        public void XmlTaskGenerator(NodeDataArray node = null, NodeDataArray parent = null)
        {
            if (parent == null)
            {
                parent = new NodeDataArray();
            }
            if (parent.IsIf)
            {
                if (parent.DoNodeId == node.Key)
                {
                    var xRoot = new XElement(xn + "Task",
                                             new XAttribute("id", node.TaskId),
                                             new XAttribute("index", node.Key));
                    var xParent = new XElement(xn + "Parent",
                                               new XAttribute("id", "-1"));
                    xRoot.Add(xParent);

                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .Element(xn + "Do")
                    .Add(xRoot);
                }
                else if (parent.ElseNodeId == node.Key)
                {
                    var xRoot = new XElement(xn + "Task",
                                             new XAttribute("id", node.TaskId),
                                             new XAttribute("index", node.Key));
                    var xParent = new XElement(xn + "Parent",
                                               new XAttribute("id", "-1"));
                    xRoot.Add(xParent);

                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .Element(xn + "Else")
                    .Add(xRoot);
                }
                else
                {
                    var xRoot = new XElement(xn + "Task",
                                             new XAttribute("id", node.TaskId),
                                             new XAttribute("index", node.Key));
                    var xParent = new XElement(xn + "Parent",
                                               new XAttribute("id", ifId - 1));
                    xRoot.Add(xParent);

                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .AddAfterSelf(xRoot);
                }
            }
            else if (parent.IsSwitch && node.IsInSwitch)
            {
                if (node.IsDefault == true)
                {
                    var xDefault = new XElement(xn + "Default");
                    var xRoot    = new XElement(xn + "Task",
                                                new XAttribute("id", node.TaskId),
                                                new XAttribute("index", node.Key));
                    var xParent = new XElement(xn + "Parent",
                                               new XAttribute("id", "-1"));
                    xRoot.Add(xParent);
                    xDefault.Add(xRoot);
                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .Add(xDefault);
                }
                else
                {
                    var xCase = new XElement(xn + "Case",
                                             new XAttribute("value", node.CaseValue));
                    var xRoot = new XElement(xn + "Task",
                                             new XAttribute("id", node.TaskId),
                                             new XAttribute("index", node.Key));
                    var xParent = new XElement(xn + "Parent",
                                               new XAttribute("id", "-1"));
                    xRoot.Add(xParent);
                    xCase.Add(xRoot);
                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .AddFirst(xCase);
                }
            }
            else if (parent.IsSwitch && !node.IsInSwitch)
            {
                var xRoot = new XElement(xn + "Task",
                                         new XAttribute("id", node.TaskId),
                                         new XAttribute("index", node.Key));
                var xParent = new XElement(xn + "Parent",
                                           new XAttribute("id", switchId - 1));
                xRoot.Add(xParent);
                xGraph.Descendants()
                .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                .FirstOrDefault()
                .AddAfterSelf(xRoot);
            }
            //else if (parent.isWhile && !node.isInWhile)
            //{
            //    var xRoot = new XElement(xn + "Task",
            //        new XAttribute("id", node.taskId),
            //        new XAttribute("index", node.key));
            //    var xParent = new XElement(xn + "Parent",

            //        new XAttribute("id", whileId - 1));
            //            xRoot.Add(xParent);
            //            xGraph.Descendants()
            //             .Where(x => (string)x.Attribute("index") == parent.key.ToString())
            //             .FirstOrDefault()
            //             .AddAfterSelf(xRoot);
            //}
            //else if (parent.isWhile && node.isInWhile)
            //{
            //    var xRoot = new XElement(xn + "Task",
            //        new XAttribute("id", node.taskId),
            //        new XAttribute("index", node.key));
            //    var xParent = new XElement(xn + "Parent", new XAttribute("id", "-1"));
            //    xRoot.Add(xParent);
            //    xGraph.Descendants()
            //     .Where(x => (string)x.Attribute("index") == parent.key.ToString())
            //     .FirstOrDefault()
            //     .Add(xRoot);
            //}
            else
            {
                if (parent.Key != 0)
                {
                    var xRoot = new XElement(xn + "Task",
                                             new XAttribute("id", node.TaskId),
                                             new XAttribute("index", node.Key));
                    var xParent = new XElement(xn + "Parent",
                                               new XAttribute("id", parent.Key == 0 ? "-1" : parent.TaskId.ToString()));
                    xRoot.Add(xParent);

                    xGraph.Descendants()
                    .Where(x => (string)x.Attribute("index") == parent.Key.ToString())
                    .FirstOrDefault()
                    .AddAfterSelf(xRoot);
                }
                else
                {
                    var xRoot = new XElement(xn + "Task",
                                             new XAttribute("id", node.TaskId),
                                             new XAttribute("index", node.Key));
                    var xParent = new XElement(xn + "Parent",
                                               new XAttribute("id", parent.Key == 0 ? "-1" : parent.TaskId.ToString()));
                    xRoot.Add(xParent);
                    xGraph.Add(xRoot);
                }
            }
        }