各インターフェース、メソッドの詳細についてはastah*
APIのJavaDocをご覧ください。
astah* APIのモデル作成/編集/削除機能は、astah* UML,
professionalでサポートしています。
public class APIForEditingModelsSample {
public static void main(String[] args) {
try {
System.out.println("Creating new project...");
// プロジェクトを作成して、起点となるモデルを取得
ProjectAccessor prjAccessor = AstahAPI.getAstahAPI().getProjectAccessor();
prjAccessor.create("./SampleModel.asta");
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();
}
}
}
|