/// <summary> /// 成果物パッケージの読み込み /// </summary> /// <param name="parentNode">packageを子として持つ親のartifactノード</param> /// <returns>読み込まれた成果物のパッケージVO(常に1つ)</returns> private void readRootPackage(PackageVO rootPackage, XmlNode parentNode) { // 成果物のルートパッケージから再帰的に子パッケージを読み込み readPackages(rootPackage, parentNode); // ソート順指定フラグにより、ソート処理が分かれる if (this.sortByPosFlg) { rootPackage.sortChildNodes(); } else { rootPackage.sortChildNodesGuid(); } return; }
/// <summary> /// 成果物パッケージの読み込み /// </summary> /// <param name="parentNode">packageを子として持つ親のartifactノード</param> /// <returns>読み込まれた成果物のパッケージVO(常に1つ)</returns> private PackageVO readRootPackage(XmlNode parentNode) { PackageVO pkgvo = null; foreach (XmlNode pkgNode in parentNode.ChildNodes) { if ("package".Equals(pkgNode.Name)) { pkgvo = readPackageNode(pkgNode); try { // 成果物のルートパッケージから再帰的に子パッケージを読み込み readPackages(pkgvo, pkgNode); // ソート順指定フラグにより、ソート処理が分かれる if (this.sortByPosFlg) { pkgvo.sortChildNodes(); //pkgvo.sortChildPackages(); //pkgvo.sortElements(); } else { pkgvo.sortChildNodesGuid(); //pkgvo.sortChildPackagesGUID(); //pkgvo.sortElementsGUID(); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); throw ex; } } } return(pkgvo); }
/// <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.sortChildNodes(); //pkgvo.sortChildPackages(); //pkgvo.sortElements(); } else { pkgvo.sortChildNodesGuid(); //pkgvo.sortChildPackagesGUID(); //pkgvo.sortElementsGUID(); } }