Ejemplo n.º 1
0
        /// <summary>
        /// Parsing an edge.
        /// </summary>
        /// <param name="myEdge">The current XML node.</param>
        /// <returns>An tuple with the edge name and the edge view.</returns>
        private Tuple <String, IEdgeView> ParseEdge(XmlNode myEdge)
        {
            IEdgeView  edgeView     = null;
            var        edgeProps    = new Dictionary <String, Object>();
            var        singleEdges  = new List <ISingleEdgeView>();
            var        edge         = myEdge.FirstChild;
            var        name         = String.Empty;
            VertexView targetVertex = null;
            Boolean    isHyperEdge  = false;

            isHyperEdge = myEdge.Attributes["xsi:type"].Value == "HyperEdgeView";


            if (edge.HasChildNodes)
            {
                while (edge != null)
                {
                    if (edge.HasChildNodes)
                    {
                        switch (edge.Name)
                        {
                        case "Name":
                            name = edge.InnerText;
                            break;

                        case "Properties":
                            ParseEdgeProperties(edge.FirstChild, ref edgeProps);
                            break;

                        case "SingleEdge":
                            singleEdges.Add(ParseSingleEdge(edge));
                            break;

                        case "TargetVertex":
                            targetVertex = ParseVertex(edge);
                            break;
                        }
                    }

                    edge = edge.NextSibling;
                }
            }

            if (isHyperEdge)
            {
                edgeView = new sones.GraphQL.Result.HyperEdgeView(edgeProps, singleEdges);
            }
            else
            {
                edgeView = new sones.GraphQL.Result.SingleEdgeView(edgeProps, targetVertex);
            }

            return(new Tuple <string, IEdgeView>(name, edgeView));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Parsing an edge.
        /// </summary>
        /// <param name="myEdge">The current XML node.</param>
        /// <returns>An tuple with the edge name and the edge view.</returns>
        private Tuple<String, IEdgeView> ParseEdge(XmlNode myEdge)
        {                      
            IEdgeView edgeView = null;
            var edgeProps = new Dictionary<String, Object>();
            var singleEdges = new List<ISingleEdgeView>();
            var edge = myEdge.FirstChild;
            var name = String.Empty;
            VertexView targetVertex = null; 
            Boolean isHyperEdge = false;

            isHyperEdge = myEdge.Attributes["xsi:type"].Value == "HyperEdgeView";
            

            if (edge.HasChildNodes)
            {
                while (edge != null)
                {
                    if (edge.HasChildNodes)
                    {                        
                        switch (edge.Name)
                        { 
                            case "Name" :
                                name = edge.InnerText;
                                break;
                            
                            case "Properties":
                                ParseEdgeProperties(edge.FirstChild, ref edgeProps);
                                break;

                            case "SingleEdge" :
                                singleEdges.Add(ParseSingleEdge(edge));
                                break;

                            case "TargetVertex":
                                targetVertex = ParseVertex(edge);
                                break;
                        }
                        
                    }

                    edge = edge.NextSibling;
                }
            }

            if (isHyperEdge)
            {
                edgeView = new sones.GraphQL.Result.HyperEdgeView(edgeProps, singleEdges);
            }
            else
            {
                edgeView = new sones.GraphQL.Result.SingleEdgeView(edgeProps, targetVertex);
            }

            return new Tuple<string, IEdgeView>(name, edgeView);
        }