
クラスの総数を表示するプラグインを作ってみましょう
=======================================================

単純なプラグインを作成しました。そのプラグインをベースに実践的なプラグインを作成してみましょう。設計されたモデルの品質を評価する指標の一つに、クラスの総数を利用することがあります。Hello Worldの代わりに、astah*モデル内のクラスの総数を表示するプラグインを変更してみましょう。

astah*モデル内のクラスの総数とは、下記のastah*モデルの場合は、3つです。

.. figure:: images/structure.png
   :width: 214
   :alt: 再帰的にモデルを取得するサンプルモデル

プラグインによって追加したメニューを押下すると､::

 「There are 3 classes」

と表示されるようにしてみましょう。

モデル情報を取得してみましょう
-------------------------------------------------------

astah*のモデル情報を取得するために、astah* APIを活用してみましょう。astah* APIとは、astah*のモデルデータを活用するアプリケーションを開発するためのJavaインターフェース群です。astah* APIの詳細については、本体に付属するastah* API利用ガイドを参照してください。

これから書くコードでは、ProjectAccessorから現在開いているastah*モデルのルートモデルを取得し、再帰的にすべてのクラスを取得します。それではクラスの総数をメッセージダイアログに表示するようにHelloWorldプラグインを修正してみましょう。

まず、CountClassActionクラスを作成しましょう。

.. literalinclude:: _snippets/CountClassAction.java
   :language: java
   :linenos:

次に､plugin.xmlファイルにCountClassActionクラスを使ったメニューに変更しましょう。

.. literalinclude:: _snippets/plugin_count_class_action.xml
   :language: xml
   :linenos:

最後に､plugin.propertiesに追加したメニューのラベルを追加します｡::

 count_classes=Count classes(C)

これで､クラスの数をカウント結果を表示できます。

デバッグしてみましょう
------------------------------------------------------------

ネストクラスのクラス1とパッケージ0以下のクラス2を、再帰的に取得できるかデバッグしながら、確認してみましょう。デバッグをするには次のコマンドを実行します。::

 > astah-debug
 
すると、44000ポートがリモートデバッグ用のポートとして開かれた状態で起動します。IDEなどからこのポートに接続し、リモートデバッグします。

Eclipseを使ったリモートデバッグの例
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Eclipseの場合は、下記のように設定します。

.. figure:: images/remote-debug.png
   :width: 541
   :alt: リモートデバッグ用設定

設定後､Debugボタンを押すとリモートデバッグが開始されます。適当な場所にブレークポイントを設定し､実行すると、デバッグが行われます。なお、リモートデバッグの詳細については、本書で扱う範囲外のため、割愛します。
