Ejemplo n.º 1
0
        /// <summary>
        /// The get expand node quote.
        /// </summary>
        /// <param name="e">
        /// The e.
        /// </param>
        /// <returns>
        /// The <see cref="IConfigNodeWrapper"/>.
        /// </returns>
        public IConfigNodeWrapper GetExpandNodeQuote(IEvent e)
        {
            try
            {
                var nodeWrapper = this.Parse(e);
                if (nodeWrapper == null)
                {
                    return(null);
                }

                foreach (IConfigNodeWrapper expandDataNode in nodeWrapper.Children)
                {
                    var  eventTreeNode = new EventTreeBodyNode();
                    Type eventTreeType = eventTreeNode.GetType();
                    Type nodetype      = expandDataNode.GetType();
                    if (eventTreeType == nodetype)
                    {
                        return(expandDataNode);
                    }
                }

                return(null);
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("GetExpandNodeQuoteException event id = {0},error message = {1}", e.EventIdentifier, ex.Message));
                return(null);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// The parse.
        /// </summary>
        /// <param name="e">
        /// The e.
        /// </param>
        /// <returns>
        /// The <see cref="IConfigNodeWrapper"/>.
        /// </returns>
        public IConfigNodeWrapper Parse(IEvent e)
        {
            try
            {
                if (e.RawData == null)
                {
                    return(null);
                }
                var stream = new MemoryStream(e.RawData);

                //IEventConfiguration eventConfiguration = new ConfigurationManager().GetEventConfiguration(e.Version);
                IEventConfiguration eventConfiguration  = ConfigurationManager.Singleton.GetEventConfiguration(e.Version);
                IConfigNode         eventConfigHeadNode = eventConfiguration.EventHeadNode;

                if (eventConfigHeadNode == null)
                {
                    return(null);
                }

                var rootNode = new EventTreeRootNode {
                    ConfigurationNode = eventConfigHeadNode, EventIndex = e.DisplayIndex
                };

                foreach (var child in eventConfigHeadNode.Children)
                {
                    rootNode.Children.Add(new ConfigNodeWrapper {
                        ConfigurationNode = child, Parent = rootNode
                    });
                }

                rootNode.InitializeValue(stream, e.Version);

                int eventId;
                if (Int32.TryParse(rootNode.GetChildNodeById("EventType").Value.ToString(), out eventId) == true)
                {
                    IConfigNode eventConfigBodyNode = eventConfiguration.GetEventBodyNodeById(
                        Convert.ToInt32(eventId));

                    if (eventConfigBodyNode != null)
                    {
                        // wrong "EventType" cause null
                        var eventTreeBodyNode = new EventTreeBodyNode {
                            ConfigurationNode = eventConfigBodyNode, Parent = rootNode
                        };
                        this.GenerateEventTreeChildrenNode(eventTreeBodyNode);
                        rootNode.Children.Add(eventTreeBodyNode);
                        eventTreeBodyNode.InitializeValue(stream, e.Version);
                    }

                    return(rootNode);
                }
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("二次解析出错,event id = {0},error message = {1}", e.EventIdentifier, ex.Message));
                return(null);
            }
            return(null);
        }