MANDALA 入門 フックメソッドの作成

Number項目用のフックメソッド

画面の設計が終わったら、次は「フックメソッド」を作成します。 メニューの「ファイル(F)」−「新規(N)」を選択し、オブジェクトギャラリの 「クラス」アイコンをダブルクリックして下さい。
「クラスウィザード」というダイアログボックスが表示されます。ここで「クラス名(C)」 項目に“Number”と入力し、「OK」ボタンをクリックして下さい。
編集ペインがソースエディタに変わり、Number.java の内容が表示されます。
ここでエディタを使用して、Number クラスに次のメソッドを追加して下さい。

  public int check(  int   number  )
  {
    if (number < 1 || number > 199) {
      return 1;
    }
    return 0;
  }

これは Number 項目(フォーム設計で配置した学生番号 hd_number の項目です)の check という フックメソッドです。check フックメソッドは、項目への入力が完了した時点で MANDALA for Java フレームワークから自動的に呼び出されます。
メソッドのパラメタである int number には、hd_number に入力された値が int に 変換されて設定されます。メソッド内では、この値を調べて 1より小さいか 199 より 大きい場合には 1を返し、それ以外の場合は 0 を返すようにしています。
check フックメソッドでは、0 を返した場合正しい値であることを示し、 それ以外の場合は入力エラーであることを示す仕様になっています。従ってこの check メソッドでは 1から199までの値が入力された場合のみ正しい値として扱う、という アプリケーションの動作を定義していることになります。

フォーム用のフックメソッド

次にアプリケーション特有の動作を記述するフォーム用フックメソッドを作成します。
Number 項目用フックメソッドのクラスを作った場合同様、“Sample”という名前のクラスを 新規に作成し、次のメソッドをエディタで追加して下さい。

  public int errorMsg(  FormBase  fb,
                        int       cd_error  )
  {
      if (cd_error < 0) {
          return fb.processDefaultNotify(cd_error);
      }
      if (cd_error == 1) {
          fb.displayMessage("学生番号が正しくありません",
                            java.awt.Color.red,
                            false);
      }
      return FormBase.ERRORMSG_DEFAULT;
  }

これは画面用フックメソッドの errorMsg を定義しています。errorMsg フックメソッドは 前項で説明した check フックメソッドのリターン値を検査してオペレータに通知を行う 役割を持っています。メソッドパラメタの cd_error には check フックメソッドのリターン値 が設定されてきます。
ここでは cd_error が 1 の場合、メッセージ表示域にエラーを表す文を表示するように なっています。
もう一つのメソッドパラメタ fb は、MANDALA for Java フレームワークの FormBase という クラスへの参照を得るために記述しています。なぜ FormBase クラスへの参照が必要かという と、メッセージを表示するためのメソッドがこのクラスのメンバであるためです。
なお、cd_error が負数である時には、MANDALA for Java フレームワークが内部で使用している コードであることを示します。上記の errorMsg メソッドでは、cd_error が負であった場合 このコードを FormBase クラスの processDefaukltNotify というメソッドに渡すことにより フレームワークのデフォルト動作を行うよう指示しています。

さてフォーム用フックメソッドのクラスには、もう一つメソッドを追加します。

  public int append(  int      number,
                      String   name  )
  {
      System.out.println("学生番号:" + number
                       + " 氏名:"   + name
                       + " を登録します。");
      return FormBase.APPEND_APPEND;
  }
}

今度は append フックメソッドです。このフックメソッドは、フォームの各項目にデータを 入力し終え、ひとつのデータを登録するタイミングで呼び出されます。
本物の業務アプリケーションであればデータベースへの出力処理などが記載されるのですが、 ここではテスト用サンプルのために簡単な表示処理を行うにとどめています。

プロジェクトの保存

ここまでの作業が終わったら、メニューの「ファイル(F)」−「すべて保存(A)」を選択して 作業内容を保存して下さい。