# 共通ドキュメント

## 構成要素

### クラス

#### データアクセス

##### Database

データベース実体

##### Connection

データベースへの接続

- Commandを実行して結果セットを返す
- Commandを実行してデータベースを更新する

インスタンスの生成はConnectionFactoryが担当し、その他からは直接インスタンスを生成しない

どのデータベースに接続するかは設定ファイルに記述する。

##### ConnectionFactory

設定名称または設定オブジェクトに基づくConnectionを生成する。

##### Command

データベースへの選択、更新、追加、削除のクエリーをパッケージ化したもの。クエリー文字列とパラメータから成る。

#### ドメインモデル

##### AbstractTableRow

テーブル行の抽象

- 行の状態を保持する
- DataRowからの初期化を定義する

##### TableRow

t2m.exeにより自動生成

テーブルの行そのものを表す

##### TableAccess

t2m.exeにより自動生成

テーブル行に対するデータアクセスクラス

- テーブル行をデータベースに保存
- テーブル行をデータベースから削除
- テーブル行をデータベースに追加
- テーブル行をデータベースから取得
- テーブル行リストをデータベースから取得

更新、削除、取得の場合検索条件を設定する事でテーブル全体への操作が出来る

##### TableValidator

t2m.exeにより自動生成

テーブル行検証クラス

テーブル行の各列が妥当であるか検証する。列間の関係、別の行との関係による妥当性などはDataValidatorクラスが担当する

##### TableProperties

t2m.exeにより自動生成

テーブルの列情報

- 列名
- 長さ
- 精度
- 更新対象
- 表示対象
- etc...

##### Entity

t2m.exeにより半自動生成

ドメインモデルのうち、データ実体を表す。データの属性、導出項目などを定義し、UI、帳票、データ永続化間でやり取り出来るデータ構造を実装する。

- このクラス単体で永続保存、読み込みなどは出来ない。
- 基本的にはTableRowクラスを継承し、不足するプロパティ、操作を追加する。
- 関連Entityが存在する場合は関連を保持する。

##### DataAccess

t2m.exeにより半自動生成

ドメインモデルのうち、データアクセスを表す。エンティティの永続操作を実装する。

- 新規Entityを作成する
- TableAccessから取得したTableインスタンスからEntityインスタンスを生成する
- TableAccessを使用してEntityをデータベースに保存
- TableAccessを使用してEntityをデータベースに追加
- TableAccessを使用してEntityをデータベースから削除
- データコマンドを作成しデータベースからEntityを取得

##### DataValidator

t2m.exeにより半自動生成

ドメインモデルのうち、データ妥当性検査を表す。

基本的にはTableValidatorを継承し、不足の検証を追加する

#### ユーザーインターフェース

##### Form

ユーザー入力、データ表示など

- ユーザー入力を受け取る
- DataFormAdapterから取り出したEntityをDataAccessを使用して保存する
- DataFormAdapterから取り出したEntityをDataAccessを使用して削除する
- DataAccessから取得したEntityをDataFormWrapperを介して表示する
- DataAccessから取得した新しいEntityをDataFormWrapperを介して表示する

##### TableFormAdapter

t2m.exeにより自動生成

テーブル行とForm入力要素を紐付ける

- 表示の更新
- FormからEntityへのデータ取り込み
- 入力値検証を行う

##### DataFormAdapter

t2m.exeにより半自動生成

FormとEntityを紐付ける

- 表示の更新
- FormからEntityへのデータ取り込み
- 入力値検証を行う

基本的にはTableFormAdapterを継承し、不足の操作を追加する

##### FormAdapterElement

入力要素

- 入力コントロールへのデータ出力
- 入力コントロールからのデータ取得
- 入力値検証

##### Filter

入力フィルター

- 文字入力から不要文字を取り除く
- 文字入力を適切な型に変換する

#### その他の要素

##### AbstractReport

帳票機能の抽象

- DataAccessから取得したEntityから帳票を作成する
- 作成した帳票を保存する
- 作成した帳票に名前をつけて保存する

##### Report

帳票機能

- DataAccessから取得したEntityから帳票を作成する
- 作成した帳票を保存する
- 作成した帳票に名前をつけて保存する

AbstractDocumentを継承する。

##### BatchProcess

バッチ処理

DataAccessから取得したEntityから何か実行する

- 帳票作成
- メール一括送信
- etc...

外部からの操作はStart()のみ

外部から参照できる属性は起動オプションのみ

##### Program

アプリケーション本体。BatchProcessまたはFormを起動する

#### その他

- メール送信
- FAX送信
- 設定ファイル
- ログ出力
- 認証
- ACL
- エラー処理
- ファイルシステム
- メッセージリソース
- Printer

### アプリケーション

#### formアプリケーション

一つ以上のFormを持つアプリケーション

メインとなるフォームからサブフォームを呼び出す

#### バッチアプリケーション

Formを持たず、一連の処理が終了したらプログラムを終了するアプリケーション

BatchProcess#Start()を呼び出す

#### webアプリケーション

urlに対してhtml文書などを出力するアプリケーション

#### webサービス

webアプリケーションのうち、データ構造のみの文書を出力するアプリケーション