# JUDE API 利用ガイド

## 【モデルの作成方法】

ここでは、モデルの作成方法をサンプルプログラムを併用して、一部の例を紹介します。
各インターフェース、メソッドの詳細については、 JUDE APIのJavaDocをご覧ください。
JUDE APIのモデル作成機能は、JUDE/Professionalでサポートしています。

#### 【トランザクション操作】

モデルを作成または編集する場合、トランザクション操作が必要です。 TransacionManagerのbeginTransactionメソッドなどを用いることによって、トランザクション操作を実現できます。

#### 【ER図に関連するモデルの作成】

ERModelEditorのcreateEREntityメソッドなどを用いることによって、ER図のERエンティティなどのモデルを作成できます。

#### 【クラス図に関連するモデルの作成】

BasicModelEditorのcreateClassメソッドなどを用いることによって、クラス図のクラスなどのモデルを作成できます。

#### 【ユースケース図に関連するモデルの作成】

UsseCaseModelEditorのcreateUseCaseメソッドなどを用いることによって、ユースケース図のユースケースなどのモデルを作成できます。

#### 【マインドマップに関連するモデルの作成】

MindmapDiagramEditorのaddChildメソッドなどを用いることによって、マインドマップのトピックなどのモデルを作成・移動できます。

#### 【クラス図に関連するモデルの作成例】

パッケージ1つと配下のクラスを2つ、そして、その間の関連を作成します。

    public class APIForEditingModelsSample {

        public static void main(String[] args) {

            try {
                System.out.println("Creating new project...");

                // プロジェクトを作成して、起点となるモデルを取得
                ProjectAccessor prjAccessor = ProjectAccessorFactory.getProjectAccessor();
                prjAccessor.create("./SampleModel.jude");
                IModel project = prjAccessor.getProject();

                System.out.println("Creating new elements in the project...");

                // クラスなどのモデル要素を作成または編集する場合、まとまり単位としてトランザクション操作が必要
                TransactionManager.beginTransaction();

                // クラス関連のモデル要素を作成するエディタを取得
                BasicModelEditor basicModelEditor = ModelEditorFactory.getBasicModelEditor();

                // パッケージを作成
                IPackage packageA = basicModelEditor.createPackage(project, "PackageA");

                // 指定のパッケージにクラスを作成
                IClass classA = basicModelEditor.createClass(packageA, "ClassA");
                // クラスの定義を追加
                classA.setDefinition("Definition of ClassA");
                // クラスに属性を追加
                basicModelEditor.createAttribute(classA, "attribute0", "int");
                // クラスに操作を追加
                basicModelEditor.createOperation(classA, "operation0", "void");

                // 指定のパッケージにクラスを作成
                IClass classB = basicModelEditor.createClass(packageA, "ClassB");

                // クラス間の関連を作成
                basicModelEditor.createAssociation(classA, classB, "association name",
                        "classA end", "classB end");

                // トランザクションの終了
                TransactionManager.endTransaction();

                // プロジェクトを保存
                prjAccessor.save();

                // プロジェクトを閉じる
                prjAccessor.close();

                System.out.println("Finished");

            } catch (LicenseNotFoundException e) {
                e.printStackTrace();
            } catch (ProjectNotFoundException e) {
                e.printStackTrace();
            } catch (ProjectLockedException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InvalidEditingException e) {
                // トランザクションの放棄
                TransactionManager.abortTransaction();
                // 不正編集の例外メッセージを取得
                System.err.println(e.getMessage());
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
    }

HOME