Exemplo n.º 1
0
            private Either <GraphAndUI <TUIRawData>, LoadError> ReadEditable(XElement node, IDataSource datasource, object documentID)
            {
                Id <NodeTemp> id = Id <NodeTemp> .Parse(node.Attribute("Id").Value);

                Id <NodeTypeTemp> guid = ReadType(node);

                INodeDataGenerator editableGenerator = datasource.GetNode(guid);

                Either <GraphAndUI <TUIRawData>, LoadError> result;

                var parameterNodes = node.Elements("Parameter");
                var parameterData  = parameterNodes.Select(p => new NodeDataGeneratorParameterData(Id <Parameter> .Parse(p.Attribute("guid").Value), p.Attribute("value").Value)).ToList();

                if (editableGenerator != null)
                {
                    IConversationNodeData editable = editableGenerator.Generate(id, parameterData, documentID);
                    result = new GraphAndUI <TUIRawData>(editable, m_nodeUIDeserializer.Read(node));
                }
                else
                {
                    var             parameters = parameterData.Select(p => new UnknownParameter(p.Guid, p.Value));
                    UnknownEditable editable   = new UnknownEditable(id, guid, parameters);
                    result = new GraphAndUI <TUIRawData>(editable, m_nodeUIDeserializer.Read(node));
                }

                return(result);
            }
Exemplo n.º 2
0
            //private void WriteOutputs(IEditable ng, XElement node)
            //{
            //    foreach (var n in ng.Outputs())
            //    {
            //        var guid = new XAttribute("guid", n.ID.Serialized());
            //        var outputNode = new XElement("Output", guid);
            //        foreach (var link in n.Connections)
            //        {
            //            var to = new XAttribute("To", link.Parent.NodeID.Serialized());
            //            var linkNode = new XElement("Link", to);
            //            outputNode.Add(linkNode);
            //        }
            //        node.Add(outputNode);
            //    }
            //}

            //private void WriteConnectors(IEditable a, XElement node)
            //{
            //    foreach (var n in a.Connectors)
            //    {
            //        var guid = new XAttribute("guid", n.ID.Serialized());
            //        var outputNode = new XElement("Connector", guid);
            //        node.Add(outputNode);
            //    }
            //}

            private void Write(GraphAndUI <TUIRawData> con, XElement root)
            {
                var id   = new XAttribute("Id", con.GraphData.NodeId.Serialized());
                var guid = new XAttribute("Guid", con.GraphData.NodeTypeId.Serialized());
                var node = new XElement("Node", id, guid);

                m_nodeUISerializer.Write(con.UIData, node);
                //WriteOutputs(con.GraphData, node);
                //WriteConnectors(con.GraphData, node);
                foreach (var parameter in con.GraphData.Parameters)
                {
                    var value = parameter.ValueAsString();
                    if (value != null)
                    {
                        var p = new XElement("Parameter", new XAttribute("guid", parameter.Id.Serialized()), new XAttribute("value", value));
                        node.Add(p);
                    }
                }
                root.Add(node);
            }