Пример #1
0
                public static Node LoadFromXML(Node parent, XmlElement root)
                {
                    Node node = new Node(parent);

                    if (parent != null)
                    {
                        node.name = root.GetAttribute("name");
                    }
                    else
                    {
                        DebugUtility.TryGetMandatoryXmlAttribute(root, "name", out node.name);
                    }

                    using (ScopeDebugContext.Func(() => { return("Node '" + node.name + "'"); }))
                    {
                        foreach (XmlNode xNode in root.ChildNodes)
                        {
                            if (xNode.NodeType == XmlNodeType.Element)
                            {
                                XmlElement e = (XmlElement)xNode;
                                switch (e.Name)
                                {
                                case "Column":
                                    var c = ViewColumn.Builder.LoadFromXML(e);
                                    if (c != null)
                                    {
                                        node.column.Add(c);
                                    }
                                    break;

                                case "Data":
                                    node.data = Data.LoadFromXML(node, e);
                                    break;

                                case "Filter":
                                    LoadFilterFromXML(node, e);
                                    break;

                                case "SelectSet":
                                    node.localSelectSet = SelectSet.Builder.LoadFromXML(e);
                                    break;

                                case "Condition":
                                    node.condition = Operation.MetaExpComparison.LoadFromXML(e);
                                    break;

                                default:
                                    DebugUtility.LogInvalidXmlChild(root, e);
                                    break;
                                }
                            }
                        }
                        return(node);
                    }
                }
Пример #2
0
                public static Operation.Filter.Sort LoadSortFilterFromXML(Node node, XmlElement root)
                {
                    Database.Operation.Filter.Sort f = new Operation.Filter.Sort();
                    // if the element has children, do not process it as a sort level.
                    if (root.ChildNodes.Count == 0)
                    {
                        string colName;
                        string strOrder;
                        if (DebugUtility.TryGetMandatoryXmlAttribute(root, "column", out colName) &&
                            DebugUtility.TryGetMandatoryXmlAttribute(root, "order", out strOrder))
                        {
                            SortOrder order = SortOrderString.StringToSortOrder(strOrder, SortOrder.Ascending);
                            f.SortLevel.Add(new Operation.Filter.Sort.LevelByName(colName, order));
                        }
                    }

                    //Process children as sort level
                    foreach (XmlNode xNode in root.ChildNodes)
                    {
                        if (xNode.NodeType == XmlNodeType.Element)
                        {
                            XmlElement e = (XmlElement)xNode;
                            if (e.Name == "Level")
                            {
                                string colNameL;
                                string strOrderL;
                                if (DebugUtility.TryGetMandatoryXmlAttribute(e, "column", out colNameL) &&
                                    DebugUtility.TryGetMandatoryXmlAttribute(e, "order", out strOrderL))
                                {
                                    var orderL = SortOrderString.StringToSortOrder(strOrderL, SortOrder.Ascending);
                                    f.SortLevel.Add(new Operation.Filter.Sort.LevelByName(colNameL, orderL));
                                }
                            }
                            else
                            {
                                DebugUtility.LogInvalidXmlChild(root, e);
                            }
                        }
                    }
                    if (f.SortLevel.Count == 0)
                    {
                        return(null);
                    }
                    return(f);
                }
Пример #3
0
            public static Builder LoadFromXML(XmlElement root)
            {
                Builder b = new Builder();

                b.name            = root.GetAttribute("name");
                b.sourceTableName = root.GetAttribute("table");
                string strMaxRow = root.GetAttribute("maxRow");

                if (string.IsNullOrEmpty(strMaxRow) || !int.TryParse(strMaxRow, out b.MaxRow))
                {
                    b.MaxRow = -1;
                }
                using (ScopeDebugContext.Func(() => { return("Select:'" + b.name + "'"); }))
                {
                    foreach (XmlNode node in root.ChildNodes)
                    {
                        if (node.NodeType == XmlNodeType.Element)
                        {
                            XmlElement e = (XmlElement)node;
                            switch (e.Name)
                            {
                            case "Where":
                            {
                                var w = Where.Builder.LoadFromXML(e);
                                if (w != null)
                                {
                                    b.where.Add(w);
                                }
                                break;
                            }

                            default:
                                DebugUtility.LogInvalidXmlChild(root, e);
                                break;
                            }
                        }
                    }
                    return(b);
                }
            }
Пример #4
0
            public static Builder LoadFromXML(XmlElement root)
            {
                using (ScopeDebugContext.Func(() => { return("Loading SelectSet"); }))
                {
                    Builder b = new Builder();
                    foreach (XmlNode xNode in root.ChildNodes)
                    {
                        if (xNode.NodeType == XmlNodeType.Element)
                        {
                            XmlElement e = (XmlElement)xNode;
                            switch (e.Name)
                            {
                            case "Select":
                            {
                                var s = Select.Builder.LoadFromXML(e);
                                if (s != null)
                                {
                                    b.select.Add(s);
                                }
                                break;
                            }

                            case "Condition":
                            {
                                b.Condition = Operation.MetaExpComparison.LoadFromXML(e);
                                break;
                            }

                            default:
                                DebugUtility.LogInvalidXmlChild(root, e);
                                break;
                            }
                        }
                    }
                    return(b);
                }
            }
Пример #5
0
                public static Operation.Filter.Filter LoadSubFilterFromXML(Node node, XmlElement root)
                {
                    Operation.Filter.Multi  multi      = null;
                    Operation.Filter.Filter lastFilter = null;
                    Operation.Filter.Sort   sortFilter = null;
                    foreach (XmlNode xNode in root.ChildNodes)
                    {
                        if (xNode.NodeType == XmlNodeType.Element)
                        {
                            XmlElement e = (XmlElement)xNode;
                            Operation.Filter.Filter filter = null;
                            if (e.Name == "Group")
                            {
                                filter = LoadGroupFilterFromXML(node, e);
                            }
                            else if (e.Name == "Sort")
                            {
                                sortFilter = LoadSortFilterFromXML(node, e);
                                if (node.defaultAllLevelSortFilter != null)
                                {
                                    Operation.Filter.DefaultSort ds = new Operation.Filter.DefaultSort(node.defaultAllLevelSortFilter, sortFilter);
                                    filter = ds;
                                }
                                else
                                {
                                    filter = sortFilter;
                                }
                            }
                            else if (e.Name == "DefaultSort")
                            {
                                //skip this element as it is processed by LoadFilterFromXML
                            }
                            else
                            {
                                DebugUtility.LogInvalidXmlChild(root, e);
                            }

                            if (lastFilter != null)
                            {
                                if (multi == null)
                                {
                                    multi = new Operation.Filter.Multi();
                                }
                                multi.filters.Add(lastFilter);
                            }
                            lastFilter = filter;
                        }
                    }

                    //add all level sort filter if we haven't already
                    if (sortFilter == null && node.defaultAllLevelSortFilter != null)
                    {
                        Operation.Filter.DefaultSort ds = new Operation.Filter.DefaultSort(node.defaultAllLevelSortFilter, null);

                        //must use the multi filter if we have a lastFilter or already have a multi filter.
                        //we could have a multi filter and still have lastFilter == null if the lastfilter creation failed.
                        if (lastFilter != null || multi != null)
                        {
                            if (multi == null)
                            {
                                multi = new Operation.Filter.Multi();
                            }
                            if (lastFilter != null)
                            {
                                multi.filters.Add(lastFilter);
                            }
                            multi.filters.Add(ds);
                            if (multi.filters.Count > 1)
                            {
                                return(multi);
                            }
                        }
                        return(ds);
                    }
                    else
                    {
                        //we have a sort filter already or we do not have a all-level sort filter
                        if (multi != null)
                        {
                            if (lastFilter != null)
                            {
                                multi.filters.Add(lastFilter);
                            }
                            if (multi.filters.Count > 1)
                            {
                                return(multi);
                            }
                        }
                        return(lastFilter);
                    }
                }
Пример #6
0
                    public static Data LoadFromXML(Node node, XmlElement root)
                    {
                        Data   data    = new Data();
                        string strType = root.GetAttribute("type");

                        if (string.IsNullOrEmpty(strType))
                        {
                            data.type = DataType.Select;
                        }
                        else
                        {
                            switch (strType.ToLower())
                            {
                            case "node":
                                data.type = DataType.Node;
                                break;

                            case "select":
                                data.type = DataType.Select;
                                break;
                            }
                        }


                        foreach (XmlNode xNode in root.ChildNodes)
                        {
                            if (xNode.NodeType == XmlNodeType.Element)
                            {
                                XmlElement e = (XmlElement)xNode;
                                switch (e.Name)
                                {
                                case "Column":
                                {
                                    var c = ViewColumn.Builder.LoadFromXML(e);
                                    if (c != null)
                                    {
                                        data.column.Add(c);
                                    }
                                    break;
                                }

                                case "Node":
                                {
                                    var childNode = Node.LoadFromXML(node, e);
                                    if (childNode != null)
                                    {
                                        data.child.Add(childNode);
                                    }
                                    break;
                                }

                                case "SelectSet":
                                {
                                    data.dataSelectSet = SelectSet.Builder.LoadFromXML(e);
                                    break;
                                }

                                default:
                                    DebugUtility.LogInvalidXmlChild(root, e);
                                    break;
                                }
                            }
                        }
                        return(data);
                    }