jp.co.fujitsu.reffi.client.nexaweb.model
クラス BaseModel

java.lang.Object
  上位を拡張 jp.co.fujitsu.reffi.client.nexaweb.model.BaseModel
すべての実装されたインタフェース:
Model
直系の既知のサブクラス:
DefaultModel, PublishCore, XalReturnPossibilityModel

public class BaseModel
extends Object
implements Model

[概 要]

Model I/Fを実装した、全てのModelの基底クラスです。

[詳 細]

この基底Modelクラスを継承したModelクラスは、以下の3つのイベントを 発火する処理を実装する必要が有ります。

Model処理成功イベント:

                ModelProcessEvent evt = new ModelProcessEvent(this);
                evt.setResult(result); // 任意のモデル処理結果
                fireModelSuccess(evt);
 
Model処理失敗イベント:
                ModelProcessEvent evt = new ModelProcessEvent(this);
                evt.setExeption(e); // 発生した例外
                fireModelFailure(evt);
 
Model処理終了イベント:
                ModelProcessEvent evt = new ModelProcessEvent(this);
                fireModelFinished(evt);
 
これらのイベントをBaseController内のモデル処理リスナがハンドリングすることによって、 BaseAction#successForwardとBaseAction#failureForwardがコールバックされます。 BaseAction継承クラス内ではモデル処理の正常、異常を上記のメソッドをオーバーライド することで検知することが出来ます。
またModel終了イベントでは、BaseControllerがモデルの終了をキャッチし、実装したActionにて 予約したモデルが全て終了した際、BaseAction#completeをコールしActionの処理が終了した ことをキャッチすることが可能です。

[備 考]

Reffiパッケージ内に存在する、~.model.*.~Coreクラスにはイベント発火処理が既に実装されています。 これらのクラスを継承する場合は、イベントディスパッチ処理を実装する必要は有りません。

[環 境] JDK 6.0 Update 11

Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.

作成者:
Project Reffi

コンストラクタの概要
BaseModel()
          [概 要] デフォルトコンストラクタです。
 
メソッドの概要
 void addModelProcessListener(ModelProcessListener listener)
          [概 要] モデル監視リスナリストにモデル監視リスナを追加します。
protected  void finalproc()
          [概 要] run()が終了したタイミングでテンプレートコールされるメソッドです。
 void fireModelFailure(ModelProcessEvent evt)
          [概 要] モデル処理失敗イベントを発火するイベントです。
 void fireModelFinished(ModelProcessEvent evt)
          [概 要] モデル処理終了イベントを発火するイベントです。
 void fireModelSuccess(ModelProcessEvent evt)
          [概 要] モデル処理成功イベントを発火するメソッドです。
 BaseController getController()
          [概 要] このモデルを起動したコントローラインスタンスを返却します。
 int getExecuteIndex()
          [概 要] このモデルがコントローラによって実行された実行順位を返却します。
 List<ModelProcessListener> getListenerList()
          [概 要] このモデルの正常終了、異常終了を監視するリスナリストを返却します。
 ParameterMapping getParameterMapping()
          [概 要] MVC各レイヤを巡回するパラメータオブジェクトを返却します。
 Object getResult()
          [概 要] 汎用的なモデル処理結果格納オブジェクトを返却します。
 int getSuccessCount()
          [概 要] モデルインスタンス生存中に、何回モデル処理が成功したかを返却します。
protected  int incrementSuccessCount()
          [概 要] モデル処理成功回数を1増加させて返却します。
 boolean isSkip()
          [概 要] このモデルを実行するか、コントローラが判断する為のフラグを取得します。
protected  void mainproc()
          [概 要] 主処理テンプレートメソッドです。
protected  void postproc()
          [概 要] 後処理テンプレートメソッドです。
protected  boolean preproc()
          [概 要] 前処理テンプレートメソッドです。
 void removeModelProcessListener(ModelProcessListener listener)
          [概 要] モデル監視リスナリストからモデル監視リスナを削除します。
 void run()
          [概 要] Modelの処理を開始するメソッドです。
 void setController(BaseController controller)
          [概 要] このモデルを起動したコントローラインスタンスを設定します。
 void setExecuteIndex(int executeIndex)
          [概 要] このモデルがコントローラによって実行された実行順位を設定します。
 void setListenerList(List<ModelProcessListener> listenerList)
          [概 要] このモデルの正常終了、異常終了を監視するリスナリストを設定します。
 void setParameterMapping(ParameterMapping parameterMapping)
          [概 要] MVC各レイヤを巡回するパラメータオブジェクトを設定します。
 void setResult(Object result)
          [概 要] 汎用的なモデル処理結果格納オブジェクトを設定します。
 void setSkip(boolean skip)
          [概 要] このモデルを実行するか、コントローラが判断する為のフラグを設定します。
protected  Exception trap(Exception e)
          [概 要] run()内で発生した全例外をハンドリングするメソッドです。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

BaseModel

public BaseModel()

[概 要]

デフォルトコンストラクタです。

[詳 細]

このモデル処理結果を監視するリスナ群を格納するリストインスタンス を生成します。

[備 考]

メソッドの詳細

getResult

public Object getResult()

[概 要]

汎用的なモデル処理結果格納オブジェクトを返却します。

[詳 細]

resultフィールド値を変革します。

[備 考]

定義:
インタフェース Model 内の getResult
戻り値:
汎用的なモデル処理結果格納オブジェクト

setResult

public void setResult(Object result)

[概 要]

汎用的なモデル処理結果格納オブジェクトを設定します。

[詳 細]

resultフィールド値を引数resultで設定します。

[備 考]

パラメータ:
result - 汎用的なモデル処理結果格納オブジェクト

getParameterMapping

public ParameterMapping getParameterMapping()

[概 要]

MVC各レイヤを巡回するパラメータオブジェクトを返却します。

[詳 細]

parameterMappingフィールド値を返却します。

[備 考]

戻り値:
MVC各レイヤを巡回するパラメータオブジェクト

setParameterMapping

public void setParameterMapping(ParameterMapping parameterMapping)

[概 要]

MVC各レイヤを巡回するパラメータオブジェクトを設定します。

[詳 細]

parameterMappingフィールド値を引数parameterMappingで設定します。

[備 考]

パラメータ:
parameterMapping - MVC各レイヤを巡回するパラメータオブジェクト

getController

public BaseController getController()

[概 要]

このモデルを起動したコントローラインスタンスを返却します。

[詳 細]

controllerフィールド値を返却します。

[備 考]

戻り値:

setController

public void setController(BaseController controller)

[概 要]

このモデルを起動したコントローラインスタンスを設定します。

[詳 細]

controllerフィールド値を引数controllerで設定します。

[備 考]

パラメータ:
controller -

getExecuteIndex

public int getExecuteIndex()

[概 要]

このモデルがコントローラによって実行された実行順位を返却します。

[詳 細]

executeIndexフィールド値を返却します。

[備 考]

戻り値:
このモデルがコントローラによって実行された実行順位

setExecuteIndex

public void setExecuteIndex(int executeIndex)

[概 要]

このモデルがコントローラによって実行された実行順位を設定します。

[詳 細]

executeIndexフィールド値を引数executeIndexで設定します。

[備 考]

パラメータ:
executeIndex - このモデルがコントローラによって実行された実行順位

getListenerList

public List<ModelProcessListener> getListenerList()

[概 要]

このモデルの正常終了、異常終了を監視するリスナリストを返却します。

[詳 細]

listenerListフィールド値を返却します。

[備 考]

戻り値:
このモデルの正常終了、異常終了を監視するリスナリスト

setListenerList

public void setListenerList(List<ModelProcessListener> listenerList)

[概 要]

このモデルの正常終了、異常終了を監視するリスナリストを設定します。

[詳 細]

listenerListフィールド値を引数listenerListで設定します。

[備 考]

パラメータ:
listenerList - このモデルの正常終了、異常終了を監視するリスナリスト

addModelProcessListener

public void addModelProcessListener(ModelProcessListener listener)

[概 要]

モデル監視リスナリストにモデル監視リスナを追加します。

[詳 細]

listenerListフィールドオブジェクトに引数listenerを追加します。

[備 考]

定義:
インタフェース Model 内の addModelProcessListener
パラメータ:
listener - モデル監視リスナ

removeModelProcessListener

public void removeModelProcessListener(ModelProcessListener listener)

[概 要]

モデル監視リスナリストからモデル監視リスナを削除します。

[詳 細]

listenerListフィールドオブジェクトから引数listenerを削除します。

[備 考]

パラメータ:
listener - モデル監視リスナ

getSuccessCount

public int getSuccessCount()

[概 要]

モデルインスタンス生存中に、何回モデル処理が成功したかを返却します。

[詳 細]

successCountフィールド値を返却します。

[備 考]

戻り値:
モデル処理成功回数

incrementSuccessCount

protected int incrementSuccessCount()

[概 要]

モデル処理成功回数を1増加させて返却します。

[詳 細]

successCountフィールド値をインクリメントします。
モデル処理が成功したタイミングでコールされる、fireModelSuccessメソッド内でコールされます。

[備 考]

SubscribeCore等、継続的に成功イベントを発行するモデルはsuccessCount値が増大します。

戻り値:
インクリメント後のモデル処理成功回数

isSkip

public boolean isSkip()

[概 要]

このモデルを実行するか、コントローラが判断する為のフラグを取得します。

[詳 細]

skipフィールドを返却します。

[備 考]

このフラグがtrueの場合、コントローラはこのモデルを実行しません。

戻り値:
このモデルを実行するかコントローラが判断する為のフラグ

setSkip

public void setSkip(boolean skip)

[概 要]

このモデルを実行するか、コントローラが判断する為のフラグを設定します。

[詳 細]

skipフィールドを引数skipで設定します。

[備 考]

下記例の場合、予約モデルは3つですが、実行されるのは2つになります。

使用例)
・一回目の通信結果を判断して二回目の実行モデルを切り替える

    @Override
    protected void reserveModels(List> models) {
        // 実行する可能性の有るモデルを予め登録
        models.add(HTTPRequestCore.class);
        models.add(SubscribeCore.class);
        models.add(PublishCore.class);
    }

    @Override
    public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
        switch(index){
            case 0:
                ((HTTPRequestCore)next).setRequestUrl("webcontroller");
                ((HTTPRequestCore)next).addUrlParameters("model.fqcn", "demo.server.model.DataFetchModel");
                break;
            case 1:
                // 一回目の通信結果を取得
                this.dao = (DataDao)prev.getResult();
                if(this.dao.getDivision() == 0) {
                    ((SubscribeCore)next).setTopic(channelName);
                    ((SubscribeCore)next).setSubscribe(true);
                }else {
                    // 想定外なのでスキップ。SubscribeCoreをコントローラに実行させない
                    ((SubscribeCore)next).setSkip(true);
                }
                break;
            case 2:
                if(this.dao.getDivision() == 1) {
                    ((PublishCore)next).setTopic(channelName);
                    ((PublishCore)next).setPublishObject(handleName + "が入室しました。");
                }else{
                    // 想定外なのでスキップ。PublishCoreをコントローラに実行させない
                    ((PublishCore)next).setSkip(true);
                }
                break;
        }
        return true;
    }
 

パラメータ:
skip - このモデルを実行するかコントローラが判断する為のフラグ

run

public void run()
         throws Exception

[概 要]

Modelの処理を開始するメソッドです。

[詳 細]

モデルの処理フローを生成します。 下記のテンプレートメソッドが順にテンプレートコールされます。

  1. preproc()
  2. mainproc()
  3. postproc()
  4. finalproc()
上記メソッド内で例外が発生した場合、trapメソッドがテンプレートコールされます。

[備 考]

例外が発生した場合、デフォルト動作としてModel処理失敗イベントが発火されますが、 trapオーバーライドメソッドでnullを返却すると、このイベントは発火されません。

定義:
インタフェース Model 内の run
例外:
Exception - 発生する可能性の有る全例外

preproc

protected boolean preproc()
                   throws Exception

[概 要]

前処理テンプレートメソッドです。

[詳 細]

デフォルト処理はtrueを返却します。

mainprocよりも先に呼ばれるメソッドです。
オーバーライドして、主処理の前に行う初期化を記述します。
nullを返却すると、それ以降のモデル処理は中止されます。

[備 考]

戻り値:
以降の処理を継続するかどうかのフラグ(デフォルト:true)
例外:
Exception - オーバーライド先で発生する可能性が有る例外

mainproc

protected void mainproc()
                 throws Exception

[概 要]

主処理テンプレートメソッドです。

[詳 細]

デフォルト処理は有りません。
オーバーライドしてこのモデルのメイン処理を実装します。

[備 考]

例外:
Exception - オーバーライド先で発生する可能性が有る例外

postproc

protected void postproc()
                 throws Exception

[概 要]

後処理テンプレートメソッドです。

[詳 細]

デフォルト処理は有りません。
オーバーライドしてこのモデルの主処理後処理を実装します。

[備 考]

例外:
Exception - オーバーライド先で発生する可能性が有る例外

trap

protected Exception trap(Exception e)

[概 要]

run()内で発生した全例外をハンドリングするメソッドです。

[詳 細]

デフォルト処理は有りません。
オーバーライドしてこのモデルの例外ハンドリング処理を実装します。

[備 考]

パラメータ:
e - オーバーライド先で発生する可能性が有る例外
戻り値:
引数eか、trapオーバーライドメソッドで変換された例外

finalproc

protected void finalproc()

[概 要]

run()が終了したタイミングでテンプレートコールされるメソッドです。

[詳 細]

デフォルト処理は有りません。
オーバーライドしてこのモデルの終了処理を実装します。

[備 考]


fireModelSuccess

public void fireModelSuccess(ModelProcessEvent evt)

[概 要]

モデル処理成功イベントを発火するメソッドです。

[詳 細]

モデル処理成功回数を1増加させ、このモデルに登録されているモデル処理監視リスナ群 に対して処理が成功したことを通知します。

[備 考]

以下のようにModelProcessEventを生成してから使用します。
        // モデル処理イベントインスタンス生成
        ModelProcessEvent evt = new ModelProcessEvent(this);
        evt.setResult(result);
        // 発火 
        fireModelSuccess(evt);
 

パラメータ:
evt - モデル成功処理結果が入ったModelProcessEventインスタンス

fireModelFailure

public void fireModelFailure(ModelProcessEvent evt)

[概 要]

モデル処理失敗イベントを発火するイベントです。

[詳 細]

このモデルに登録されているモデル処理監視リスナ群に対して処理が失敗したことを通知します。

[備 考]

パラメータ:
evt - モデル失敗処理結果が入ったModelProcessEventインスタンス
関連項目:
fireModelSuccess(ModelProcessEvent)

fireModelFinished

public void fireModelFinished(ModelProcessEvent evt)

[概 要]

モデル処理終了イベントを発火するイベントです。

[詳 細]

このモデルに登録されているモデル処理監視リスナ群に対して処理が終了したことを通知します。

[備 考]

パラメータ:
evt - モデル終了処理結果が入ったModelProcessEventインスタンス
関連項目:
fireModelSuccess(ModelProcessEvent)


Copyright(C) Fujitsu All Rights Reserved.