Example #1
0
        private void readPackages(PackageVO pkgvo, XmlNode parentNode)
        {
            List <PackageVO> retList        = new List <PackageVO>();
            List <ElementVO> retElementList = new List <ElementVO>();

            foreach (XmlNode pkgNode in parentNode.ChildNodes)
            {
                if ("package".Equals(pkgNode.Name))
                {
                    PackageVO pkg = new PackageVO();
                    foreach (XmlAttribute attr in pkgNode.Attributes)
                    {
                        switch (attr.Name)
                        {
                        case "name":
                            pkg.name = attr.Value;
                            break;

                        case "guid":
                            pkg.guid = attr.Value;
                            break;

                        case "alias":
                            pkg.alias = attr.Value;
                            break;

                        case "stereotype":
                            pkg.stereoType = attr.Value;
                            break;

                        case "TPos":
                            Int32 p;
                            if (!Int32.TryParse(attr.Value, out p))
                            {
                                p = 0;
                            }
                            pkg.treePos = p;
                            break;

                        case "changed":
                            pkg.changed = attr.Value[0];
                            break;
                        }
                    }

                    readPackages(pkg, pkgNode);
                    retList.Add(pkg);
                }

                if ("element".Equals(pkgNode.Name))
                {
                    ElementVO elem = new ElementVO();
                    foreach (XmlAttribute attr in pkgNode.Attributes)
                    {
                        switch (attr.Name)
                        {
                        case "name":
                            elem.name = attr.Value;
                            break;

                        case "guid":
                            elem.guid = attr.Value;
                            break;

                        case "type":
                            elem.eaType = attr.Value;
                            break;

                        case "alias":
                            elem.alias = attr.Value;
                            break;

                        case "stereotype":
                            elem.stereoType = attr.Value;
                            break;

                        case "tpos":
                            Int32 p;
                            if (!Int32.TryParse(attr.Value, out p))
                            {
                                p = 0;
                            }
                            elem.treePos = p;
                            break;

                        case "changed":
                            elem.changed = attr.Value[0];
                            break;
                        }
                    }

                    readElementContents(elem, pkgNode);
                    retElementList.Add(elem);
                }
            }

            pkgvo.childPackageList = retList;
            pkgvo.elements         = retElementList;

            // ConnectionSercherがいない場合は DiffMakerからの呼び出しとして、GUIDでのソートを行う
            if (this.connSearcher != null)
            {
                pkgvo.sortChildPackages();
            }
            else
            {
                pkgvo.sortChildPackagesGUID();
            }

            if (this.connSearcher != null)
            {
                pkgvo.sortElements();
            }
            else
            {
                pkgvo.sortElementsGUID();
            }
        }
Example #2
0
        /// <summary>
        /// パッケージの読み込み(再帰処理)
        /// 引数のパッケージノード以下を再帰的に読み込み、 Package, Element をVOに読み込む
        /// </summary>
        /// <param name="pkgvo">(out)パッケージのVO</param>
        /// <param name="parentNode">(in)対象のパッケージのXmlNode</param>
        private void readPackages(PackageVO pkgvo, XmlNode parentNode)
        {
            List <PackageVO> retList        = new List <PackageVO>();
            List <ElementVO> retElementList = new List <ElementVO>();
            List <DiagramVO> retDiagramList = new List <DiagramVO>();

            foreach (XmlNode pkgNode in parentNode.ChildNodes)
            {
                if ("package".Equals(pkgNode.Name))
                {
                    PackageVO pkg = new PackageVO();
                    foreach (XmlAttribute attr in pkgNode.Attributes)
                    {
                        switch (attr.Name)
                        {
                        case "name":
                            pkg.name = attr.Value;
                            break;

                        case "guid":
                            pkg.guid = attr.Value;
                            break;

                        case "alias":
                            pkg.alias = attr.Value;
                            break;

                        case "stereotype":
                            pkg.stereoType = attr.Value;
                            break;

                        case "TPos":
                            pkg.treePos = readAttributeIntValue(attr);
                            break;

                        case "changed":
                            pkg.changed = readAttributeCharValue(attr);
                            break;
                        }
                    }

                    readPackages(pkg, pkgNode);
                    retList.Add(pkg);
                }

                // package配下で elementノードを見つけたら
                if ("element".Equals(pkgNode.Name))
                {
                    // elementノード配下の情報から、 ElementVO を返却する
                    ElementVO elem = ElementsXmlReader.readElement(pkgNode, sortByPosFlg);

                    // 強いてelement毎のXMLファイルを読む必要がある場合のみ
                    if (elementFileReadFlg)
                    {
                        // 強いてelement毎のXMLファイルを読む必要がある場合のみ
                        if (ElementsXmlReader.existElementFile(elem.guid))
                        {
                            elem = ElementsXmlReader.readElementFile(elem.guid);
                        }
                    }

                    retElementList.Add(elem);
                }

                // package配下で diagram ノードを見つけたら
                if ("diagram".Equals(pkgNode.Name))
                {
                    retDiagramList.Add(readDiagramNode(pkgNode));
                }
            }

            pkgvo.childPackageList = retList;
            pkgvo.elements         = retElementList;
            pkgvo.diagrams         = retDiagramList;

            // ソート順指定フラグにより、ソート処理が分かれる
            if (sortByPosFlg)
            {
                pkgvo.sortChildPackages();
                pkgvo.sortElements();
            }
            else
            {
                pkgvo.sortChildPackagesGUID();
                pkgvo.sortElementsGUID();
            }
        }