Esempio n. 1
0
        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);
        }
Esempio n. 5
0
        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);
                }
            }
        }
Esempio n. 6
0
        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();
        }