Esempio n. 1
0
        public static Return Read(XmlNode node)
        {
            var result = new Return();

            if (node.Attributes != null)
                if (node.Attributes["numval"] != null)
                    result.NumVal = Convert.ToInt16(node.Attributes["numval"].Value);

            result.Value = node.InnerText;

            return result;
        }
Esempio n. 2
0
        public Return Process(Instance instance)
        {
            bool conditionsMet = false;

            // Set Result to Default Value (in case nothing changes)
            Return result = Default;

            foreach (Value value in Values)
            {
                conditionsMet = false;

                foreach (var trigger in value.Triggers)
                {
                    var instanceValue = instance.Values.Find(x => FindTrigger(x, trigger));
                    if (instanceValue != null)
                    {
                        conditionsMet = trigger.Process(instanceValue);
                    }

                    // if any triggers are not met then break
                    if (!conditionsMet)
                    {
                        break;
                    }
                }

                if (conditionsMet || value.Triggers.Count == 0)
                {
                    foreach (MultiTrigger multiTrigger in value.MultiTriggers)
                    {
                        foreach (Trigger trigger in multiTrigger.Triggers)
                        {
                            var instanceValue = instance.Values.Find(x => FindTrigger(x, trigger));
                            if (instanceValue != null)
                            {
                                conditionsMet = trigger.Process(instanceValue);
                            }

                            // if any trigger is met then break (only one has to be met)
                            if (conditionsMet)
                            {
                                break;
                            }
                        }

                        // if none of the triggers were met then break (at least one has to be met)
                        if (!conditionsMet)
                        {
                            break;
                        }
                    }
                }

                if (conditionsMet)
                {
                    result = value.Result;

                    // Break from loop since it shouldn't be able to meet any more Value's conditions
                    break;
                }
            }

            // Get CaptureItems
            foreach (var captureItem in CaptureItems)
            {
                captureItem.PreviousValue = captureItem.Value;

                var instanceValue = instance.Values.ToList().Find(x => Tools.GetValue(x, "Id") == Tools.GetValue(captureItem, "Link"));
                if (instanceValue != null)
                {
                    if (instanceValue.Value != captureItem.Value)
                    {
                        captureItem.Value = instanceValue.Value;
                    }

                    captureItem.Sequence = instanceValue.ChangedSequence;
                }
                else
                {
                    captureItem.Value = "";
                }

                result.CaptureItems = CaptureItems.ToList();
            }

            return(result);
        }
Esempio n. 3
0
        private static bool NotEqualTo(Return r1, Return r2)
        {
            if (!object.ReferenceEquals(r1, null) && object.ReferenceEquals(r2, null)) return true;
            if (object.ReferenceEquals(r1, null) && !object.ReferenceEquals(r2, null)) return true;
            if (object.ReferenceEquals(r1, null) && object.ReferenceEquals(r2, null)) return false;

            return r1.Value != r2.Value;
        }
Esempio n. 4
0
        public Return Copy()
        {
            var result = new Return();
            result.NumVal = NumVal;
            result.Value = Value;
            result.TimeStamp = TimeStamp;
            result.ChangedTimeStamp = ChangedTimeStamp;
            result.Sequence = Sequence;
            result.ChangedSequence = ChangedSequence;
            result.Duration = Duration;
            result.CaptureItems.AddRange(CaptureItems);

            return result;
        }
        public static Configuration Read(XmlDocument configXML)
        {
            var result = new Configuration();

            //XmlNodeList nodes = configXML.SelectNodes("//GeneratedData/GeneratedEvents");
            XmlNodeList nodes = configXML.SelectNodes("//GeneratedEvents");

            if (nodes != null)
            {
                if (nodes.Count > 0)
                {
                    XmlNode node = nodes[0];

                    foreach (XmlNode child in node.ChildNodes)
                    {
                        if (child.NodeType == XmlNodeType.Element)
                        {
                            if (child.InnerText != null)
                            {
                                Type         Setting = typeof(Configuration);
                                PropertyInfo info    = Setting.GetProperty(child.Name);

                                if (info != null)
                                {
                                    Type t = info.PropertyType;
                                    info.SetValue(result, Convert.ChangeType(child.InnerText, t), null);
                                }
                                else if (child.Name.ToLower() == "event")
                                {
                                    if (child.NodeType == XmlNodeType.Element && child.Attributes != null)
                                    {
                                        if (child.Attributes["name"] != null)
                                        {
                                            var ev = new Event();
                                            ev.Values = new List <Value>();

                                            ev.Name = child.Attributes["name"].Value.ToString();

                                            foreach (XmlNode Childnode in child.ChildNodes)
                                            {
                                                if (Childnode.NodeType == XmlNodeType.Element)
                                                {
                                                    switch (Childnode.Name.ToLower())
                                                    {
                                                    case "value":

                                                        var value = Value.Read(Childnode);
                                                        ev.Values.Add(value);

                                                        break;

                                                    case "default":

                                                        var d = Return.Read(Childnode);
                                                        d.Id       = "DEFAULT_ID";
                                                        ev.Default = d;

                                                        break;

                                                    case "capture":

                                                        foreach (XmlNode itemNode in Childnode.ChildNodes)
                                                        {
                                                            if (itemNode.NodeType == XmlNodeType.Element)
                                                            {
                                                                var item = CaptureItem.Read(itemNode);
                                                                if (item != null)
                                                                {
                                                                    ev.CaptureItems.Add(item);
                                                                }
                                                            }
                                                        }

                                                        break;
                                                    }
                                                }
                                            }

                                            ev.PreviousValue = ev.Default;

                                            result.Events.Add(ev);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(result);
        }
Esempio n. 6
0
        public static Value Read(XmlNode node)
        {
            var result = new Value();
            result.Triggers = new List<Trigger>();
            result.MultiTriggers = new List<MultiTrigger>();

            foreach (XmlNode childNode in node.ChildNodes)
            {
                if (childNode.NodeType == XmlNodeType.Element)
                {
                    switch (childNode.Name.ToLower())
                    {
                        case "triggers":

                            foreach (XmlNode triggerNode in childNode)
                            {
                                if (triggerNode.NodeType == XmlNodeType.Element)
                                {

                                    switch (triggerNode.Name.ToLower())
                                    {

                                        case "trigger":

                                            var trigger = Trigger.Read(triggerNode);
                                            if (trigger != null) result.Triggers.Add(trigger);

                                            break;

                                        case "multitrigger":

                                            var multiTrigger = MultiTrigger.Read(triggerNode);
                                            if (multiTrigger != null) result.MultiTriggers.Add(multiTrigger);

                                            break;
                                    }
                                }
                            }

                            break;

                        case "result":

                            var returnResult = new Return();
                            returnResult.Id = "DEFAULT_ID";

                            if (childNode.Attributes != null)
                                if (childNode.Attributes["numval"] != null)
                                    returnResult.NumVal = Convert.ToInt16(childNode.Attributes["numval"].Value);

                            returnResult.Value = childNode.InnerText;

                            result.Result = returnResult;

                            break;
                    }
                }
            }

            return result;
        }
            internal ValueData(Return eventReturn)
            {
                Id = Guid.NewGuid().ToString();

                Value = eventReturn.Value;
                Timestamp = eventReturn.TimeStamp;
                Sequence = eventReturn.Sequence;
                ChangedTimestamp = eventReturn.ChangedTimeStamp;
                ChangedSequence = eventReturn.ChangedSequence;
                Numval = eventReturn.NumVal;
            }