# 共通ドキュメント

## DataFormAdapter

### 概要

エンティティとユーザーインターフェースのやり取りを定義する。

クラス名
  (システムプロジェクト名称).(サブシステム名称).(機能名称).FormAdapter.(エンティティ名称 + "FormAdapter")
  エンティティに対していくつかのフォームがある場合、機能により名称を分ける。(EntityEditFormAdapter,EntitySearchFormAdapter)
namespace
  (システムプロジェクト名称).(サブシステム名称).(機能名称).FormAdapter
継承元
  エンティティの元になるTableFormAdapter
インターフェース
  N/A
クラス属性
  N/A

### フィールド

以下のフィールドを定義する

- TableRowクラスに無いエンティティフィールドのためのInputElement
- その他

#### 継承元クラスのフィールド

table | エンティティの基本クラスデータ。使用する場合にはこのクラスが操作するエンティティクラスにキャストする。

### プロパティ

このエンティティに必要なプロパティを定義する。

#### 継承元クラスのプロパティ

IsValid | Bind()実行後の検証実行結果を保持する。

### コンストラクタ

必要に応じてコンストラクタを定義する。

- デフォルトコンストラクタは必ず定義する。
- 参照インスタンスは仕様によりnullまたは必要なインスタンスで初期化する
- 必ず継承元クラスのコンストラクタを呼び出す。

### メソッド

このエンティティに対する操作を定義する。

#### オーバーライド

必要に応じてオーバーライドする。

UpdateFields | 各InputElementに対してUpdateField()を呼び出す。
RenderView | base#RenderView()を呼び出した後、このクラスに定義したInputElementに対してRender()を呼び出す。
SetDataSource | base#SetDataSource()を呼び出した後、このクラスに定義したInputElementに対してSetValue()を呼び出す。
UpdateDataSource | base#UpdateDataSource()を呼び出した後、このクラスに定義したInputElementのGetValue()結果を自身のエンティティにセットする
Validate | base#Validate()を呼び出した後、このクラスに定義したInputElementのValidate()を呼び出し妥当性検証結果を返す。

#### 継承元クラスのメソッド

Bind | Form入力を取り込み検証を実行し、検証OKならばエンティティを入力情報で更新する。
UpdateFields | Form入力を取り込む。必要なら整形などのためFilterを実行する。
RenderView | Form入力要素を出力する。
SetDataSource | このクラスに割り当てるエンティティをセットする。
GetDataSource | このクラスに割り当てたエンティティを取得する。
UpdateDataSource | エンティティを入力情報で更新する。
Validate | 妥当性検証。

### サンプル

#### FXトラベル/マスタ保守/都市、地域/都市編集フォーム(C#)

    namespace FxTravel.Maintainance.Area.Input
    {
        /// <summary>
        /// 都市
        /// </summary>
        public class CityFormAdapter : MstCityTableFormAdapter
        {

            ///<summary>デフォルト構築</summary>
            public CityFormAdapter() : base()
            {
            }
        }
    }

### その他

- データアクセスコードは書かない。
- このクラスのインスタンスの初期化はFormクラスで行う(どの種類の入力要素を使用するかこのクラスでは判定できないから)。
- フォーム上のコントロールオブジェクトから直接値を取得することはせず、このクラスを通してFormAdapterElementを使用する。