サンプル
astah*に同梱しているサンプルアプリケーションの利用方法や、その他のサンプルを掲載します。
サンプルアプリケーション
astah*をインストールすると、astah*のインストールフォルダ\api\sample
にサンプルアプリケーションが保存されています。
プログラム名 | 機能 |
---|---|
simpleRead | パッケージ、クラス情報の取得 |
simpleEdit | パッケージ、クラス、関連モデルの作成 |
simpleDgmRead | 図、プレゼンテーション情報の取得 |
simpleDgmEdit | パッケージやクラス、関連のモデル作成 及びクラス図の作成 |
csvexporter | モデル情報(クラス、属性、操作、定義、汎化、実現)を取得して、CSV形式で出力 |
サンプルの構成
サンプルアプリケーションは基本的に下記のように構成されています。
ファイルパス | 詳細 |
---|---|
*.java |
コンパイル前のjavaソースコードです(複数個ある場合もあります) |
compile.bat |
windowsでのコンパイル時に実行します |
compile.sh |
windows以外でのコンパイル時に実行します |
run.bat |
windowsでの実行に使います |
run.sh |
windows以外での実行に使います |
コンパイル・実行方法
環境に合わせ、バッチファイルまたはシェルの記述を適宜変更して実行します。 利用するシステムのコマンドプロンプト、もしくはJavaのIDEツール(統合開発環境)などでコンパイル・実行できます。パスの通し方はバッチファイルまたはシェルを参考にしてください。
csvexporterの実行例
C:\Users\○○>cd C:\Program Files\astah-professional\api\sample\csvexporter
C:\Program Files\astah-professional\api\sample\csvexporter>compile.bat
C:\Program Files\astah-professional\api\sample\csvexporter>run.bat ../../../Sample.asta Sample.csv
Done
続行するには何かキーを押してください . . .
C:\Program Files\astah-professional\api\sample\csvexporter>
※ windowsにて標準のパスにインストールしている場合はコマンドプロンプトを管理者権限で起動する必要があります。
スクリプトエディタ用サンプル
astah*には、スクリプト言語を使って、astah*内のモデルを編集、参照できるスクリプトエディタがあります。
サンプルはスクリプトエディタで、すぐに使えるサンプル集をご参照ください。
その他のサンプルコード
本ドキュメントを作成する際に書き下ろしたサンプルコードを記載します。
クラスを作成する
import java.io.File;
import java.io.IOException;
import com.change_vision.jude.api.inf.AstahAPI;
import com.change_vision.jude.api.inf.editor.BasicModelEditor;
import com.change_vision.jude.api.inf.editor.IModelEditorFactory;
import com.change_vision.jude.api.inf.editor.ITransactionManager;
import com.change_vision.jude.api.inf.exception.BadTransactionException;
import com.change_vision.jude.api.inf.exception.InvalidEditingException;
import com.change_vision.jude.api.inf.exception.LicenseNotFoundException;
import com.change_vision.jude.api.inf.exception.NonCompatibleException;
import com.change_vision.jude.api.inf.exception.ProjectLockedException;
import com.change_vision.jude.api.inf.exception.ProjectNotFoundException;
import com.change_vision.jude.api.inf.model.IModel;
import com.change_vision.jude.api.inf.project.ProjectAccessor;
public class CreateClassSample {
private static final String PROJECT_PATH = "test.asta";
private static final String CLASS_NAME = "class0";
public static void main(String[] args) {
// プロジェクトアクセサの取得
;
ProjectAccessor projectAccessortry {
= AstahAPI.getAstahAPI().getProjectAccessor();
projectAccessor } catch (ClassNotFoundException e) {
System.out.println("予期せぬエラーが発生しました");
return;
}
try {
// プロジェクトアクセサにプロジェクトを指定
if (new File(PROJECT_PATH).exists()) {
System.out.println(PROJECT_PATH + " を開きます");
try {
.open(PROJECT_PATH);
projectAccessor} catch (ClassNotFoundException | LicenseNotFoundException
| ProjectNotFoundException | NonCompatibleException | IOException
| ProjectLockedException e) {
System.out.println(PROJECT_PATH + " を開けませんでした");
System.out.println("詳細 : " + e.getLocalizedMessage());
return;
}
} else {
System.out.println(PROJECT_PATH + " にプロジェクトを作成します");
try {
.create(PROJECT_PATH);
projectAccessor} catch (IOException e) {
System.out.println(PROJECT_PATH + " にプロジェクトを作成できませんでした");
return;
}
try {
.save();
projectAccessor} catch (LicenseNotFoundException | ProjectLockedException
| ProjectNotFoundException | IOException e) {
System.out.println("保存に失敗しました");
System.out.println("詳細 : " + e.getLocalizedMessage());
return;
}
}
// 編集対象となるモデルの取得
;
IModel parenttry {
= projectAccessor.getProject();
parent } catch (ProjectNotFoundException e) {
System.out.println("プロジェクトを作成するか開いてください");
return;
}
// 編集
if ("community".equals(projectAccessor.getAstahEdition())) {
System.out.println("コミュニティエディションではプロジェクトを編集できません");
return;
}
System.out.println("\"" + CLASS_NAME + "\"クラスを作成します");
try {
createClass(projectAccessor, parent, CLASS_NAME);
} catch (Exception e) {
System.out.println("\"" + CLASS_NAME + "\"クラスを作成できませんでした");
System.out.println("詳細 : " + e.getLocalizedMessage());
}
// 保存
if (!projectAccessor.isProjectModified()) {
return;
}
try {
.save();
projectAccessor} catch (LicenseNotFoundException | ProjectLockedException | ProjectNotFoundException
| IOException e) {
System.out.println("保存に失敗しました");
System.out.println("詳細 : " + e.getLocalizedMessage());
return;
}
System.out.println("変更を保存しました");
} finally {
// プロジェクトを閉じる
.close();
projectAccessorSystem.out.println("プロジェクトを閉じました");
}
}
static private void createClass(ProjectAccessor projectAccessor, IModel parent, String name) {
= projectAccessor.getTransactionManager();
ITransactionManager transactionManager = projectAccessor.getModelEditorFactory();
IModelEditorFactory modelEditorFactory try {
= modelEditorFactory.getBasicModelEditor();
BasicModelEditor basicModelEditor .beginTransaction();
transactionManager.createClass(parent, name);
basicModelEditor.endTransaction();
transactionManager} catch (BadTransactionException | InvalidEditingException e) {
.abortTransaction();
transactionManagerthrow new RuntimeException(e.getLocalizedMessage(), e);
}
}
}