Beispiel #1
0
        //Читання схеми фізично
        public static List <GroupAbstract> ReadScheme(string schemePath)
        {
            List <GroupAbstract> groupsAbstractions = new List <GroupAbstract>();

            string[]      lines          = File.ReadAllLines(schemePath, Encoding.Default);
            GroupAbstract lastGroup      = null;
            int           dividerCounter = 1;

            foreach (string line in lines)
            {
                if (!line.Contains("#") && line != "")
                {
                    if (line.Contains("-group"))
                    {
                        GroupAbstract group = new GroupAbstract(line);
                        groupsAbstractions.Add(group);
                        lastGroup = group;
                    }
                    else if (line.Contains("-single") && lastGroup != null)
                    {
                        SingleTagAbstract tag = new SingleTagAbstract(line);
                        lastGroup.tagsInGroup.Add(tag);
                    }
                    else if (line.Contains("-multiple") && lastGroup != null)
                    {
                        MultipleTagAbstract tagInfo = new MultipleTagAbstract(line);
                        lastGroup.tagsInGroup.Add(tagInfo);
                    }
                    else if (line.Contains("-divider") && lastGroup != null)
                    {
                        DividerTagAbstract divider = new DividerTagAbstract(line, dividerCounter);
                        lastGroup.tagsInGroup.Add(divider);
                        dividerCounter++;
                    }
                    else
                    {
                        throw new Exception("Помилка в схемі зчитування XML файлу (група тегів має бути перед тегами)");
                    }
                }
                else
                {
                    continue;
                }
            }
            //xmlObj = new XmlInfo();
            //xmlObj.tagGroups.AddRange(groupsInfo);

            return(groupsAbstractions);
        }
        XmlInfo FillGroups(SchemeInfo scheme)
        {
            XmlInfo xmlInfo = new XmlInfo();

            List <GroupInfo> groupsInfo = new List <GroupInfo>();

            for (int i = 0; i < scheme.groupsAbstractions.Count; i++)
            {
                GroupInfo gi = new GroupInfo(scheme.groupsAbstractions[i].groupParameters);
                for (int j = 0; j < scheme.groupsAbstractions[i].tagsInGroup.Count; j++)
                {
                    if (scheme.groupsAbstractions[i].tagsInGroup[j] is SingleTagAbstract)
                    {
                        SingleTagAbstract sta = scheme.groupsAbstractions[i].tagsInGroup[j] as SingleTagAbstract;
                        TagSingleInfo     tsi = new TagSingleInfo(sta.tagParameters);
                        tsi.xmlDoc = xmlFile;
                        gi.elements.Add(tsi);
                    }
                    else if (scheme.groupsAbstractions[i].tagsInGroup[j] is MultipleTagAbstract)
                    {
                        MultipleTagAbstract mta = scheme.groupsAbstractions[i].tagsInGroup[j] as MultipleTagAbstract;
                        TagMultipleInfo     tmi = new TagMultipleInfo(mta.tagParameters);
                        tmi.xmlDoc = xmlFile;
                        gi.elements.Add(tmi);
                    }
                    else if (scheme.groupsAbstractions[i].tagsInGroup[j] is DividerTagAbstract)
                    {
                        DividerTagAbstract dta = scheme.groupsAbstractions[i].tagsInGroup[j] as DividerTagAbstract;
                        TagDivider         td  = new TagDivider(dta.tagParameters, dta.counter);
                        gi.elements.Add(td);
                    }
                    else
                    {
                        throw new Exception("Помилка в побудові обїектної моделі Xml файлу");
                    }
                }
                groupsInfo.Add(gi);
            }

            xmlInfo.tagGroups.AddRange(groupsInfo);

            return(xmlInfo);
        }