public void writeElements() { Console.Write("inserting element table "); conn.Open(); recreateElementTable(); ArtifactXmlReader atfReader = new ArtifactXmlReader(this.projectDir); IList <ArtifactVO> artifacts = ArtifactsXmlReader.readArtifactList(this.projectDir, ProjectSetting.getVO().artifactsFile); string target_dir = null; target_dir = ConfigurationManager.AppSettings["artifact_dir"]; elementRecCount = 0; foreach (ArtifactVO atf in artifacts) { // 成果物パッケージ別のXMLファイル読み込み List <ElementVO> elements = atfReader.readAllElements(atf, null); // 読み込んだ成果物情報を元に読み込み readElementsInArtifact(atf, elements); } transaction.Commit(); Console.WriteLine(". done(" + elementRecCount + "records)"); conn.Close(); }
private void initProject() { string artifactsFileName = ProjectSetting.getVO().artifactsFile; string artifactDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath; // artifactList.Items.Clear(); this.artifacts = ArtifactsXmlReader.readArtifactList(artifactDir, artifactsFileName); string atfnodename; for (int i = 0; i < artifacts.Count; i++) { ArtifactVO atf = artifacts[i]; TreeNode packageNode = addPackageNodes(atf.pathName); if (atf.changed == ' ') { atfnodename = atf.name; } else { atfnodename = atf.name + " [" + atf.changed + "]"; } TreeNode atfNode = new TreeNode(atfnodename, 2, 1); atfNode.Tag = atf; atfNode.ContextMenuStrip = contextMenuStrip1; packageNode.Nodes.Add(atfNode); treeNodeMap.Add(atf.guid, atfNode); } this.treeView1.Nodes.Add(rootNode); }
/// <summary> /// プロジェクト内の全成果物の読み込み /// ALL_Artifacts.xml → atf_xxxx.xml ファイルを読み、全ての成果物パッケージの内容をメモリに読み込む /// </summary> /// <param name="projectDir_"></param> /// <returns>全成果物のリスト</returns> private List <ArtifactVO> readAllArtifacts(string projectDir_) { List <ArtifactVO> retList = ArtifactsXmlReader.readArtifactList(projectDir_); ArtifactXmlReader atfReader = new ArtifactXmlReader(projectDir_); foreach (ArtifactVO atf in retList) { // 成果物パッケージ別のXMLファイル読み込み atfReader.readArtifactDesc(atf); } // 成果物リストをソートする。 ソートキー=GUID(自然順序付け)see: BehaviorDevelop.vo.ArtifactVO#compareTo retList.Sort(); return(retList); }
/// <summary> /// プロジェクト内の全成果物の読み込み /// AllArtifacts.xml → atf_xxxx.xml ファイルを読み、全ての成果物パッケージの内容をメモリに読み込む /// </summary> /// <param name="projectDir"></param> /// <returns>全成果物のリスト</returns> private List <ArtifactVO> readAllArtifacts(string artifactsDir) { List <ArtifactVO> retList = ArtifactsXmlReader.readArtifactList(artifactsDir, ProjectSetting.getVO().artifactsFile); ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactsDir); foreach (ArtifactVO atf in retList) { // 成果物パッケージ別のXMLファイル読み込み atfReader.readArtifactDesc(atf); // 成果物配下の子ノードをGUIDでソート atf.sortChildNodesGuid(); } // 成果物リストをソートする。 ソートキー=GUID(自然順序付け)see: BehaviorDevelop.vo.ArtifactVO#compareTo retList.Sort(); return(retList); }
public static void Main(string[] args) { //コマンドライン引数を配列で取得する string[] cmds = System.Environment.GetCommandLineArgs(); string prjfile, projectPath; if (cmds != null && cmds.Length > 1) { prjfile = cmds[1]; } else { Console.WriteLine("引数が足りません"); Console.WriteLine("Usage: EAArtifactLoader.exe <projectFilePath>"); return; } if (ProjectSetting.load(prjfile)) { projectPath = Path.GetDirectoryName(prjfile); Console.WriteLine("プロジェクトファイルを読み込み : " + prjfile); } else { Console.WriteLine("プロジェクトファイル読み込みに失敗しました。 再度正しいファイルを選択して下さい。"); return; } EA.App eaapp = (EA.App)Microsoft.VisualBasic.Interaction.GetObject(null, "EA.App"); EA.Repository repo; if (eaapp != null) { repo = eaapp.Repository; ProjectSetting.getVO().eaRepo = repo; Console.WriteLine("EAにアタッチ成功 : 接続文字列 = " + repo.ConnectionString); } else { Console.WriteLine("EAにアタッチできないため処理できません。終了します。"); return; } // All_Artifact.xml から全成果物リストを取得 Console.WriteLine("全成果物XMLファイルを読み込み :"); string artifactsFileName = ProjectSetting.getVO().artifactsFile; List <ArtifactVO> artifacts = ArtifactsXmlReader.readArtifactList(projectPath, artifactsFileName); Console.WriteLine("成果物パッケージの件数: " + artifacts.Count); // 全成果物をなめ、それぞれの成果物パッケージをEAから取得してローカルを更新 for (int i = 0; i < artifacts.Count; i++) { ArtifactVO atfvo = artifacts[i]; Console.WriteLine(i + ": guid=" + atfvo.guid + ", name=" + atfvo.name); try { EA.Package atfPacObj = repo.GetPackageByGuid(atfvo.guid); EAArtifactXmlMaker maker = new EAArtifactXmlMaker(atfPacObj); ArtifactVO newArtifact = maker.makeArtifactXml(); // 現在読み込まれている成果物の内容を今読んだもので置き換え atfvo.package = newArtifact.package; // elements配下の要素XMLファイルを今読んだもので置き換え ArtifactXmlWriter writer = new ArtifactXmlWriter(); writer.rewriteElementXmlFiles(atfvo); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
public void CloseOnLoadComplete(string projectPath, string dbfile) { if (!this.loaded) { Int32 count; for (count = 0; count < 1000; count++) { if (this.loaded) { break; } else { System.Threading.Thread.Sleep(100); } } } // このプログラム(.exe)が置かれたフォルダを取得 //string currentDir = System.Windows.Forms.Application.StartupPath ; //ファイルを開いて終わるまで待機する // Process p = Process.Start( currentDir + "\\ElementIndexer.exe", projectPath + " " + dbfile ); // MessageBox.Show("内部データベースを構築します。\n構築処理が完了後、OKボタンを押してください"); try { ProjectSetting.load(projectPath + "\\project.bdprj"); // 全成果物のリストを読み込み string artifactsDir = projectPath + "\\" + ProjectSetting.getVO().artifactsPath; List <ArtifactVO> artifacts = ArtifactsXmlReader.readArtifactList(artifactsDir, ProjectSetting.getVO().artifactsFile); // 全成果物リストの内容を成果物XMLファイルで埋める ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactsDir); foreach (ArtifactVO atf in artifacts) { // 成果物別のXMLファイルの内容読み込み atfReader.readArtifactDesc(atf); } ArtifactsVO allArtifacts = new ArtifactsVO(); allArtifacts.artifactList = artifacts; ConnectorXmlReader connReader = new ConnectorXmlReader(projectPath); List <ConnectorVO> allConnectors = connReader.readConnectorAll(); IndexDbWriter dbWriter = new IndexDbWriter(projectPath, ProjectSetting.getVO().dbName); // 全接続情報をDBに登録 dbWriter.writeAllConnector(allConnectors); // 全要素情報をDBに登録 dbWriter.writeAllElements(allArtifacts); // 全ふるまい情報をDBに登録 dbWriter.writeAllBehaviors(allArtifacts); } catch (Exception ex) { MessageBox.Show(ex.Message); } // サブプロセスが終了後、必要なくなったところでCLOSE // p.WaitForExit(); this.Close(); }