/// <summary>
        /// EAから取得したパッケージ情報でartifactXMLを更新し、取得結果を新しいArtifactVOに入れて返却する
        /// </summary>
        /// <returns></returns>
        public ArtifactVO makeArtifactXml()
        {
//			if (eaPackageObj.IsControlled == false) {
//			}
            ArtifactVO atf = new ArtifactVO();

            atf.artifactId  = "";
            atf.changed     = ' ';
            atf.createDate  = rootPackObj.Element.Created.ToString();
            atf.guid        = rootPackObj.PackageGUID;
            atf.name        = rootPackObj.Name;
            atf.notes       = rootPackObj.Notes;
            atf.pathName    = makePackagePathFromEAPackage(rootPackObj);
            atf.projectName = "ASW";
            atf.stereoType  = rootPackObj.StereotypeEx;
            atf.updateDate  = rootPackObj.Element.Modified.ToString();

            atf.package   = ObjectEAConverter.getPackageFromEAObject(rootPackObj);
            atf.packageId = rootPackObj.PackageID;

            string artifactDir = ProjectSetting.getVO().projectPath + ProjectSetting.getVO().artifactsPath;

            ArtifactXmlWriter.outputArtifactXml(artifactDir, atf);
//			writer.outputArtifactXml(@"C:\WORK", atf);

            return(atf);
        }
Exemple #2
0
        void getElementFromEA( )
        {
            EA.Repository repo  = ProjectSetting.getEARepo();
            EA.ObjectType otype = repo.GetContextItemType();

            if (otype == EA.ObjectType.otElement)
            {
                // Code for when an element is selected
                EA.Element eaElemObj = (EA.Element)repo.GetContextObject();

                if (eaElemObj != null && (eaElemObj.Type == "Class" || eaElemObj.Type == "Enumeration"))
                {
                    ElementVO eaElement = ObjectEAConverter.getElementFromEAObject(eaElemObj);
                    textBoxElementName.Text = eaElement.name;
                    targetElement           = eaElement;
                }
                else
                {
                    textBoxElementName.Text = "(EA上でクラスを選択してください)";
                    targetElement           = null;
                }
            }
            else
            {
                textBoxElementName.Text = "(EA上でクラスを選択してください)";
                targetElement           = null;
            }
        }
Exemple #3
0
        /// <summary>
        /// 変更差分確認ボタンのクリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void ButtonViewDiffClick(object sender, EventArgs e)
        {
            EA.Repository repo      = ProjectSetting.getVO().eaRepo;
            EA.Element    eaElemObj = (EA.Element)repo.GetElementByGuid(myElement.guid);
            ElementVO     eaElement = ObjectEAConverter.getElementFromEAObject(eaElemObj);

            // 差分フォームを開く
            DiffElementForm diffForm = new DiffElementForm(eaElement, ref myElement);

            diffForm.ShowDialog(this);
            diffForm.Dispose();
        }
Exemple #4
0
        void ButtonRevertClick(object sender, EventArgs e)
        {
            EA.Repository repo = ProjectSetting.getVO().eaRepo;

            // 反映前のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する
            ElementVO revertedElement = null;

            EA.Element eaElemObj = (EA.Element)repo.GetElementByGuid(mergedElement.guid);
            if (eaElemObj == null)
            {
                MessageBox.Show("EAから要素の取得に失敗しました。 異常終了しました。 GUID=" + mergedElement.guid);
                return;
            }
            else
            {
                revertedElement = ObjectEAConverter.getElementFromEAObject(eaElemObj);
            }


            // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する
            ArtifactXmlWriter writer       = new ArtifactXmlWriter();
            StreamWriter      elsw         = null;
            string            outputDir    = ProjectSetting.getVO().projectPath;
            string            elemFilePath = outputDir + @"\elements\" + revertedElement.guid.Substring(1, 1) + @"\" + revertedElement.guid.Substring(2, 1) + @"\" + revertedElement.guid.Substring(1, 36) + ".xml";

            try {
                //BOM無しのUTF8でテキストファイルを作成する
                elsw = new StreamWriter(elemFilePath);
                elsw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?> ");
                ElementXmlWriter.writeElementXml(revertedElement, 0, elsw);
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            } finally {
                if (elsw != null)
                {
                    elsw.Close();
                }
            }

            // changedFile が存在したら削除する
            try {
                string changedElemFilePath = outputDir + @"\elements\" + revertedElement.guid.Substring(1, 1) + @"\" + revertedElement.guid.Substring(2, 1) + @"\" + revertedElement.guid.Substring(1, 36) + "_changed.xml";
                if (System.IO.File.Exists(changedElemFilePath))
                {
                    System.IO.File.Delete(changedElemFilePath);
                }
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }

            // 呼び出し元から受領した更新後ElementをRevert後の要素で置き換え
//			rightElement = revertedElement;

            // 親フォームの再描画を依頼
            ElementForm oya = (ElementForm)this.Owner;

            oya.repaint(revertedElement);

            // XMLファイルをコミットするためにTortoiseGitを起動する
            //string exename = @"TortoiseGitProc.exe";
            //string arguments = @"/command:commit /path:" + elemFilePath;

            //Process p = Process.Start( exename, arguments );

            // 自分をクローズ
            this.Close();
        }
Exemple #5
0
        void ButtonCommitCloseClick(object sender, EventArgs e)
        {
            EA.Repository repo = ProjectSetting.getVO().eaRepo;

            if (mergedElement == null)
            {
                MessageBox.Show("反映するべき差分が見つからなかったため、終了します");
                return;
            }

            // 変更のあったメソッドを順にEAに反映する
            foreach (MethodVO m in mergedElement.methods)
            {
                MethodVO updMth = searchMethodByGuid(rightElement.methods, m.guid);
                if (m.changed == 'U')
                {
                    execUpdateMethod(repo, updMth);
                }
            }

            // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する
            ElementVO refreshedElement = null;

            EA.Element eaElemObj = (EA.Element)repo.GetElementByGuid(mergedElement.guid);
            if (eaElemObj == null)
            {
                MessageBox.Show("EAから要素の取得に失敗しました。 異常終了しました。 GUID=" + mergedElement.guid);
                return;
            }
            else
            {
                refreshedElement = ObjectEAConverter.getElementFromEAObject(eaElemObj);
            }

            // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する
            StreamWriter elsw         = null;
            string       outputDir    = ProjectSetting.getVO().projectPath;
            string       elemFilePath = outputDir + @"\elements\" + refreshedElement.guid.Substring(1, 1) + @"\" + refreshedElement.guid.Substring(2, 1) + @"\" + refreshedElement.guid.Substring(1, 36) + ".xml";

            try {
                //BOM無しのUTF8でテキストファイルを作成する
                elsw = new StreamWriter(elemFilePath);
                elsw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?> ");
                ElementXmlWriter.writeElementXml(refreshedElement, 0, elsw);
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            } finally {
                if (elsw != null)
                {
                    elsw.Close();
                }
            }

            // changedFile が存在したら削除する
            try {
                string changedElemFilePath = outputDir + @"\elements\" + refreshedElement.guid.Substring(1, 1) + @"\" + refreshedElement.guid.Substring(2, 1) + @"\" + refreshedElement.guid.Substring(1, 36) + "_changed.xml";
                if (System.IO.File.Exists(changedElemFilePath))
                {
                    System.IO.File.Delete(changedElemFilePath);
                }
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }

            // 親フォームの再描画を依頼
            ElementForm oya = (ElementForm)this.Owner;

            oya.repaint(refreshedElement);

            // XMLファイルをコミットするためにTortoiseGitを起動する
            //string exename = @"TortoiseGitProc.exe";
            //string arguments = @"/command:commit /path:" + elemFilePath;
            //Process p = Process.Start( exename, arguments );

            // 自分をクローズ
            this.Close();
        }