intra-martJ2EEソースコードジェネレータ チュートリアルガイド

xintra-mart J2EE ソースコードジェネレータチュートリアルガイド
intra-martJ 2 E E ソ ー ス コ ー ド ジ ェ ネ レ ー タ
チュートリアルガイド
x intra-mart J2EE ソ ー ス コ ー ド ジ ェ ネ レ ー タ チ ュ ー ト リ ア ル ガ イ ド
0
1
1
J2EE ソ ー ス コ ー ド ジ ェ ネ レ ー タ チ ュ ー ト リ ア ル ガ イ ド の 目 的 と 内 容
1
1 作 成 手 順 ...................................................... 1
2
3
生成ソースプロセスフロー
3
2 プ ロ セ ス フ ロ ー ................................................ 3
3
5
作成アプリケーションの説明
5
3 ア プ リ ケ ー シ ョ ン 動 作 画 面 ...................................... 5
4 ア プ リ ケ ー シ ョ ン 動 作 説 明 ...................................... 6
4
7
DAO ジ ェ ネ レ ー タ に よ る 作 成
7
5 DAO シ ー ト の 構 成 .............................................. 7
6 DAO シ ー ト の 作 成 .............................................. 8
7 DAO ソ ー ス コ ー ド の 生 成 ....................................... 16
8 DAO ソ ー ス コ ー ド の 説 明 ....................................... 17
5
45
VIEW ジ ェ ネ レ ー タ に よ る 作 成
45
9 VIEW シ ー ト の 構 成 ............................................ 45
10 V I E W シ ー ト の 作 成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6
11 V I E W ソ ー ス コ ー ド の 説 明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8
6
93
コンパイル及び実行
93
12 プ ロ ジ ェ ク ト の 作 成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3
13 ソ ー ス の 実 行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5
7
97
ソースコードの追加、変更
97
14 D A O 追 加 メ ソ ッ ド の 実 装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 8
15 マ ッ ピ ン グ ク ラ ス の 追 加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0 2
16 イ ベ ン ト フ レ ー ム ワ ー ク の 追 加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0 5
17 ア ク シ ョ ン 別 S e r v i c e C o n t r o l l e r の 追 加 . . . . . . . . . . . . . . . . . . . . . . . . 1 1 9
18 画 面 レ イ ア ウ ト の 変 更 ( J S P の 変 更 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 7
19 プ ロ パ テ ィ フ ァ イ ル の 変 更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 3
20 掲 示 板 ア プ リ ケ ー シ ョ ン の 実 行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 5
21 注 意 事 項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 6
8
138
付録
138
22 S o u r c e G e n e r a t o r タ グ ラ イ ブ ラ リ 機 能 . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 8
23 S o u r c e G e n e r a t o r 拡 張 ク ラ ス ラ イ ブ ラ リ 機 能 . . . . . . . . . . . . . . . . . . . . 1 6 8
1
1 J2EE ソースコードジェネレータチュートリアルガイドの目的と内容
J2EE ソースコードジェネレータチュートリアルガイドの目的と内容
当コース で は、複雑 な J2EE 開 発を容易 に 行うために intra-martJ2EE ソースコードジ
ェネレー タ を利用し て J2EE ア プリケー シ ョンを作 成 する方法 に ついて学 習 します。
作成手順
ジェネレータシートの作成
DAO
シート VIEW
シート
ソースコードの生成
IM-J2EE
J2EE
ソースコードジェネレータ
ソースコード IM プ ロ パ
テ ィ フ ァ
イル
ソースコードの追加
e Builder
( Framework Producer)
ソースコードのコンパイル
アプリケーションの実装・実行
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
1
2
2
2 生成ソースプロセスフロー
生成ソースプロセスフロー
intra-martJ2EE ソースコードジ ェ ネレータは ViewGenerator、DAOGenerator の二つの生
成ツール で 構成され 、 それぞれの EXCEL シートから下 記 のソース コ ードを生 成 します。
ViewGenerator
• 画面コントロールを持つ JSP ソース
• ページからの入力リクエストを受ける ServiceController
• 画面の入力情報の保持、チェックを行う ViewObject
• サービスプロパティファイル
DAOGenerator
• データベースアクセスをサポートする DAO
• DAO のインターフェースを定義した DAOIF
• データベースの情報を取得、格納する ModelObject
• データプロパティファイル
クライアントサイド
プ ロ セ ス サーバサイド
フロー
画面情報の参照
ViewObject
(Checker機能付き)
JSP
⑧レスポンスの返信
マッピング
ファイル
④値チェックエラー時
ブラウザ
②画面情報の格納
⑥画面情報の参照
Event
③値チェック
⑤処理の呼び出し
①リクエストの受信
EventListener
ServiceController
業務オブジェクト
処理の結果
データ格納
EventResult
データ取得
ModelObject
ServiceResult
DAO (DAOIF)
DBアクセス
画面遷移
Transition
ServiceConfig
properties
ファイル
EventConfig
properties
ファイル
①リクエストの受信
ブラウザからのリクエスト要求をServiceControllerが受け取る。
⑤処理の呼び出し
イベント等を利用して業務オブジェクトを呼び出す。
②画面情報の格納
ServiceControllerはリクエストデータ(画面情報)をViewObject型でセッションに格納する。
⑥画面情報の参照
各業務処理はマッピング情報をもとにViewObjectから画面情報を取得して処理を
行う。
③値チェック
ViewObjectのチェックメソッドを呼び出し、画面情報の入力チェックを行う。
④値チェックエラー時
リクエスト元のJSPへ遷移する。
DataConfig
properties
ファイル
⑦DB処理要求
DAOはModelObjectよりデータを取得し、データベース処理を行う。
⑧レスポンスの返信
JSPからはJSPタグよりViewObjectを参照して画面表示を行う。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
3
4
3
3 作成アプリケーションの説明
作成アプリケーションの説明
簡 単 な 掲 示 板 ア プ リ ケ ー シ ョ ン を 題 材 に し て J2 EE ソ ー ス コ ー ド ジ ェ ネ レ ー タ を 利 用し
たアプリ ケ ーション を 作成して い きます。
掲示板ア プ リケーシ ョ ンの完成 し た画面は こ のように な ります。
アプリケーション動作画面
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
5
アプリケーション動作説明
記事の投稿(新規メッセージの登録) --------------------------------------画面上部 の 入力フォ ー ムに題名、本文、名前 等を入力 し 、「新規に 投稿」ボタ ンを押す と 、
画面下部 の 記事一覧 に 新しい記 事 として追 加 されます 。
新規投稿画面
新規投稿画面
入力フォーム
入力フォーム
新規投稿する
記事一覧
投稿記事への返信(返信メッセージの登録) --------------------------------投稿記事 の 下中央に あ る返信ボ タ ンを押す と 、画面が 返 信画面に 切 り替わり ま す。
新規投稿 画 面と返信 投 稿画面の 違 いは題名 が 入力でき な いこと、投 稿ボタン が 返信ボタン
になるこ と 、記事一 覧 には返信 元 の記事だ け が表示さ れ ることが 異 なります 。
ここで「 返 信する」ボ タンを押 す と、返信 元 の記事の 中 に返信記 事 として記 事 が追加され
ます。
新規投稿画面
返信投稿画面
入力フォーム
入力フォーム
返信元記事
返信する
返信元記事
返信記事
投稿記事の削除(メッセージの削除) --------------------------------------投稿記事 の 下中央に あ る削除ボ タ ンを押す と 、新規投稿 記事とそ れ に対する 返 信記事がす
べて削除 さ れます。
6
4
4 DAO ジェネレータによる作成
DAO ジェネレータによる作成
DAO ジェネレータは、データベ ー スの項目、検索条件 な どの情報 を 記述した Excel シート
を読み込 み 、DAO、DAOIF、ModelObject のコードを自動 生 成します 。
DAO シ ー ト の 構 成
(1) 更新履歴シート
Excel ファイルの更 新 履歴を入 力 します。
作成される java ファイルには反 映 されませ ん
(2) ファイル出力先定義シート
生成ファ イ ルの出力 先 を入力し ま す。
このシー ト の必須項 目 は必ず入 力 してくだ さ い。
(3) DAO/Model 定義シート
ModelObject、DAO、DAOIF ファイル を作成す る 際に、基 本 になるシ ー トです。
このシー ト の必須項 目 は必ず入 力 してくだ さ い。
(4) ModelObject 追加プロパティシート
ModelObject に新たな プロパテ ィ を追加し た い際に、 入 力します 。
(5) DAO/DAOIF 追加メソッド定義シート
DAO ファイルにメソ ッ ドを追加 し たい際に 、 入力しま す 。
1 セットの ModelObject、DAO、DAOIF ファイルを作成するには、「DAO/Model 定義」、「ModelObject
追加プロパティ」、「DAO/DAOIF 追加メソッド定義」シートの 3 シートが必要です。
追加プロパティ、追加メソッドが無い場合も空白のシートを用意してください。
複数セットの ModelObject、DAO、DAOIF ファイルを作成するには、3 シート×複数セットが必要
です。この場合、項目【ModelObject,DAO,DAOIF 名(*)】の入力が一致するシートが関連付けられ
ます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
7
DAO シ ー ト の 作 成
ファイル出力先定義シート ----------------------------------------------「ファイ ル 出力定義 」部分には 生 成ソース フ ァイルの 出 力パスを 入 力します 。このフォル
ダが無い 場 合は新た に フォルダ が 作成され ま す。
「DAO 定義」部分には データフ レ ームワー ク のプロパ テ ィファイ ル を生成す る ための情報
を入力し ま す。
A
○
B
○
D
○
C
○
G
○
E
○
8
F
○
H
○
I
○
4 DAO ジェネレータによる作成
A ModelObject、DAO、DAOIF ファイル出力先
○
ファイ ル を出力す る フォルダ を 指定しま す 。
フォルダ が無い場 合 は作成さ れ ます。
B
○
DataConfig_XXX.properties ファイル出力先
ファ イ ルを出力 す るフォル ダ を指定し ま す。
フォルダ が 無い場合 は 作成され ま す。
C ソースファイルの上書き/追記
○
生成す る DataConfig_XXX.properties ファイルを上 書 きするか 追 記するか を 指定しま
す。
一 つ の ア プ リ ケ ー シ ョ ン の DAO シー ト を 複 数 の ブ ッ ク に わ け て 作 成 し た と き な ど 追 記
に設定し ま す。
D アプリケーションID
○
アプリケ ー ションI D を指定し ま す。
DataConfig_XXX.properties のXXX部分な ど になりま す 。
E DAO キー
○
DAO を生成するとき の キーにな り ます。
F DAOクラス
○
DAOク ラ スを指定 し ます。
G
○
自動取得
「DAO/Model 定義シートから 」 DAOク ラ スを自動 的 に取得し ま す。
H DAOコネクタ
○
DAOコ ネ クタを指 定 します。
I コメント
○
DataConfig_XXX.properties ファイルに出力 さ れるコメ ン トを入力 し ます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
9
DAO/Model 定義シート ---------------------------------------------------DAO、ModelObject の基本情報や ModelObject が持つプ ロ パティを 設 定します 。
掲示板ア プ リケーシ ョ ンは下記 の テーブル 一 つで動作 し 、アクセ ス 方法も単 純 なため、テ
ーブル構 成 と ModelObject の構成が一致し ま す。
BBMESSAGE テ ー ブ ル
列名
内容
MESSAGEID
メ ッ セ ー ジ ID
PARENTID
親 メ ッ セ ー ジ ID
MESSAGESUBJECT
メッセージ
題名
MESSAGEDATE
メッセージ
発信日時
MESSAGEBODY
メッセージ
本文
MESSAGEFLAG
メッセージ
フラグ
USERNAME
発信者
USERPASSWORD
USEREMAIL
属性
データ型
サイズ
主キー
NUMBER 型
10
NUMBER 型
10
VARCHAR2 型
255
DATE 型
VARCHAR2 型
1500
CHAR 型
1
名前
VARCHAR2 型
255
発信者
パスワード
VARCHAR2 型
255
発信者
e-mail
VARCHAR2 型
255
USERHPNAME
発信者
ホームページ名
VARCHAR2 型
255
USERHPURL
発信者
ホ ー ム ペ ー ジ URL
VARCHAR2 型
255
USERAGE
発信者
年齢
NUMBER 型
3
USERSEX
発信者
性別
CHAR 型
1
USERFEEL
発信者
気分
CHAR 型
1
A
○
B
○
C
○
D
○
E
○
F
○
10
G
○
H
○
I ○
J
○
K
○
L
○
M
○
N
○
4 DAO ジェネレータによる作成
A ModelObject、DAO、DAOIF 名
○
こ の 名 称 の 後 に “ DAO” 、 “ DAOIF” が 付 加 さ れ て ク ラ ス 名 、 Java フ ァ イ ル 名 に な り
ます。
シートの 種類が違 い 、この名 称 が同じシ ー トが同じ グ ループと し て処理さ れ ます。
B
○
テーブル名
アク セ スするテ ー ブル名を 記 述します 。 ここでは BBMESSAGE です。
C パッケージ名
○
パッケ ー ジ名を指 定 します。
D モデルオブジェクトのクラスに対するコメント
○
モデ ル オブジェ ク トのクラ ス に対する コ メントを 入 力します 。
E sql(テーブル結合条件)
○
テーブル 結 合条件を S QLで指 定 します。
二 つ 以 上 の テ ー ブ ル を 結 合 し た 結 合 表 に ア ク セ ス す る DAO を 生 成 す る 場 合 に 使 用 し ま
す。
掲示板ア プ リケーシ ョ ンでは使 用 しません 。
F データ項目名
○
データ項 目 は ModelObject のプロパティと な り、項目名 はプロパ テ ィ名やメ ソ ッド名と
して使用 さ れます。 通 常はカラ ム 名を Java のネーミン グ に合わせ て 記述しま す 。
G
○
カラム名
カラ ム 名を入力 し ます。
掲示板ア プリケー シ ョンでは テ ーブルの 列 名をその ま ま記述し ま す。
H Oracle データ型
○
Oracle データ型を指 定 します。
掲示板ア プ リケーシ ョ ンではテ ー ブルのデ ー タ型をそ の まま記述 し ます。
I byte 数
○
テーブル 列 のサイズ を 指定しま す 。
掲示板ア プ リケーシ ョ ンではテ ー ブルのサ イ ズをその ま ま記述し ま す。
J 主キー
○
主キーの 項 目には”○”を指定し ま す。
掲示板ア プ リケーシ ョ ンでは MESSAGEID が主キーなの で ○を指定 し ます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
11
K
○
検索条件
検索 条 件を指定 し ます。
データを 抽 出するメ ソ ッドで LIKE 条件によ って抽出 条 件を指定 す るときに 使 用します。
掲示板ア プ リケーシ ョ ンでは使 用 しません 。
L Order
○
By
項目 別 に整列時 の 昇順か降 順 を Asc、Desc で指定し ます。
掲示板ア プリケー シ ョンでは 使 用しませ ん 。
M Order
○
By の優先順位
Order By の優先順 位を指定 し ます。
抽出した データリ ス トの整列 順 を指定し ま す。
例えば発 信 者順、日付 順で抽出 す るのであ れ ば、発 信者 の列に 1、日付の列に 2 を記述
します。
掲示板ア プ リケーシ ョ ンでは使 用 しません 。
N 各項目に対するコメント
○
コメント を 入力しま す 。
12
4 DAO ジェネレータによる作成
ModelObject 追加プロパティシート ---------------------------------------ModelObject にデータ 項目以外 の プロパテ ィ を持たせ た い場合に 記 述します 。
ModelObject にはプロ パティと プ ロパティ に 対する setter/getter が追加さ れ ます。
掲 示 板 ア プ リ ケ ー シ ョ ン は 使 用 し ま せ ん が DAO ジ ェ ネ レ ー タ の 動 作 に 必 要 な の で 、
ModelObject、DAO、DAOIF 名のみ入 力します 。
A
○
B
○
C
○
D
○
A ModelObject、DAO、DAOIF 名
○
DAO/Model 定義シートと同じ 名 称を記述 し ます。
B
○
プロパティ名
追加 し たいプロ パ ティ名を 記 述します 。
C Javaの型
○
プロ パ ティのク ラ ス型を記 述 します。
java.lang 以外の型 はフルパ ス で記述し て 下さい。
D 各プロパティに対するコメント
○
プロ パ ティに対 す るコメン ト を入力し ま す。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
13
DAO/DAOIF 追加メソッド定義シート ---------------------------------------DAO にある標準メソ ッ ド以外の メ ソッドを 追 加する場 合 に使用し ま す。
掲示板ア プ リケーシ ョ ンでは、 必 要な 6 つの メソッド を 追加して い ます。
ただし、 生 成される ソ ースコー ド はメソッ ド の定義の み で実装は 行 われませ ん 。
実際のロ ジ ックは生 成 ソースに 手 作業で記 述 する必要 が あります 。
A
○
B
○
C
○
D
○
E
○
A ModelObject、DAO、DAOIF 名
○
DAO/Model 定義シートと同じ 名 称を記述 し ます。
B
○
メソッド名
メソ ッ ド名を記 述 します。
C 返却値の型
○
返却 値 の型を記 述 します。
java.lang 以外はプ ルパスで 記 述します 。
D 引数リスト
○
引数 リ ストを指 定 します。
プログラ ムと同様 に 、 型 変 数名, 型 変数名・ ・ ・(繰り返し )
14
4 DAO ジェネレータによる作成
E 各メソッドに対するコメント
○
メソッド に 対するコ メ ントを入 力 します。
生成ソースコードにはこのように出力されます。
/**
* E
○ コメン ト
*/
public ○
C 返 却値の型 ○
B メ ソッド名 (○
D 引数リス ト ) { }
getChildMessages メソッ ドの 出力例
/**
*
指定ルートメッセージの子メッセージのリストを取得します。<BR>
*
*
@param rootMessageId Number 型
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public List getChildMessages(Number rootMessageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
return null;
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
15
DAO ソ ー ス コ ー ド の 生 成
(1) DAOGenerator を起動します。
(2) マクロを有効にするかどうか聞かれたら有効を選択します。
(3) ダイアログが表示されたら「実行ボタン」を押します。
デフォルトではマクロ終了時にソースコードを生成したフォルダをエクスプローラで開
きますが 、開きたく な い場合は 実 行ボタン を 押す前に「 マクロ終 了 時に出力 フ ォルダを開
く」チェ ッ クを外し て 下さい。
(4) 作成した DAO シートを選択して「開く」ボタンを押します。
(5) 終了メッセージが表示されたら「OK」ボタンを押して終了します。
正常に終了した場合は、出力先に指定したフォルダにソースコードが生成されています。
16
4 DAO ジェネレータによる作成
DAO ソ ー ス コ ー ド の 説 明
生成ファイルの出力先 --------------------------------------------------「ファイ ル 出力先定 義 」シート に 記述した「 ファイル 出 力先」フ ォ ルダにフ ァ イルが生成
されます 。
Java ソースコードは「ModelObject、DAO、DAOIF ファイル 出力先 」フ ォルダ配 下 にさらに
パッケー ジ のフォル ダ 階層が作 成 され、次 の ファイル が 生成され ま す。
(1) ModelObject、DAO、DAOIF ソースコードの出力先
「 ModelObject、 DAO、 DAOIF フ ァ イ ル 出 力 先 」 + 「 パ ッ ケ ー ジ の フ ォ ル ダ 階 層 」 配 下 の 、
”model/data/“+「ModelObject,DAO,DAOIF 名」+”DAO.java”
”model/data/”+ 「ModelObject,DAO,DAOIF 名」+”DAOIF.java”
”model/object/”+「ModelObject,DAO,DAOIF 名」+”ModelObject.java”
「DAO/Model 定義」シー トの「sql(テーブル 結 合条件)」を 使用して い る場合は 、DAO、DAOIF
ファイル 名 に"Query"がつきます 。
シートが 複 数セット あ る場合は 、 セット数 分 のファイ ル が作成さ れ ます。
(2) DataConfig_XXX.properties ファイルの出力先
「DataConfig_XXX.properties ファイル出力 先 」フォル ダ 配下の、
“DataConfig_”+「アプ リケーシ ョ ン ID」+”.properties”
掲示板アプリケーションの DAO シートからはこのように出力されます。
「ModelObject、DAO、DAOIF ファイル出力先 」 → “c:\work\BBPage\src”
「DataConfig_XXX.properties ファイル出力 先 」 → “c:\work\BBPage\properties”
「ModelObject,DAO,DAOIF 名」 → “BBMessage”
「パッケ ー ジ名」 → “imsg.sample.BBPage”
「アプリ ケ ーション ID」 → “BBPage”
[BBPage]
├ [properties]
│
└ DataConfig_BBPage.properties
└ [src]
└ [imsg]
└ [sample]
└ [BBPage]
└ [model]
├ [data]
│
├ BBMessageDAO.java
│
└ BBMessageDAOIF.java
└ [object]
└ BBMessageModelObject.java
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
17
掲示板アプリケーションの生成ファイル ----------------------------------掲示板ア プ リケーシ ョ ンの DAO シートから 生 成された ソ ースファ イ ルが「ファ イル出力先
定義」シ ー トに記述 し た「ファ イ ル出力先 」 フォルダ に 生成され ま す。
Java ソースコードは「ModelObject、DAO、DAOIF ファイル 出力先 」フ ォルダ配 下 にさらに
パッケー ジ のフォル ダ 階層が作 成 され、次 の ファイル が 生成され ま す。
(1)BBMessageDAO.java
DB アクセスを行います。
登録の場合は、ModelObject よりオブジ ェ クトを受 け 取り、DB に処理を行 い ます。
データ取得の場合は、DB からデータを取得し、ModelObject にデータを渡 し ます。
(2)BBMessageDAOIF.java
DAO に実装されてい る メソッド の インタフ ェ ースです 。
(3)BBMessageModelObject.java
DB と同じ構造のオブジェクトです。
マッピン グ クラスで 変 換された 画 面情報、DB の情報を 格 納します 。
(4)DataConfig_BBPage.properties
DAO クラス、DAO コネクターの設定ファイルです。
BBMessageModelObject
データ格納
データ取得
BBMesssageDAO(DAOIF)
DB
18
4 DAO ジェネレータによる作成
(1) BBMessageDAO.java
javadoc より
メソッドの概要
BBMessageModelObject create(java.lang.String messageId)
主 キ ー か ら BBMessageModelObject を 作 成 し ま す 。 投 稿 、
返信、削除時に呼ばれます。
java.util.List createList()
条 件 指 定 な し で ク エ リ ー を 実 行 し 、 List を 作 成 し ま す 。
メッセージの画面表示、返信の際に呼ばれます。
java.util.List createListByWhere(java.lang.String where)
where 句 を 指 定 し て ク エ リ ー を 実 行 し 、 List を 作 成 し ま
す。メッセージの画面表示、返信の際に呼ばれます。
java.util.Map createMap()
条 件 指 定 な し で ク エ リ ー を 実 行 し 、 Map を 作 成 し ま す 。
void delete(BBMessageModelObject modelObject)
BBMessageModelObject を 引 数 に も ら っ て delete 処 理 を
行います。
void deleteByWhere(java.lang.String where)
where 文 を も ら っ て delete 処 理 を 行 い ま す 。
double entry(BBMessageModelObject modelObj)
ID を 自 動 生 成 し 、 新 規 メ ッ セ ー ジ を 登 録 し ま す 。 投 稿 、
返信の際に呼ばれます。
void eraseMessage(java.lang.Number messageId)
指 定 ID を 持 つ メ ッ セ ー ジ を 削 除 (フ ラ グ セ ッ ト )し ま す 。
削除の際に呼ばれます。
java.util.List getChildMessages(java.lang.Number root MessageId)
指定ルートメッセージの子メッセージのリストを取得し
ます。メッセージの画面表示の際に呼ばれます。
int getCountByWhere(java.lang.String where)
指定条件よりレコード件数を取得します。
double getMaxMessageId()
現 在 登 録 さ れ て い る メ ッ セ ー ジ の う ち 最 大 の MessageID
を 返 し ま す 。 投 稿 、 返 信 の 際 に 、 MessageID が 重 複 し な い 様 、 最
大 の MessageID を 取 得 し ま す 。
java.util.List getRootMessages()
ルートメッセージのリストを取得します。返信の際に呼
ばれます。
java.util.List getRootMessages(java.lang.Number messageId)
指 定 I D を 持 つ ル ー ト メ ッ セ ー ジ リ ス ト を 取 得 し ま す 。返
信の際に呼ばれます。
void insert(BBMessageModelObject modelObject)
BBMessageModelObject を 引 数 に も ら っ て Insert 処 理 を
行います。投稿、返信の際に呼ばれます。
java.lang.String sqlString(java.lang.Object input, java.lang.String quote)
対象オブジェクトを文字列として評価し、改行を取り除
き 、ク オ ー テ ー シ ョ ン が 適 切 に 行 わ れ た 文 字 列 を 返 し ま す 。投 稿 、
返 信 、 削 除 時 な ど 、 sql 文 が 使 用 さ れ る 際 に 呼 ば れ ま す 。
void update(BBMessageModelObject modelObject)
BBMessageModelObject を 引 数 に も ら っ て Update 処 理 を
行います。削除時に削除フラグをセットする際に呼ばれます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
19
/*
* BBMessageDAO.java
*
* Created on 2003/08/16, 13:52
*/
package imsg.sample.BBPage.model.data;
import java.io.Serializable;
import java.util.*;
import jp.co.intra_mart.framework.tools.sourcegenerator.util.StringCompilation;
import java.text.SimpleDateFormat;
import java.math.BigDecimal;
import java.sql.SQLException;
import jp.co.intra_mart.foundation.database.DbsConnection;
import jp.co.intra_mart.framework.base.data.IntramartDBDAO;
import jp.co.intra_mart.framework.base.data.DataAccessException;
import jp.co.intra_mart.framework.base.data.DataConnectException;
import jp.co.intra_mart.framework.base.data.DataPropertyException;
import jp.co.intra_mart.framework.system.exception.SystemException;
import jp.co.intra_mart.framework.tools.sourcegenerator.model.ItemCodeDuplicationException;
import jp.co.intra_mart.framework.tools.sourcegenerator.model.ItemNotExistException;
import imsg.sample.BBPage.model.object.BBMessageModelObject;
/**
*
Intramart の DB 接続情報を利用した、BBMESSAGE テーブル操作用の DAO です。<BR><BR>
*
*
@since 2003/8/16
*/
public class BBMessageDAO extends IntramartDBDAO implements BBMessageDAOIF{
/**
*
主キーから BBMessageModelObject を作成します。<BR><BR>
*
*
@param messageId BBMESSAGE テーブルの主キー MESSAGEID
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject のインスタンス
*/
public BBMessageModelObject create(String messageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
//各変数の初期化
DbsConnection conn = null;
String sql = "";
List list = null;
Hashtable hash = null;
//DbsConnection の取得
conn = getConnection();
//sql の作成
sql = "SELECT * FROM BBMESSAGE WHERE \"MESSAGEID\" = " + sqlString(messageId,"");
//select 処理
try{
long before = System.currentTimeMillis();
20
4 DAO ジェネレータによる作成
list = conn.select(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
//DB から取得できたかをチェック
//取得できなかったときは null を返す
try{
hash = (Hashtable)list.get(0);
}catch(IndexOutOfBoundsException ex){
return null;
}
return create(hash);
P26
参照
}
/**
*
条件指定なしでクエリーを実行し、List を作成します。<BR>
*
検索結果が無いときは要素 0 の List を返します。<BR><BR>
*
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject の List
*/
public List createList()
throws DataConnectException, DataAccessException, DataPropertyException
{
//sql の作成
String sql = "SELECT * FROM BBMESSAGE";
return createList(sql);
P28
参照
}
/**
*
where 句を指定してクエリーを実行し、List を作成します。<BR>
*
条件は引数で与える String の中に格納しておきます。<BR>
*
検索結果が無いときは要素 0 の List を返します。<BR><BR>
*
検索の仕方は BBPageDAOSheet.xls の DAO・Model 定義に記述されています。<BR><BR>
*
*
@param where 検索条件。SQL の where 句に指定する文字列(先頭に'where'は不要)。
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject の List
*/
public List createListByWhere(String where)
throws DataConnectException, DataAccessException, DataPropertyException
{
//sql の作成
String sql = "SELECT * FROM BBMESSAGE";
if (!(where == null || where.equals(""))){
sql = sql + " WHERE " + where;
}
return createList(sql);
P28
参照
}
/**
*
条件指定なしでクエリーを実行し、Map を作成します。<BR>
*
検索結果が無いときは要素 0 の Map を返します。<BR><BR>
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
21
*
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject の Map
*/
public Map createMap()
throws DataConnectException, DataAccessException, DataPropertyException
{
//sql の作成
String sql = "SELECT * FROM BBMESSAGE";
return createMap(sql,null);
P29
参照
}
/**
*
BBMessageModelObject を引数にもらって delete 処理を行います。<BR><BR>
*
*
@param modelObject Delete したい BBMessageModelObject
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void delete(BBMessageModelObject modelObject)
throws DataConnectException, DataAccessException, DataPropertyException
{
delete(modelObject.getKey());
P22
参照
}
/**
*
BBMessageModelObject のキーを引数にもらって delete 処理を行います。<BR><BR>
*
*
@param key Delete したい BBMessageModelObject のキー
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void delete(Object key)
throws DataConnectException, DataAccessException, DataPropertyException
{
//DbsConnection の取得
DbsConnection conn = getConnection();
//sql
String sql = "delete BBMESSAGE ";
//Where 句の作成
StringTokenizer st = new StringTokenizer(key.toString() , BBMessageModelObject.DELIMITER);
String where = " WHERE ";
where += "\"MESSAGEID\" = " + sqlString(st.nextToken(),"");
sql += where;
//削除処理
try{
long before = System.currentTimeMillis();
conn.execute(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
}
22
4 DAO ジェネレータによる作成
/**
*
where 文をもらって delete 処理を行います。<BR><BR>
*
*
@param where 削除条件
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void deleteByWhere(String where)
throws DataConnectException, DataAccessException, DataPropertyException
{
String sql = "delete BBMESSAGE ";
if(!where.equals("")){
//sql 文作成
sql += " where " + where;
DbsConnection conn = getConnection();
try{
long before = System.currentTimeMillis();
conn.execute(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
}
}
/**
*
BBMessageModelObject を引数にもらって Insert 処理を行います。<BR><BR>
*
*
@param modelObject Insert したい BBMessageModelObject
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void insert(BBMessageModelObject modelObject)
throws DataConnectException, DataAccessException, DataPropertyException
{
//登録しようとしている商品コードが既に存在するかチェック
BBMessageModelObject obj = null;
try{
obj = create(modelObject.getMessageId().toString());
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
//登録しようとしている商品コードが既に登録されていた場合の処理
if(obj != null){
ItemCodeDuplicationException e = new ItemCodeDuplicationException();
//重複していたコードを格納
e.setCode(modelObject.getKey().toString());
throw e;
}
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
String sql = "insert into ";
sql += "BBMESSAGE (";
sql +=
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
23
"\"MESSAGEID\","+
"\"PARENTID\","+
"\"MESSAGESUBJECT\","+
"\"MESSAGEDATE\","+
"\"MESSAGEBODY\","+
"\"MESSAGEFLAG\","+
"\"USERNAME\","+
"\"USERPASSWORD\","+
"\"USEREMAIL\","+
"\"USERHPNAME\","+
"\"USERHPURL\","+
"\"USERAGE\","+
"\"USERSEX\","+
"\"USERFEEL\") ";
sql += "values (";
sql +=
sqlString( modelObject.getMessageId() ,"" ) + "," +
sqlString( modelObject.getParentId() ,"" ) + "," +
sqlString( modelObject.getMessageSubject() , "'" ) + "," +
"to_date('"+ format.format(modelObject.getMessageDate())+"','yyyy/MM/dd hh24:mi:ss')" + ","
+
sqlString( modelObject.getMessageBody() , "'" ) + "," +
sqlString( modelObject.getMessageFlag() , "'" ) + "," +
sqlString( modelObject.getUserName() , "'" ) + "," +
sqlString( modelObject.getUserPassword() , "'" ) + "," +
sqlString( modelObject.getUserEmail() , "'" ) + "," +
sqlString( modelObject.getUserHpName() , "'" ) + "," +
sqlString( modelObject.getUserHpUrl() , "'" ) + "," +
sqlString( modelObject.getUserAge() ,"" ) + "," +
sqlString( modelObject.getUserSex() , "'" ) + "," +
sqlString( modelObject.getUserFeel() , "'" )+")";
DbsConnection conn = getConnection();
//insert 処理
try{
long before = System.currentTimeMillis();
conn.execute(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
}
/**
*
BBMessageModelObject を引数にもらって Update 処理を行います。<BR><BR>
*
*
@param modelObject Update したい BBMessageModelObject
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void update(BBMessageModelObject modelObject)
throws DataConnectException, DataAccessException, DataPropertyException
{
//登録しようとしている商品コードが既に存在するかチェック
BBMessageModelObject obj = null;
try{
obj = create(modelObject.getMessageId().toString());
24
4 DAO ジェネレータによる作成
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
//更新しようとしているデータが削除されているとき
if(obj == null){
ItemNotExistException e = new ItemNotExistException();
//削除されていたコードを格納
e.setCode(modelObject.getKey().toString());
throw e;
}
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
String sql = "update BBMESSAGE set ";
String set = "";
if(modelObject.getMessageId() != null){
set +=" \"MESSAGEID\"=";
set += sqlString( modelObject.getMessageId() ,"");
set += " ,";
}
if(modelObject.getParentId() != null){
set +=" \"PARENTID\"=";
set += sqlString( modelObject.getParentId() ,"");
set += " ,";
}
if(modelObject.getMessageSubject() != null){
set +=" \"MESSAGESUBJECT\"=";
set += sqlString( modelObject.getMessageSubject() ,"'");
set += " ,";
}
if(modelObject.getMessageDate() != null){
set +=" \"MESSAGEDATE\"=";
set += "to_date('"+format.format(modelObject.getMessageDate())+"','yyyy/MM/dd hh24:mi:ss')";
set += " ,";
}
if(modelObject.getMessageBody() != null){
set +=" \"MESSAGEBODY\"=";
set += sqlString( modelObject.getMessageBody() ,"'");
set += " ,";
}
if(modelObject.getMessageFlag() != null){
set +=" \"MESSAGEFLAG\"=";
set += sqlString( modelObject.getMessageFlag() ,"'");
set += " ,";
}
if(modelObject.getUserName() != null){
set +=" \"USERNAME\"=";
set += sqlString( modelObject.getUserName() ,"'");
set += " ,";
}
if(modelObject.getUserPassword() != null){
set +=" \"USERPASSWORD\"=";
set += sqlString( modelObject.getUserPassword() ,"'");
set += " ,";
}
if(modelObject.getUserEmail() != null){
set +=" \"USEREMAIL\"=";
set += sqlString( modelObject.getUserEmail() ,"'");
set += " ,";
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
25
}
if(modelObject.getUserHpName() != null){
set +=" \"USERHPNAME\"=";
set += sqlString( modelObject.getUserHpName() ,"'");
set += " ,";
}
if(modelObject.getUserHpUrl() != null){
set +=" \"USERHPURL\"=";
set += sqlString( modelObject.getUserHpUrl() ,"'");
set += " ,";
}
if(modelObject.getUserAge() != null){
set +=" \"USERAGE\"=";
set += sqlString( modelObject.getUserAge() ,"");
set += " ,";
}
if(modelObject.getUserSex() != null){
set +=" \"USERSEX\"=";
set += sqlString( modelObject.getUserSex() ,"'");
set += " ,";
}
if(modelObject.getUserFeel() != null){
set +=" \"USERFEEL\"=";
set += sqlString( modelObject.getUserFeel() ,"'");
}
if(set.equals("")){
return;
}else{
if(set.substring(set.length()-1).equals(",")){
set = set.substring(0,set.length()-1);
}
//Where 句の作成
StringTokenizer st = new StringTokenizer(modelObject.getKey().toString() ,
BBMessageModelObject.DELIMITER);
String where = "";
where += "\"MESSAGEID\" = " + sqlString(st.nextToken(),"");
sql += set + " WHERE " + where;
//DbsConnection の取得
DbsConnection conn = getConnection();
//update 処理
try{
long before = System.currentTimeMillis();
conn.execute(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
}
}
/**
*
Hashtable からモデルオブジェクトを作成します。<BR><BR>
*
*
@param hash DB への問い合わせ結果
*
@return 作ったモデルオブジェクト
*/
private BBMessageModelObject create(Hashtable hash){
26
4 DAO ジェネレータによる作成
BBMessageModelObject modelObject = new BBMessageModelObject();
if(hash.containsKey("messageid")){
modelObject.setMessageId(String.valueOf(((Double)hash.get("messageid")).longValue()));
}
else{
modelObject.setMessageId((BigDecimal)null);
}
if(hash.containsKey("parentid")){
modelObject.setParentId(String.valueOf(((Double)hash.get("parentid")).longValue()));
}
else{
modelObject.setParentId((BigDecimal)null);
}
if(hash.containsKey("messagesubject")){
modelObject.setMessageSubject((String)hash.get("messagesubject"));
}
else{
modelObject.setMessageSubject(null);
}
if(hash.containsKey("messagedate")){
modelObject.setMessageDate((Date)hash.get("messagedate"));
}
else{
modelObject.setMessageDate((Date)null);
}
if(hash.containsKey("messagebody")){
modelObject.setMessageBody((String)hash.get("messagebody"));
}
else{
modelObject.setMessageBody(null);
}
if(hash.containsKey("messageflag")){
modelObject.setMessageFlag((String)hash.get("messageflag"));
}
else{
modelObject.setMessageFlag(null);
}
if(hash.containsKey("username")){
modelObject.setUserName((String)hash.get("username"));
}
else{
modelObject.setUserName(null);
}
if(hash.containsKey("userpassword")){
modelObject.setUserPassword((String)hash.get("userpassword"));
}
else{
modelObject.setUserPassword(null);
}
if(hash.containsKey("useremail")){
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
27
modelObject.setUserEmail((String)hash.get("useremail"));
}
else{
modelObject.setUserEmail(null);
}
if(hash.containsKey("userhpname")){
modelObject.setUserHpName((String)hash.get("userhpname"));
}
else{
modelObject.setUserHpName(null);
}
if(hash.containsKey("userhpurl")){
modelObject.setUserHpUrl((String)hash.get("userhpurl"));
}
else{
modelObject.setUserHpUrl(null);
}
if(hash.containsKey("userage")){
modelObject.setUserAge(String.valueOf(((Double)hash.get("userage")).longValue()));
}
else{
modelObject.setUserAge((BigDecimal)null);
}
if(hash.containsKey("usersex")){
modelObject.setUserSex((String)hash.get("usersex"));
}
else{
modelObject.setUserSex(null);
}
if(hash.containsKey("userfeel")){
modelObject.setUserFeel((String)hash.get("userfeel"));
}
else{
modelObject.setUserFeel(null);
}
return modelObject;
}
/**
*
与えられた SQL でクエリーをかけ BBMessageModelObject の List を作成します。<BR><BR>
*
*
@param sql
*
@throws DataConnectException データ接続に関連する例外が発生
SQL
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return
BBMessageModelObject の List
*/
private List createList(String sql)
throws DataConnectException, DataAccessException, DataPropertyException{
//各変数の初期化
DbsConnection conn = null;
List list = null;
List resultList = null;
28
4 DAO ジェネレータによる作成
Hashtable hash = null;
//DbsConnection の取得
conn = getConnection();
try{
long before = System.currentTimeMillis();
list = conn.select(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
int size = list.size();
resultList = new ArrayList(size);
for(int i=0;i < size;i++){
BBMessageModelObject modelObject = create((Hashtable)list.get(i));
resultList.add(modelObject);
}
return resultList;
}
/**
*
与えられた SQL でクエリーをかけ BBMessageModelObject の Map を作成します。<BR><BR>
*
*
@param sql
*
@param keyList [out]検索結果の順番を保存するため BBMessageModelObject のキーを保存。null の時は使
SQL
わない
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return
BBMessageModelObject の Map
*/
private Map createMap(String sql,List keyList)
throws DataConnectException, DataAccessException, DataPropertyException{
//各変数の初期化
DbsConnection conn = null;
List list = null;
Map resultMap = null;
Hashtable hash = null;
if(keyList != null)
keyList.clear();
//DbsConnection の取得
conn = getConnection();
try{
long before = System.currentTimeMillis();
list = conn.select(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
int size = list.size();
resultMap = new HashMap(size);
for(int i=0;i < size;i++){
BBMessageModelObject modelObject = create((Hashtable)list.get(i));
if(keyList != null)
keyList.add(modelObject.getKey());
resultMap.put(modelObject.getKey(),modelObject);
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
29
}
return resultMap;
}
/**
*
指定条件よりレコード件数を取得します。<BR>
*
条件パラメータは「where」文字を入れないようにセットします。<BR><BR>
*
*
@param where 検索条件(「where」入れない)
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return 件数
*/
public int getCountByWhere(String where)
throws DataConnectException, DataAccessException, DataPropertyException
{
//変数初期化
int count = 0;
DbsConnection conn = null;
//DbsConnection の取得
conn = getConnection();
//件数取得
try{
count = conn.getCount("BBMESSAGE", where);
}catch(SQLException e){
throw new DataAccessException(e.getMessage(),e);
}
return count;
}
/**
*
対象オブジェクトを文字列として評価し、改行を取り除き、クオーテーションが適切に行われた文字列を
返します。<BR><BR>
*
*
@param input 対象オブジェクト
*
@param quote クオーテーション指定
*
@return SQL 用文字列(input が null でなければ、quote+文字列+quote の文字列)
*/
public String sqlString( Object input , String quote){
return ( input != null )? quote + StringCompilation.prepareSql(""+input) + quote : "NULL";
}
/**
*
ルートメッセージのリストを取得します。<BR>
*
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public List getRootMessages()
throws DataConnectException, DataAccessException, DataPropertyException
{
return null;
}
30
4 DAO ジェネレータによる作成
/**
*
指定 ID を持つルートメッセージリストを取得します。<BR>
*
*
@param messageId Number 型
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public List getRootMessages(Number messageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
return null;
}
/**
*
指定ルートメッセージの子メッセージのリストを取得します。<BR>
*
*
@param rootMessageId Number 型
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public List getChildMessages(Number rootMessageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
return null;
}
/**
*
ID を自動生成し、新規メッセージを登録します。<BR>
*
*
@param modelObj BBMessageModelObject 型
*
@return double 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public double entry(BBMessageModelObject modelObj)
throws DataConnectException, DataAccessException, DataPropertyException
{
return 0;
}
/**
*
現在登録されているメッセージのうち最大の MessageID を返します。<BR>
*
*
@return double 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public double getMaxMessageId()
throws DataConnectException, DataAccessException, DataPropertyException
{
return 0;
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
31
/**
*
指定 ID を持つメッセージを削除(フラグセット)します。<BR>
*
*
@param messageId Number 型
*
@return void 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void eraseMessage(Number messageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
}
}
32
4 DAO ジェネレータによる作成
(2) BBMessageDAOIF.java
生成され る メソッドは DAO と同様です。
/*
* BBMessageDAOIF.java
*
* Created on 2003/08/16, 13:52
*/
package imsg.sample.BBPage.model.data;
import java.sql.*;
import java.util.*;
import java.math.BigDecimal;
import imsg.sample.BBPage.model.object.BBMessageModelObject;
import jp.co.intra_mart.framework.base.data.DataAccessException;
import jp.co.intra_mart.framework.base.data.DataConnectException;
import jp.co.intra_mart.framework.base.data.DataPropertyException;
/**
*
BBMESSAGE テーブル操作用 DAO のインターフェースです。<BR><BR>
*
*
@author -
*
@since 2003/8/16
*/
public interface BBMessageDAOIF{
/**
*
主キーから BBMessageModelObject を作成します。<BR><BR>
*
*
@param messageId BBMESSAGE テーブルの主キー MESSAGEID
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject のインスタンス
*/
public BBMessageModelObject create(String messageId)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
条件指定なしでクエリーを実行し、List を作成します。<BR>
*
検索結果が無いときは要素 0 の List を返します。<BR><BR>
*
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject の List
*/
public List createList()
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
where 句を指定してクエリーを実行し、List を作成します。<BR>
*
条件は引数で与える String の中に格納しておきます。<BR>
*
検索結果が無いときは要素 0 の List を返します。<BR><BR>
*
検索の仕方は BBPageDAOSheet.xls の DAO・Model 定義に記述されています。<BR><BR>
*
*
@param where 検索条件。SQL の where 句に指定する文字列(先頭に'where'は不要)。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
33
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject の List
*/
public List createListByWhere(String where)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
条件指定なしでクエリーを実行し、Map を作成します。<BR>
*
検索結果が無いときは要素 0 の Map を返します。<BR><BR>
*
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return BBMessageModelObject の Map
*/
public Map createMap()
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
BBMessageModelObject を引数にもらって delete 処理を行います。<BR><BR>
*
*
@param modelObject Delete したい BBMessageModelObject
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void delete(BBMessageModelObject modelObject)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
BBMessageModelObject のキーを引数にもらって delete 処理を行います。<BR><BR>
*
*
@param key Delete したい BBMessageModelObject のキー
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void delete(Object key)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
where 文をもらって delete 処理を行います。<BR><BR>
*
*
@param where 削除条件
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void deleteByWhere(String where)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
BBMessageModelObject を引数にもらって Insert 処理を行います。<BR><BR>
*
34
*
@param modelObject Insert したい BBMessageModelObject
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
4 DAO ジェネレータによる作成
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void insert(BBMessageModelObject modelObject)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
BBMessageModelObject を引数にもらって Update 処理を行います。<BR><BR>
*
*
@param modelObject Update したい BBMessageModelObject
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void update(BBMessageModelObject modelObject)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
指定条件よりレコード件数を取得します。<BR>
*
条件パラメータは「where」文字を入れないようにセットします。<BR><BR>
*
*
@param where 検索条件(「where」入れない)
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*
@return 件数
*/
public int getCountByWhere(String where)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
ルートメッセージのリストを取得します。<BR>
*
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public List getRootMessages()
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
指定 ID を持つルートメッセージリストを取得します。<BR>
*
*
@param messageId Number 型
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public List getRootMessages(Number messageId)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
指定ルートメッセージの子メッセージのリストを取得します。<BR>
*
*
@param rootMessageId Number 型
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
35
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public List getChildMessages(Number rootMessageId)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
ID を自動生成し、新規メッセージを登録します。<BR>
*
*
@param modelObj BBMessageModelObject 型
*
@return double 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public double entry(BBMessageModelObject modelObj)
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
現在登録されているメッセージのうち最大の MessageID を返します。<BR>
*
*
@return double 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public double getMaxMessageId()
throws DataConnectException, DataAccessException, DataPropertyException;
/**
*
指定 ID を持つメッセージを削除(フラグセット)します。<BR>
*
*
@param messageId Number 型
*
@return void 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void eraseMessage(Number messageId)
throws DataConnectException, DataAccessException, DataPropertyException;
}
36
4 DAO ジェネレータによる作成
(3) BBMessageModelObject.java
javadoc より
メソッドの概要
ModelObject createInstance()
BBMessageModelObject の イ ン ス タ ン ス を 返 し ま す 。
java.lang.Object getKey()
B e a n を マ ッ ピ ン グ す る と き に 使 う キ ー を 返 し ま す 。登 録 、
返信、削除の際に呼ばれます。
java.lang.String getMessageBody()
MESSAGEBODY を 取 得 し ま す 。
java.util.Date getMessageDate()
MESSAGEDATE を 取 得 し ま す 。
java.lang.String getMessageFlag()
MESSAGEFLAG を 取 得 し ま す 。
java.math.BigDecimal getMessageId()
MESSAGEID を 取 得 し ま す 。
java.lang.String getMessageSubject()
MESSAGESUBJECT を 取 得 し ま す 。
java.math.BigDecimal getParentId()
PARENTID を 取 得 し ま す 。
java.math.BigDecimal getUserAge()
USERAGE を 取 得 し ま す 。
java.lang.String getUserEmail()
USEREMAIL を 取 得 し ま す 。
java.lang.String getUserFeel()
USERFEEL を 取 得 し ま す 。
java.lang.String getUserHpName()
USERHPNAME を 取 得 し ま す 。
java.lang.String getUserHpUrl()
USERHPURL を 取 得 し ま す 。
java.lang.String getUserName()
USERNAME を 取 得 し ま す 。
java.lang.String getUserPassword()
USERPASSWORD を 取 得 し ま す 。
java.lang.String getUserSex()
USERSEX を 取 得 し ま す 。
void setFieldMap()
BBMessageModelObject の 対 象 テ ー ブ ル の カ ラ ム マ ッ プ に
オブジェクトメンバーをセットします。
void setMessageBody(java.lang.String messageBody)
MESSAGEBODY を セ ッ ト し ま す 。
void setMessageDate(java.util.Date messageDate)
MESSAGEDATE を セ ッ ト し ま す 。
void setMessageFlag(java.lang.String messageFlag)
MESSAGEFLAG を セ ッ ト し ま す 。
void setMessageId(java.math.BigDecimal messageId)
MESSAGEID を セ ッ ト し ま す 。
void setMessageId(java.lang.String messageId)
MESSAGEID を セ ッ ト し ま す 。
void setMessageSubject(java.lang.String messageSubject)
MESSAGESUBJECT を セ ッ ト し ま す 。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
37
void setModelName()
BBMessageModelObject の モ デ ル オ ブ ジ ェ ク ト 名 を セ ッ ト
します。
void setParentId(java.math.BigDecimal parentId)
PARENTID を セ ッ ト し ま す 。
void setParentId(java.lang.String parentId)
PARENTID を セ ッ ト し ま す 。
void setPkMap()
BBMessageModelObject
Map に セ ッ ト し ま す 。
の 対 象 テ ー ブ ル の 主 キ ー 情 報 を
void setTableName()
BBMessageModelObject
す。
の 対 象 テ ー ブ ル 名 を セ ッ ト し ま
void setUserAge(java.math.BigDecimal userAge)
USERAGE を セ ッ ト し ま す 。
void setUserAge(java.lang.String userAge)
USERAGE を セ ッ ト し ま す 。
void setUserEmail(java.lang.String userEmail)
USEREMAIL を セ ッ ト し ま す 。
void setUserFeel(java.lang.String userFeel)
USERFEEL を セ ッ ト し ま す 。
void setUserHpName(java.lang.String userHpName)
USERHPNAME を セ ッ ト し ま す 。
void setUserHpUrl(java.lang.String userHpUrl)
USERHPURL を セ ッ ト し ま す 。
void setUserName(java.lang.String userName)
USERNAME を セ ッ ト し ま す 。
void setUserPassword(java.lang.String userPassword)
USERPASSWORD を セ ッ ト し ま す 。
void setUserSex(java.lang.String userSex)
USERSEX を セ ッ ト し ま す 。
38
4 DAO ジェネレータによる作成
/*
* BBMessageModelObject.java
*
* Created on 2003/08/15, 13:59
*/
package imsg.sample.BBPage.model.object;
import java.util.Date;
import java.math.BigDecimal;
import java.io.Serializable;
import jp.co.intra_mart.framework.tools.sourcegenerator.model.ModelObject;
import jp.co.intra_mart.framework.tools.sourcegenerator.model.ModelObjectIF;
/**
*
掲示板のサンプルアプリケーションです。<BR><BR>
*
*
@author -
*
@since 2003/8/15
*/
public class BBMessageModelObject extends ModelObject implements Serializable,ModelObjectIF{
/**
複合キーを連結するための DELIMITER です。
*/
public static final String DELIMITER = "|";
フィールドを取得するメソッド
//messageId
SourceGenerator パ ッ ケ ー ジ の ModelObject
/**
ク ラ ス の getField メ ソ ッ ド
*
MESSAGEID の Getter です。<BR><BR>
*
@return このインスタンスの MESSAGEID
*/
public BigDecimal getMessageId(){
return (BigDecimal)getField("MESSAGEID");
}
/**
*
MESSAGEID の Setter です。<BR><BR>
*
@param messageId このインスタンスの MESSAGEID にセットしたい値
*/
public void setMessageId(BigDecimal messageId){
fieldMap.put(tableName+"."+"MESSAGEID",messageId);
}
フィールド
取得・設定
メソッド
/**
*
MESSAGEID の Setter です。(文字列インタフェースを用意する)<BR><BR>
*
@param messageId このインスタンスの MESSAGEID にセットしたい値
*/
public void setMessageId(String messageId){
fieldMap.put(tableName+"."+"MESSAGEID",getBigDecimalVal(messageId));
}
//parentId
/**
*
PARENTID の Getter です。<BR><BR>
*
@return このインスタンスの PARENTID
*/
public BigDecimal getParentId(){
return (BigDecimal)getField("PARENTID");
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
39
}
/**
*
PARENTID の Setter です。<BR><BR>
*
@param parentId このインスタンスの PARENTID にセットしたい値
*/
public void setParentId(BigDecimal parentId){
fieldMap.put(tableName+"."+"PARENTID",parentId);
}
/**
*
PARENTID の Setter です。(文字列インタフェースを用意する)<BR><BR>
*
@param parentId このインスタンスの PARENTID にセットしたい値
*/
public void setParentId(String parentId){
fieldMap.put(tableName+"."+"PARENTID",getBigDecimalVal(parentId));
}
//messageSubject
/**
*
MESSAGESUBJECT の Getter です。<BR><BR>
*
@return このインスタンスの MESSAGESUBJECT
*/
public String getMessageSubject(){
return (String)getField("MESSAGESUBJECT");
}
/**
フィールド
*
MESSAGESUBJECT の Setter です。<BR><BR>
*
@param messageSubject このインスタンスの MESSAGESUBJECT にセットしたい値
*/
public void setMessageSubject(String messageSubject){
fieldMap.put(tableName+"."+"MESSAGESUBJECT",messageSubject);
}
//messageDate
/**
*
MESSAGEDATE の Getter です。<BR><BR>
*
@return このインスタンスの MESSAGEDATE
*/
public Date getMessageDate(){
return (Date)getField("MESSAGEDATE");
}
/**
*
MESSAGEDATE の Setter です。<BR><BR>
*
@param messageDate このインスタンスの MESSAGEDATE にセットしたい値
*/
public void setMessageDate(Date messageDate){
fieldMap.put(tableName+"."+"MESSAGEDATE",messageDate);
}
//messageBody
/**
*
MESSAGEBODY の Getter です。<BR><BR>
*
@return このインスタンスの MESSAGEBODY
*/
public String getMessageBody(){
return (String)getField("MESSAGEBODY");
}
/**
*
40
MESSAGEBODY の Setter です。<BR><BR>
取得・設定
メソッド
4 DAO ジェネレータによる作成
*
@param messageBody このインスタンスの MESSAGEBODY にセットしたい値
*/
public void setMessageBody(String messageBody){
fieldMap.put(tableName+"."+"MESSAGEBODY",messageBody);
}
//messageFlag
/**
*
MESSAGEFLAG の Getter です。<BR><BR>
*
@return このインスタンスの MESSAGEFLAG
*/
public String getMessageFlag(){
return (String)getField("MESSAGEFLAG");
}
/**
*
MESSAGEFLAG の Setter です。<BR><BR>
*
@param messageFlag このインスタンスの MESSAGEFLAG にセットしたい値
*/
public void setMessageFlag(String messageFlag){
fieldMap.put(tableName+"."+"MESSAGEFLAG",messageFlag);
}
//userName
/**
*
USERNAME の Getter です。<BR><BR>
*
@return このインスタンスの USERNAME
*/
public String getUserName(){
return (String)getField("USERNAME");
フィールド
取得・設定
メソッド
}
/**
*
USERNAME の Setter です。<BR><BR>
*
@param userName このインスタンスの USERNAME にセットしたい値
*/
public void setUserName(String userName){
fieldMap.put(tableName+"."+"USERNAME",userName);
}
//userPassword
/**
*
USERPASSWORD の Getter です。<BR><BR>
*
@return このインスタンスの USERPASSWORD
*/
public String getUserPassword(){
return (String)getField("USERPASSWORD");
}
/**
*
USERPASSWORD の Setter です。<BR><BR>
*
@param userPassword このインスタンスの USERPASSWORD にセットしたい値
*/
public void setUserPassword(String userPassword){
fieldMap.put(tableName+"."+"USERPASSWORD",userPassword);
}
//userEmail
/**
*
USEREMAIL の Getter です。<BR><BR>
*
@return このインスタンスの USEREMAIL
*/
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
41
public String getUserEmail(){
return (String)getField("USEREMAIL");
}
/**
*
USEREMAIL の Setter です。<BR><BR>
*
@param userEmail このインスタンスの USEREMAIL にセットしたい値
*/
public void setUserEmail(String userEmail){
fieldMap.put(tableName+"."+"USEREMAIL",userEmail);
}
//userHpName
/**
*
USERHPNAME の Getter です。<BR><BR>
*
@return このインスタンスの USERHPNAME
*/
public String getUserHpName(){
return (String)getField("USERHPNAME");
}
/**
*
USERHPNAME の Setter です。<BR><BR>
*
@param userHpName このインスタンスの USERHPNAME にセットしたい値
*/
public void setUserHpName(String userHpName){
fieldMap.put(tableName+"."+"USERHPNAME",userHpName);
}
フィールド
//userHpUrl
/**
*
USERHPURL の Getter です。<BR><BR>
*
@return このインスタンスの USERHPURL
*/
public String getUserHpUrl(){
return (String)getField("USERHPURL");
}
/**
*
USERHPURL の Setter です。<BR><BR>
*
@param userHpUrl このインスタンスの USERHPURL にセットしたい値
*/
public void setUserHpUrl(String userHpUrl){
fieldMap.put(tableName+"."+"USERHPURL",userHpUrl);
}
//userAge
/**
*
USERAGE の Getter です。<BR><BR>
*
@return このインスタンスの USERAGE
*/
public BigDecimal getUserAge(){
return (BigDecimal)getField("USERAGE");
}
/**
*
USERAGE の Setter です。<BR><BR>
*
@param userAge このインスタンスの USERAGE にセットしたい値
*/
public void setUserAge(BigDecimal userAge){
fieldMap.put(tableName+"."+"USERAGE",userAge);
}
42
取得・設定
メソッド
4 DAO ジェネレータによる作成
/**
*
USERAGE の Setter です。(文字列インタフェースを用意する)<BR><BR>
*
@param userAge このインスタンスの USERAGE にセットしたい値
*/
public void setUserAge(String userAge){
fieldMap.put(tableName+"."+"USERAGE",getBigDecimalVal(userAge));
}
//userSex
/**
*
USERSEX の Getter です。<BR><BR>
*
@return このインスタンスの USERSEX
*/
public String getUserSex(){
return (String)getField("USERSEX");
}
/**
フィールド
*
USERSEX の Setter です。<BR><BR>
*
@param userSex このインスタンスの USERSEX にセットしたい値
*/
取得・設定
メソッド
public void setUserSex(String userSex){
fieldMap.put(tableName+"."+"USERSEX",userSex);
}
//userFeel
/**
*
USERFEEL の Getter です。<BR><BR>
*
@return このインスタンスの USERFEEL
*/
public String getUserFeel(){
return (String)getField("USERFEEL");
}
/**
*
USERFEEL の Setter です。<BR><BR>
*
@param userFeel このインスタンスの USERFEEL にセットしたい値
*/
public void setUserFeel(String userFeel){
fieldMap.put(tableName+"."+"USERFEEL",userFeel);
}
/**
*
Bean をマッピングするときに使うキーを返します。<BR><BR>
*
*
@return Object 型のこの Bean のキー
*/
public Object getKey(){
if (getField("MESSAGEID") == null){
return "";
}
return ""+(String)(getField("MESSAGEID")).toString();
}
/**
*
BBMessageModelObject の対象テーブル名をセットします。<BR><BR>
*/
public void setTableName(){
this.tableName="BBMESSAGE";
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
43
/**
*
BBMessageModelObject のモデルオブジェクト名をセットします。<BR><BR>
*/
public void setModelName(){
this.modelName="BBMessage";
}
/**
*
BBMessageModelObject の対象テーブルの主キー情報を Map にセットします。<BR><BR>
*/
public void setPkMap(){
PKMap.put("MESSAGEID","10");
}
/**
*
BBMessageModelObject の対象テーブルのカラムマップにオブジェクトメンバーをセットします。<BR><BR>
*/
public void setFieldMap(){
fieldMap.put(tableName+"."+"MESSAGEID",null);
fieldMap.put(tableName+"."+"PARENTID",null);
fieldMap.put(tableName+"."+"MESSAGESUBJECT",null);
fieldMap.put(tableName+"."+"MESSAGEDATE",null);
fieldMap.put(tableName+"."+"MESSAGEBODY",null);
fieldMap.put(tableName+"."+"MESSAGEFLAG",null);
fieldMap.put(tableName+"."+"USERNAME",null);
fieldMap.put(tableName+"."+"USERPASSWORD",null);
fieldMap.put(tableName+"."+"USEREMAIL",null);
fieldMap.put(tableName+"."+"USERHPNAME",null);
fieldMap.put(tableName+"."+"USERHPURL",null);
fieldMap.put(tableName+"."+"USERAGE",null);
fieldMap.put(tableName+"."+"USERSEX",null);
fieldMap.put(tableName+"."+"USERFEEL",null);
}
/**
*
BBMessageModelObject のインスタンスを返します。<BR><BR>
* @return BBMessageModelObject
のインスタンス
*/
public ModelObject createInstance(){
return new BBMessageModelObject();
}
}
(4) DataConfig_BBPage.properties
#Start 2003/08/20 10:56:57
#---------------------------------------#
dao.class.BBMessage=imsg.sample.BBPage.model.data.BBMessageDAO
dao.connector.BBMessage=intra_mart_db
#End
#----------------------------------------
44
5
5 VIEW ジェネレータによる作成
VIEW ジェネレータによる作成
画面表示 項 目、チェ ッ ク条件、イ ベント定 義 などの情 報 を記述した Excel シートを読み込
み、JSP、ServiceController、ViewObject、ViewIdentifer、ServiceConfig、mapping を
自動生成 し ます。
VIEW シ ー ト の 構 成
(1) 更新履歴シート
Excel ファイルの更 新 履歴を入 力 します。
作成される java ファイルには反 映 されませ ん 。
(2) ファイル出力先定義シート
生成ファ イ ルの出力 先 を入力し ま す。
このシー ト の必須項 目 は必ず入 力 してくだ さ い。
(3) 画面イメージシート
画面イメ ー ジや設計 資 料を貼り 付 けます。
作成される java ファイルには反 映 されませ ん 。
(4) 画面オブジェクト構成定義シート
画面オブ ジ ェクトの 構 成と JSP 画面のアク シ ョン定義 を 記述しま す 。
(5) 画面詳細定義シート
画面オブ ジ ェクトの 詳 細定義を 記 述します 。
画面オブ ジ ェクトシ ー トに記述 し た、画面 オ ブジェク ト 数だけこ の シートが 必 要です。
(6) 入力チェック定義シート
画面 UI の入力チェッ ク 定義を記 述 します。
追加する場合のみ追記します。使用しない場合は既存のものをそのまま残してください。
(7) JSP 画面表示項目複数選択値リストシート
JSP のリストボック ス やドロッ プ ダウンリ ス ト等の選 択 肢となる デ ータを記 述 します。
1 セットの画面オブジェクトを作成するには、「ファイル出力先定義」シート、「画面オブジェ
クト構成定義」シート、「画面詳細定義」シート×画面オブジェクト数、「入力チェック定義」
シート、「JSP 画面表示項目複数選択値リスト」シートが必要です。
複数セットの画面オブジェクトを作成するには、「画面オブジェクト構成定義」シート、「画面
詳細定義」シート×画面オブジェクト数をセット数分追加してください。
「画面オブジェクト構成定義」シート、「画面詳細定義」シートは各シートの「画面名」、「画
面 ID」、「Java データ型/クラス名」が同一のもので 1 セットと見なされます。
「画面 ID」はセッションスコープへ情報を格納する場合のキーになりますのでシステム上でユニ
ークな名称を記述して下さい。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
45
VIEW シ ー ト の 作 成
ファイル出力先定義シート ----------------------------------------------「ファイ ル 出力定義 」部分には 生 成ソース フ ァイルの 出 力パスを 入 力します 。このフォル
ダが無い 場 合は新た に フォルダ が 作成され ま す。
D
○
A
○
E
○
B
○
C
○
A JSPファイル出力先
○
JSP ファイルを 出 力する AP サーバのコ ン テキスト パ スを記述 し ます。
B
○
コンテキストパスからの相対パス
JSP を配置する コ ンテキス ト パスから の 相対パス を 記述しま す 。
JSP ファイルは「JSP ファイル 出力先」 + 「コンテ キ ストパス か らの相対 パ ス」に出力
されます 。
この相対 パスはフ ァ イル出力 先 と ServiceConfig 内のパスで使 用 されます 。
C ソースファイル出力先
○
ソー ス ファイル を 出力する フ ォルダを 記 述します 。
D プロパティファイル出力先
○
ServiceConfig_XXX.properties ファイルを出 力 するフォ ル ダを指定 し ます。
E 備考
○
備考があ れ ば記述し ま す。
46
5 VIEW ジェネレータによる作成
画面オブジェクト構成定義シート ----------------------------------------上部に画 面 オブジェ ク トの構造 、 下部に画 面 内のアク シ ョンを記 述 します。
画面オブジェクト構成
画面オブジェクトは画面の入力コントロールの情報やテキストなどの情報を保持する
JavaBean です。
画面には 画 面全体を 表 すメイン 画 面オブジ ェ クトがあ り 、掲示板ア プリケー シ ョンの入力
フォームのような単純に配置されたコントロールはメイン画面オブジェクトのプロパテ
ィになり ま す。
記事一覧 の ように繰 り 返しのあ る ものは List 型で表現 で きます。
ただし、VIEW ジェネレ ータでは List 型に格納できるの は 画面オブ ジ ェクトの み の為、サ
ブ画面オ ブ ジェクト と いう List 型格納用 の 画面オブ ジ ェクトを 定 義するこ と になりま す。
このよう に 画面オブ ジ ェクトは 入 れ子にす る ことがで き 、掲示板ア プリケー シ ョンの記事
一覧部分 で は、メイン 画面オブ ジ ェクト(メッ セージ入 力 フォーム)の 中にルー ト メッセー
ジ一覧(記事 の一覧)があ り、さらに その中に 子 メッセー ジ 一覧(返信記 事の一覧)が あると
いう親- 子 -孫の構 造 です。
メイン画 面 オブジェ ク ト
メ ッ セ ー ジ 入 力 フ ォ ー ム (BBPageList)
掲示板アプリケーション
入力フォーム
サブ画面 オ ブジェク ト
ル ー ト メ ッ セ ー ジ 一 覧 (rootMessageList)
子 メ ッ セ ー ジ 一 覧 (childMessageList)
記事
返信記事
掲示板アプリケーションでは特に記事と返信記事の情報がほとんど同じであることため、
ル ー ト メ ッ セ ー ジ 一 覧 と 子 メ ッ セ ー ジ 一 覧 は 同 じ BBPageMessageViewObject ク ラ ス を 使
用します 。
JSP 画面アクション定義
ここに記 述 した情報 は 画面上の ボ タンとして JSP ソースに出力さ れ ます。ま た 、画面遷移
情報として ServiceConfig_XXX.properties ファイルにも 出 力されま す 。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
47
B
○
C
○
A
○
D
○
E
○
H
○
I
○
F
J ○
○
N
○
O
○
G
K ○
○
M
○
L
○
P
○
A アプリケーション名
○
アプリケ ー ション名 を 記述しま す 。
この名称 がサービ ス フレーム ワ ークのサ ー ビス名に な ります。
B
○
メイン画面オブジェクトの画面名
メイン画 面 オブジェ ク トの画面 名 を指定し ま す。
コメント 扱いなの で 日本語名 称 が記述で き ます。
C 画面ID
○
シス テ ム中でこ の 画面を特 定 できるユ ニ ークな ID を記述しま す 。
画面 ID はセッション ス コープに 情 報を格納 す る際のキ ー としても 使 用されま す 。
D パッケージ名
○
生成 さ れる Java クラスのパ ッ ケージ名 を 記述しま す 。
E ベースファイル名
○
JSP、ServiceController などの基 本のファ イ ル名を記 述 します。
JSP なら、生成され る ファイル 名 は ベース フ ァイル名 +”.jsp”
ServiceController なら、 ベース フ ァイル名 + “ServiceController.java”
48
5 VIEW ジェネレータによる作成
F メイン画面オブジェクトのJava定義名
○
プログラ ム 中でメイ ン 画面オブ ジ ェクトを 表 す変数の 名 称を記述 し ます。
G
○
メイン画面オブジェクトのJavaデータ型
メイ ン 画面オブ ジ ェクトの J avaデ ー タ型を指 定 します。
この型は 「画面詳 細 定義」シ ー トのクラ ス 名と一致 し ている必 要 がありま す 。・
H メイン画面オブジェクトのコメント
○
コメント を 入力しま す 。
I サブ画面オブジェクト名
○
サブ画面 オ ブジェク ト 名を指定 し ます。
コメント 扱 いなので 日 本語で記 述 できます 。
J サブ画面オブジェクトのJava定義名
○
サ ブ 画 面 オ ブ ジ ェ ク ト が 格 納 さ れ る 親 オ ブ ジ ェ ク ト の 「 画 面 詳 細 定 義 」 シ ー ト に ある 、
対応する 子 オブジェ ク ト型の Java 定義名を 記 述します 。
K サブ画面オブジェクトのJavaデータ型
○
サブ 画 面オブジ ェ クトのJ a vaデー タ 型を記述 し ます。
この型は 「 画面詳細 定 義」シー ト のクラス 名 と一致し て いる必要 が あります 。・
L サブ画面オブジェクトの Parent クラス型
○
サブ画面 オ ブジェク ト が格納さ れ る親オブ ジ ェクトの ク ラス型を 記 述します 。・
M サブ画面オブジェクトのコメント
○
コメ ン トを入力 し ます。
N JSP 画面アクション名
○
JSP 画面アクション 名 を指定し ま す。
この名称 は ボタンの キ ャプショ ン になりま す 。日本語 で 記述でき ま す。
O サービスコントローラ設定キー
○
この ア クション の・サービス コ ントロー ラ 設定キー を 記述しま す 。
P
○
JSP 画面アクションのコメント
コメ ン トを入力 し ます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
49
画面詳細定義シート ----------------------------------------------------画面オブ ジ ェクトの 詳 細情報を 記 述します 。 このシー ト は「画面 オ ブジェク ト 構成定義」
シートに 記 述された 画 面オブジ ェ クトの数 だ け必要で す 。
掲示板ア プ リケーシ ョ ンの場合 は 、
• メッセージ入力フォーム(BBPageListViewObject)
• ルート/子メッセージ一覧(BBPageMessageViewObject)
の2シー ト を作成し ま す。
メッセージ入力フォーム(BBPageListViewObject)
A
○
D
○
E
○
F ○
G
○
B
○
C
○
I ○
J
H ○
○
K ○
L ○
M
○
ルート/子メッセージ一覧(BBPageMessageViewObject)
A 画面名
○
「画 面 オブジェ ク ト構成」 シ ートと同 じ 画面名を 記 述します 。
B
○
クラス名
この 画 面オブジ ェ クトのクラス名を命名 し て記述し ま す。
C 画面ID
○
「画 面 オブジェ ク ト構成」 シ ートと同 じ 画面IDを記 述します 。
50
N
○
O
○
5 VIEW ジェネレータによる作成
D 画面項目名
○
画面 項 目名を記 述 します。
コメント 扱いなの で 日本語で 記 述できま す 。
E Java定義名
○
この名称 が 画面オブ ジ ェクトの プ ロパティ 名 となりま す 。
同時にプ ロ パティに ア クセスする setter/getter も生成されます。
F 画面項目区分
○
この項目が入力コントロールなら“入 力”を、表示項目なら“表 示”を指定し ます。
入力か表 示 を記述し た 場合、こ の 項目は JSP ソースに imsg タグとして出力さ れ ます。
空白の場 合 は画面オ ブ ジェクト の プロパテ ィ 、setter/getter は生成されますが JSP に
は反映さ れ ません。
G データ型
○
「画面項 目 区分」が“ 入力”の場 合は選択 肢 として“テ キスト ”、“リスト ボ ックス ”等
の 入 力 コ ン ト ロ ー ル が 表 示 さ れ ま す 。 こ こ で 選 ん だ コ ン ト ロ ー ル に よ り 、 imsg タ グ が 決
定されま す 。
例えば、“ テキスト”を選択し た 場合、JSP ソースには<imsg:Text>タグが生成 さ れます。
サブオブ ジ ェクトを 加 えたいと き は、ここ で “子オブ ジ ェクト” を 選択しま す 。
「画面項 目区分 」が“表示 ”の 場合は String、または String 型にキャスト で きる Java
データ型 を 記入して く ださい。 こ の項目は JSP ソースで は<imsg:View>タグにな ります。
H 初期値
○
初期値が あ る場合に 記 述します 。
I 属性値
○
項目が imsg タグとして出力されるときのタグの属性 値を記述します。
属性の詳細 はドキュメ ント「SourceGenerator タグライ ブ ラリ」を 参 照して下 さ い。
1.テキスト・パスワード・隠しフィールド の場合
size/maxlength
表示桁数/入力可能 最 大文字数
2.テキスト複数行入 力 の場合
cols/lows
表示桁数/表示行数
3.ラジオボタン・ドロップダウンリスト・チェックボックス の場合
設定 不要
4.リストボックス の場合
size
表示桁数
5.リストボックス(複数選択可能) の場合
size/multiple
表示桁数/複数選択 可 能か
を記述します。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
51
J 入力チェック
○
入力チェックを指定し ま す。
「チェッ ク ルール」 を 選択する と ここに追 加 されます 。
K チェックパラメータ
○
入力チェ ッ クを指定 し て、その 入 力チェッ ク がパラメ ー タを必要 と する場合 、パラメー
タ値を「,」 (カンマ)で 区切って 入 力します 。
入力チェックが複数指定されている場合はでチェックパラメータが必要になる度に左か
ら使われ て いきます 。 チェック ル ールに必 要 なパラメ ー タの個数 は 「入力チ ェ ック定義」
シートの 「 メソッド の 引数個数 」 に記述さ れ ています 。
L チェックルール
○
選択 肢 の中から 適 用したい チ ェックル ー ルを選択 し ます。
ここで選 択できる チ ェックル ー ルは「入力 チェック」シートに 記 述された チ ェッカー で
す。
M マッピング加工・編集元の業務 OBJ 名
○
画面オブジェクトに対応する業務オブジェクトやモデルモデルオブジェクトがある場
合はその ク ラス名を 記 述します 。
N マッピング加工・編集元の項目名
○
M に 記 述 し た ク ラ ス の 項 目 で 画 面 オ ブ ジ ェ ク ト の 項 目 に 対 応 す る 項 目 名 を 記 述しま
○
す。
O コメント
○
コメ ン トを入力 し ます。
52
5 VIEW ジェネレータによる作成
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
53
入力チェック定義シート ------------------------------------------------入力チェックは画面がサブミットされ、制御がサーバサイドに移った後、
ServiceContoroller で画面情報 を 画面オブ ジ ェクトに 格 納する際 に 行われま す 。
どのよう な チェック が 行われる か は画面詳 細 定義シー ト の「入力 チ ェック」で 指示されま
す。
入 力 チ ェ ッ ク 定 義 シ ー ト は 、 「 入 力 チ ェ ッ ク 」 ・か ら 選 択 で き る チ ェ ッ ク 処 理 を メ ン テ ナ
ンスする シ ートです 。
ここに項 目 を追加す る ことで「 入 力チェッ ク 」の選択 肢 を追加で き ます。
このシー ト には最初 か ら基本的 な チェック が いくつか 用 意されて い ます。
掲示板ア プ リケーシ ョ ンでは必 須 項目の必 須 チェック し か行って い ないため、記述は不要
です。
※ このシー ト は VIEW ジェネレータ の 動作に必 要 なため、入 力 チェック を 追加する 以 外は
そのまま 使 用して下 さ い。
A
○
54
B
○
C
○
D
○
E
○
F
○
G
○
5 VIEW ジェネレータによる作成
A 対象名
○
入力 チ ェックの 名 称を記述 し ます。
コメント 扱いなの で 日本語で 記 述できま す 。
B
○
チェッククラス名
チェ ッ クメソッ ド を持った ク ラス名を 記 述します 。
ここには アプリケ ー ション独 自 のチェッ ク クラスを 追 加できま す 。
C チェックメソッド名
○
チェ ッ クロジッ ク を実装し た チェック ク ラス内のメソッド名を記述 します。
追 加 す る メ ソ ッ ド は boolean 型 を 返 し 、 OK な ら True、 NG な ら False を 返 し て 下 さ い 。
D メソッドの引数個数
○
チェ ッ クメソッ ド に引数が あ る場合は 、 その個数 を 記述しま す 。
E メソッド引数のデータタイプ
○
チェック メ ソッドの 引 き数のデ ー タ型を記 述 します。
引き数が 2 つ以上あ る 場合はカ ン マ区切り で 複数記述 し ます。
F エラーメッセージ
○
チェック が エラーに な ったとき、画面オブ ジ ェクトに 記 録される メ ッセージ を 記述しま
す。
G コメント
○
コメ ン トを入力 し ます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
55
JSP 画面表示項目複数選択値リストシート ---------------------------------画面詳細 定 義シート で チェック ボ ックス、ラ ジオボタ ン 、ドロッ プ ダウンリ ス ト、リスト
ボックス 、リストボ ッ クス(複 数 選択可能 )を使用し た 場合の選 択 肢の一覧 を 定義するシ
ートです 。
これらの 入 力コント ロ ールを使 用 するとき に は、選択 肢 として、こ のシート の 値リスト名
を「初期 値 」に記述 す る必要が あ ります。
このシー ト は 1 シート で 3 つのリ ストを定 義 できます。3 つ以上の 値リスト が 必要な場合
は必要な 数 だけシー ト をコピー し て使用し て 下さい。
A
○
B
○
C
○
D
○
A リスト ID 名
○
値リ ス トを特定 で きるユニ ー クな名称 を 記述しま す 。
B 初期値
○
ここ に “○”を 指 定した値 が コントロ ー ルの初期 値 になりま す 。
C
○
Value 値
選択 肢 の持つ値 ま たは文字 列 を記述し ま す。
D 項目名
○
選択 肢 の名称と し て画面に 表 示される 名 前を記述 し ます。
56
5 VIEW ジェネレータによる作成
VIEW ソ ー ス コ ー ド の 生 成
(1) VIEWGenerator を起動します。
(2) マクロを有効にするかどうか聞かれたら有効を選択します。
(3) ダイアログが表示されたら「実行ボタン」を押します。
デフォルトではマクロ終了時にソースコードを生成したフォルダをエクスプローラで開
きますが 、開きたく な い場合は 実 行ボタン を 押す前に「 マクロ終 了 時に出力 フ ォルダを開
く」チェ ッ クを外し て 下さい。
(4) 作成した VIEW シートを選択して「開く」ボタンを押します。
(5) 終了メッセージが表示されたら「OK」ボタンを押して終了します。
正常に終了した場合は、出力先に指定したフォルダにソースコードが生成されています。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
57
VIEW ソ ー ス コ ー ド の 説 明
生成ファイルの出力先 --------------------------------------------------「ファイ ル 出力先定 義 」シート に 記述した フ ォルダに フ ァイルが 生 成されま す 。
Java ソ ー ス コ ー ド は 出 力 先 フ ォ ル ダ 配 下 に さ ら に パ ッ ケ ー ジ の フ ォ ル ダ 階 層 が 作 成 さ れ
ます。
(1) JSP ファイルの出力先
「jsp フ ァイル出 力 先」+「 コ ンテキス ト パス」フ ォ ルダ配下 の 、
「ベース フ ァイル名 」+”.jsp”
(2) Java ソースファイルの出力先
「src フ ァイル出 力 先」フォ ル ダ配下に パ ッケージ の フォルダ 階 層が作成 さ れ、
その中の 所 定のフォ ル ダにソー ス ファイル が 生成され ま す。
「ベース フ ァイル名 」 +“ServiceController.java”
「ベース フ ァイル名 」 +“ViewIdentifier.java”
「画面オ ブ ジェクト ク ラス名 」+“ViewObject.java”
成)
(メイン 、サ ブのシー ト 数だけ生
「src ファイル出力 先 」フォル ダ 配下には 、 マッピン グ テキスト が 生成され ま す。
“package_mapping_”+「画面オ ブ ジェクト ク ラス名」 + “.txt”
(3) ServiceConfig_XXX.properties ファイルの出力先
「properties ファイル 出力先」 フ ォルダ配 下 の、
“ServiceConfig_”+「アプリケー シ ョン名」 +”.properties”
58
5 VIEW ジェネレータによる作成
掲示板アプリケーションの VIEW シートからはこのように出力されます。
[BBPage]
├ [contents]
│
└ [imsg]
│
└ [sample]
│
└ [BBPage]
│
└ [jsp]
│
└ BBPageList.jsp
・JSP ソース
├ [properties]
│
└ ServiceConfig_BBPage.properties
・ServiceConfig プロパティ
└ [src]
├ [imsg]
│
│
└ [sample]
└ [BBPage]
│
├ [controller]
│
│
│
│
│
└ [view]
│
└ [service]
└ BBPageListServiceController.java
・ServiceController ソース
└ [object]
│
├ BBPageListViewIdentifier.java
│
├ BBPageListViewObject.java
・メイン ViewObject ソース
・ViewIdentifier ソース
│
└ BBPageMessageViewObject.java
・サブ ViewObject ソース
├ package_mapping_BBPageList.txt
・メイン ViewOBject マッピングファイル
└ package_mapping_BBPageMessageViewObject.txt
・サブ ViewObject マッピングファイル
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
59
掲示板アプリケーションの生成ファイル ----------------------------------掲示板ア プ リケーシ ョ ンの VIEW シートから 生 成される ソ ースファ イ ルです。
(1)BBPageList.jsp
画面表示 用 の jsp です。
(2)BBPageListServiceController.java
リクエス ト データ(画面 情報)を ViewObject に格納し、ViewObject のチェック メ ソッ
ドを呼び 出 し、画面 情 報の入力 チ ェックを 行 います。
(3)BBPageListViewIdentifier.java
ViewObject が一意に定まる 識 別子を生 成 します。
(4)BBPageListViewObject.java
画面情報(メッセージ入力フォーム)を格納する親オブジェクトです。
(5)BBPageMessageViewObject.java
画面情報(子メッセージ一覧)を 格納する子オブジェクトです。
(6)package_mapping_BBPageList.txt
ViewObject と ModelObject のマッピン グ 用のサン プ ルコード で す。
(7)package_mapping_BBPageMessageViewObject.txt
ViewObject と ModelObject のマッピン グ 用のサン プ ルコード で す。
(8)ServiceConfig_BBPage.properties
jsp のボタンが押さ れ た時に実 行 されるサ ー ビス、遷 移 先のペー ジ を設定し ま す。
画面情報の
BBPageListViewObject
参照
BBPageList.jsp
BBPageMessageViewObject
値 チェックエラー時
BBPageList
ServiceController
画面情報の格納
値チェック
BBPageList
package_mapping_
ViewObject
BBPageList
ModelObject
60
BBPageMesssage
package_mapping_BBPage
ViewObject
MessageViewObject
5 VIEW ジェネレータによる作成
(1) BBPageList.jsp
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Shift_JIS" %>
<%--<%@ page errorPage="" %> --%>
<%@ page import="java.util.*"%>
<%@ page import="imsg.sample.BBPage.view.object.*"%>
<%@ taglib prefix="imartj2ee" uri="http://www.intra-mart.co.jp/taglib/core/framework" %>
<%@ taglib prefix="imtag" uri="http://www.intra-mart.co.jp/taglib/core/standard" %>
<%@ taglib prefix="imsg" uri="/jp.co.intra_mart.framework.tools.sourcegenerator.taglib" %>
<jsp:useBean id="BBPageList" class="imsg.sample.BBPage.view.object.BBPageListViewObject" scope="session"
/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>
<P>掲示板 (imsg サンプル)<BR>
<imartj2ee:Form application="BBPage" service="BBPageListDefault" method="POST"
name="mainfrm">
<INPUT type="submit" value="BBPageListServiceController を呼び出す"><BR>
<!--入力チェックのエラー表示-->
<FONT color="red"><%= BBPageList.getErrorMessageReadableText() %></FONT>
<HR>
<imsg:Hidden beanname="BBPageList" property="messageId" />
<imsg:Hidden beanname="BBPageList" property="parentId" />
題名(*)<BR>
<imsg:Text beanname="BBPageList" property="messageSubject" size="60" maxlength="100" />
<P>
本文(*)<BR>
<imsg:TextArea beanname="BBPageList" property="messageBody" cols="60"
rows="6"></imsg:TextArea>
<P>
<imsg:Hidden beanname="BBPageList" property="messageFlag" value="1" />
名前(*)<BR>
<imsg:Text beanname="BBPageList" property="userName" size="40" maxlength="100" />
<P>
パスワード<BR>
<imsg:Password beanname="BBPageList" property="userPassword" size="40" maxlength="100" />
<P>
e-mail<BR>
<imsg:Text beanname="BBPageList" property="userEmail" size="40" maxlength="100" />
<P>
ホームページ名<BR>
<imsg:Text beanname="BBPageList" property="userHpName" size="60" maxlength="100" />
<P>
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
61
ホームページ URL<BR>
<imsg:Text beanname="BBPageList" property="userHpUrl" size="60" maxlength="100" />
<P>
年齢<BR>
<imsg:Text beanname="BBPageList" property="userAge" size="6" maxlength="6" />
<P>
性別<BR>
<imsg:Radio beanname="BBPageList" property="userSex" value="1" />男性<BR>
<imsg:Radio beanname="BBPageList" property="userSex" value="2" />女性<BR>
<P>
気分<BR>
<imsg:Select beanname="BBPageList" property="userFeel">
<imsg:Option value="1">喜</imsg:Option>
<imsg:Option value="2">怒</imsg:Option>
<imsg:Option value="3">哀</imsg:Option>
<imsg:Option value="4">楽</imsg:Option>
</imsg:Select>
<P>
<%-- ルートメッセージ (ネストオブジェクト BBPageMessageViewObject) --%>
<TABLE border="1">
<TR>
<TH>No</TH>
<TH>題名</TH>
<TH>発信日時</TH>
<TH>本文</TH>
<TH>名前</TH>
<TH>e-mail</TH>
<TH>ホームページ名</TH>
<TH>子メッセージ</TH>
</TR>
<%
{
String nest1_tagName = "rootMessageList$";
List nest1_list = BBPageList.getRootMessageList();
Iterator nest1_itr = null;
int nest1_index = 0;
if( nest1_list != null ) {
nest1_itr = nest1_list.iterator();
}
while( nest1_itr != null && nest1_itr.hasNext() ) {
BBPageMessageViewObject nest1_viewObj = (BBPageMessageViewObject)nest1_itr.next();
%>
<TR>
<TD align="right"><%= nest1_index + 1 %>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageId" name="<%=
nest1_tagName + nest1_index + "$messageId" %>" />
</TD>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="parentId" name="<%=
nest1_tagName + nest1_index + "$parentId" %>" />
</TD>
<%-- 題名 --%>
<TD>
<imsg:View beanname="<%= nest1_viewObj %>" property="messageSubject" /><BR>
62
5 VIEW ジェネレータによる作成
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageSubject" name="<%=
nest1_tagName + nest1_index + "$messageSubject" %>" />
</TD>
<%-- 発信日時 --%>
<TD>
<imsg:View beanname="<%= nest1_viewObj %>" property="messageDate" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageDate" name="<%=
nest1_tagName + nest1_index + "$messageDate" %>" />
</TD>
<%-- 本文 --%>
<TD>
<imsg:View beanname="<%= nest1_viewObj %>" property="messageBody" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageBody" name="<%=
nest1_tagName + nest1_index + "$messageBody" %>" />
</TD>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageFlag" name="<%=
nest1_tagName + nest1_index + "$messageFlag" %>" />
</TD>
<%-- 名前 --%>
<TD>
<imsg:View beanname="<%= nest1_viewObj %>" property="userName" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userName" name="<%=
nest1_tagName + nest1_index + "$userName" %>" />
</TD>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userPassword" name="<%=
nest1_tagName + nest1_index + "$userPassword" %>" />
</TD>
<%-- e-mail --%>
<TD>
<imsg:View beanname="<%= nest1_viewObj %>" property="userEmail" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userEmail" name="<%=
nest1_tagName + nest1_index + "$userEmail" %>" />
</TD>
<%-- ホームページ名 --%>
<TD>
<imsg:View beanname="<%= nest1_viewObj %>" property="userHpName" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userHpName" name="<%=
nest1_tagName + nest1_index + "$userHpName" %>" />
</TD>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userHpUrl" name="<%=
nest1_tagName + nest1_index + "$userHpUrl" %>" />
</TD>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userAge" name="<%=
nest1_tagName + nest1_index + "$userAge" %>" />
</TD>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userSex" name="<%=
nest1_tagName + nest1_index + "$userSex" %>" />
</TD>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userFeel" name="<%=
nest1_tagName + nest1_index + "$userFeel" %>" />
</TD>
<%-- 子メッセージ --%>
<TD>
<%-- 子メッセージ (ネストオブジェクト BBPageMessageViewObject) --%>
<TABLE border="1">
<TR>
<TH>No</TH>
<TH>題名</TH>
<TH>発信日時</TH>
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
63
<TH>本文</TH>
<TH>名前</TH>
<TH>e-mail</TH>
<TH>ホームページ名</TH>
<TH>子メッセージ</TH>
</TR>
<%
{
String nest2_tagName = new String(nest1_tagName + nest1_index +
"$childMessageList$");
List nest2_list = nest1_viewObj.getChildMessageList();
Iterator nest2_itr = null;
int nest2_index = 0;
if( nest2_list != null ) {
nest2_itr = nest2_list.iterator();
}
while( nest2_itr != null && nest2_itr.hasNext() ) {
BBPageMessageViewObject nest2_viewObj =
(BBPageMessageViewObject)nest2_itr.next();
%>
<TR>
<TD align="right"><%= nest2_index + 1 %>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageId"
name="<%= nest2_tagName + nest2_index + "$messageId" %>" />
</TD>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="parentId"
name="<%= nest2_tagName + nest2_index + "$parentId" %>" />
</TD>
<%-- 題名 --%>
<TD>
<imsg:View beanname="<%= nest2_viewObj %>" property="messageSubject"
/><BR>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageSubject"
name="<%= nest2_tagName + nest2_index + "$messageSubject" %>" />
</TD>
<%-- 発信日時 --%>
<TD>
<imsg:View beanname="<%= nest2_viewObj %>" property="messageDate"
/><BR>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageDate"
name="<%= nest2_tagName + nest2_index + "$messageDate" %>" />
</TD>
<%-- 本文 --%>
<TD>
<imsg:View beanname="<%= nest2_viewObj %>" property="messageBody"
/><BR>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageBody"
name="<%= nest2_tagName + nest2_index + "$messageBody" %>" />
</TD>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageFlag"
name="<%= nest2_tagName + nest2_index + "$messageFlag" %>" />
</TD>
<%-- 名前 --%>
<TD>
<imsg:View beanname="<%= nest2_viewObj %>" property="userName" /><BR>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userName"
name="<%= nest2_tagName + nest2_index + "$userName" %>" />
</TD>
64
5 VIEW ジェネレータによる作成
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userPassword"
name="<%= nest2_tagName + nest2_index + "$userPassword" %>" />
</TD>
<%-- e-mail --%>
<TD>
<imsg:View beanname="<%= nest2_viewObj %>" property="userEmail" /><BR>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userEmail"
name="<%= nest2_tagName + nest2_index + "$userEmail" %>" />
</TD>
<%-- ホームページ名 --%>
<TD>
<imsg:View beanname="<%= nest2_viewObj %>" property="userHpName" /><BR>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userHpName"
name="<%= nest2_tagName + nest2_index + "$userHpName" %>" />
</TD>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userHpUrl"
name="<%= nest2_tagName + nest2_index + "$userHpUrl" %>" />
</TD>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userAge"
name="<%= nest2_tagName + nest2_index + "$userAge" %>" />
</TD>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userSex"
name="<%= nest2_tagName + nest2_index + "$userSex" %>" />
</TD>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userFeel"
name="<%= nest2_tagName + nest2_index + "$userFeel" %>" />
</TD>
<%-- 子メッセージ --%>
<TD>
</TD>
</TR>
<%
nest2_index++;
}
}
%>
</TABLE>
</TD>
</TR>
<%
nest1_index++;
}
}
%>
</TABLE>
<imsg:Hidden beanname="BBPageList" property="selectedId" />
<HR>
<imartj2ee:Submit service="entry" value="投稿" /><BR>
<imartj2ee:Submit service="reply" value="返信" /><BR>
<imartj2ee:Submit service="erace" value="削除" /><BR>
</imartj2ee:Form>
</BODY>
</HTML>
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
65
(2) BBPageListServiceController.java
/*
* BBPageListServiceController.java
*
* Created on 2003/08/15, 13:59
*/
package imsg.sample.BBPage.controller.service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jp.co.intra_mart.framework.base.service.RequestException;
import jp.co.intra_mart.framework.base.service.ServiceControllerAdapter;
import jp.co.intra_mart.framework.base.service.ServiceResult;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
import imsg.sample.BBPage.view.object.*;
/**
* @author * @version 1.0
*/
public class BBPageListServiceController extends ServiceControllerAdapter {
/**
* 入力内容をチェックします
* @throws RequestException 入力内容に誤りがある
* @throws SystemException チェック時にシステム例外が発生
*
*/
public void check() throws RequestException, SystemException {
HttpServletRequest req = getRequest();
HttpSession session = req.getSession();
String viewId = (new BBPageListViewIdentifier()).getId();
// ViewObject の読込、または新規作成
BBPageListViewObject viewObj = (BBPageListViewObject)session.getAttribute(viewId);
if( viewObj == null ) {
viewObj = new BBPageListViewObject();
}
// Request パラメータを ViewObject に格納
viewObj.setPropertiesFromRequest( req );
// 入力チェック
viewObj.check();
//
if( viewObj.isValid()) {
//
// 入力チェック OK
//
}
//
else {
//
// 入力チェックエラー
//
//
throw new RequestException();
}
//ViewObject をセッションに格納
66
5 VIEW ジェネレータによる作成
session.setAttribute( viewId, viewObj);
}
public ServiceResult service() throws SystemException, ApplicationException {
HttpServletRequest req = getRequest();
HttpSession session = req.getSession();
String viewId = new BBPageListViewIdentifier().getId();
// ViewObject の取得
BBPageListViewObject viewObj = (BBPageListViewObject)session.getAttribute(viewId);
ServiceResult serviceResult = null;
return serviceResult;
}
}
(3) BBPageListViewIdentifier.java
/*
* BBPageListViewIdentifier.java
*
* Created on 2003/08/15, 13:59
*/
package imsg.sample.BBPage.view.object;
import jp.co.intra_mart.framework.tools.sourcegenerator.view.ViewIdentifier;
/**
* BBPageListViewObject を特定する識別子です。
* @author
-
* @version 1.0
*/
public class BBPageListViewIdentifier extends ViewIdentifier {
/**
* インスタンスを生成します。
*
*/
public BBPageListViewIdentifier() {
super("BBPageList");
}
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
67
(4) BBPageListViewObject.java
javadoc より
メソッドの概要
boolean check()
チ ェ ッ ク メ ソ ッ ド を 呼 び 出 し ま す 。投 稿 、返 信 の 際 に 画 面 の
入力内容をチェックします。
java.lang.String getMessageBody()
本 文 (*)を 取 得 し ま す 。
java.util.Date getMessageDate()
発信日時を取得します。
java.lang.String getMessageFlag()
メッセージフラグを取得します。
java.lang.String getMessageId()
メ ッ セ ー ジ ID を 取 得 し ま す 。
java.lang.String getMessageSubject()
題 名 (*)を 取 得 し ま す 。
java.lang.String getParentId()
親 メ ッ セ ー ジ ID を 取 得 し ま す 。
java.lang.String getPropertyName(java.lang.String tagName)
プロパティ名に対応する日本語名称を返します。
java.util.List getRootMessageList()
ル ー ト メ ッ セ ー ジ を 取 得 し ま す 。記 事 一 覧 取 得 の 際 に 呼 ば れ
ます。
java.lang.String getSelectedId()
選 択 メ ッ セ ー ジ ID を 取 得 し ま す 。 削 除 の 際 に 呼 ば れ ま す 。
java.lang.String getUserAge()
年齢を取得します。
java.lang.String getUserEmail()
e-mail を 取 得 し ま す 。
java.lang.String[] getUserFeel()
気分を取得します。
java.lang.String getUserHpName()
ホームページ名を取得します。
java.lang.String getUserHpUrl()
ホ ー ム ペ ー ジ URL を 取 得 し ま す 。
java.lang.String getUserName()
名 前 (*)を 取 得 し ま す 。
java.lang.String getUserPassword()
パスワードを取得します。
java.lang.String getUserSex()
性別を取得します。
void setMessageBody(java.lang.String string)
本 文 (*)を セ ッ ト し ま す 。
void setMessageDate(java.util.Date date)
発信日時をセットします。
void setMessageFlag(java.lang.String string)
メッセージフラグをセットします。
void setMessageId(java.lang.String string)
メ ッ セ ー ジ ID を セ ッ ト し ま す 。
68
5 VIEW ジェネレータによる作成
void setMessageSubject(java.lang.String string)
題 名 (*)を セ ッ ト し ま す 。
void setParentId(java.lang.String string)
親 メ ッ セ ー ジ ID を セ ッ ト し ま す 。
void setPropertyRequestMap(java.util.Map map)
リ ク エ ス ト パ ラ メ ー タ Map を ViewObject に と り こ み ま す 。
void setRootMessageList(java.util.List list)
ルートメッセージをセットします。
void setSelectedId(java.lang.String string)
選 択 メ ッ セ ー ジ ID を セ ッ ト し ま す 。
void setUserAge(java.lang.String string)
年齢をセットします。
void setUserEmail(java.lang.String string)
e-mail を セ ッ ト し ま す 。
void setUserFeel(java.lang.String[] strings)
気分をセットします。
void setUserHpName(java.lang.String string)
ホームページ名をセットします。
void setUserHpUrl(java.lang.String string)
ホ ー ム ペ ー ジ URL を セ ッ ト し ま す 。
void setUserName(java.lang.String string)
名 前 (*)を セ ッ ト し ま す 。
void setUserPassword(java.lang.String string)
パスワードをセットします。
void setUserSex(java.lang.String string)
性別をセットします。
/*
* BBPageListViewObject.java
*
* Created on 2003/08/15, 13:59
*/
package imsg.sample.BBPage.view.object;
import java.util.*;
import jp.co.intra_mart.framework.tools.sourcegenerator.util.InputCheck;
import jp.co.intra_mart.framework.tools.sourcegenerator.util.StringCompilation;
import jp.co.intra_mart.framework.tools.sourcegenerator.view.ViewObject;
import jp.co.intra_mart.framework.tools.sourcegenerator.view.ViewObjectIF;
/**
* BBPageListViewObject
* @author
-
* @version
1.0
*/
public class BBPageListViewObject extends ViewObject implements ViewObjectIF {
/**
メッセージ ID
*/
private String messageId;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
69
/**
親メッセージ ID
*/
private String parentId;
/**
題名(*)
*/
private String messageSubject;
/**
発信日時
*/
private Date messageDate;
/**
本文(*)
*/
private String messageBody;
/**
メッセージフラグ
*/
private String messageFlag = "1";
/**
名前(*)
*/
private String userName;
/**
パスワード
*/
private String userPassword;
/**
e-mail
*/
private String userEmail;
/**
ホームページ名
*/
private String userHpName;
/**
ホームページ URL
*/
private String userHpUrl;
/**
年齢
*/
private String userAge;
/**
性別
*/
private String userSex;
/**
気分
*/
private String[] userFeel;
/**
ルートメッセージ
*/
private List rootMessageList;
/**
選択メッセージ ID
*/
private String selectedId;
/**
* インスタンスを生成します。
*
*/
public BBPageListViewObject() {
super("BBPageList");
if( rootMessageList == null ) {
rootMessageList = new Vector();
}
while ( rootMessageList.size() < 2 ) {
70
5 VIEW ジェネレータによる作成
rootMessageList.add( new BBPageMessageViewObject());
}
}
/**
* 指定の識別子を持つインスタンスを生成します。
*
* @param name 識別子
*/
public BBPageListViewObject(String name) {
super(name);
}
/**
* メッセージ ID を取得します。
*
* @return メッセージ ID
*/
public String getMessageId() {
return messageId;
}
/**
* 親メッセージ ID を取得します。
*
* @return 親メッセージ ID
*/
public String getParentId() {
return parentId;
}
/**
* 題名(*)を取得します。
*
* @return 題名(*)
プロパティ
取得メソッド
*/
public String getMessageSubject() {
return messageSubject;
}
/**
* 発信日時を取得します。
*
* @return 発信日時
*/
public Date getMessageDate() {
return messageDate;
}
/**
* 本文(*)を取得します。
*
* @return 本文(*)
*/
public String getMessageBody() {
return messageBody;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
71
}
/**
* メッセージフラグを取得します。
*
* @return メッセージフラグ
*/
public String getMessageFlag() {
return messageFlag;
}
/**
* 名前(*)を取得します。
*
* @return 名前(*)
*/
public String getUserName() {
return userName;
}
/**
* パスワードを取得します。
*
* @return パスワード
*/
public String getUserPassword() {
return userPassword;
}
プロパティ
取得メソッド
/**
* e-mail を取得します。
*
* @return e-mail
*/
public String getUserEmail() {
return userEmail;
}
/**
* ホームページ名を取得します。
*
* @return ホームページ名
*/
public String getUserHpName() {
return userHpName;
}
/**
* ホームページ URL を取得します。
*
* @return ホームページ URL
*/
public String getUserHpUrl() {
return userHpUrl;
}
/**
* 年齢を取得します。
*
72
5 VIEW ジェネレータによる作成
* @return 年齢
*/
public String getUserAge() {
return userAge;
}
/**
* 性別を取得します。
*
* @return 性別
*/
public String getUserSex() {
return userSex;
}
/**
* 気分を取得します。
*
* @return 気分
プロパティ
取得メソッド
*/
public String[] getUserFeel() {
return userFeel;
}
/**
* ルートメッセージを取得します。
*
* @return ルートメッセージ
*/
public List getRootMessageList() {
return rootMessageList;
}
/**
* 選択メッセージ ID を取得します。
*
* @return 選択メッセージ ID
*/
public String getSelectedId() {
return selectedId;
}
/**
* メッセージ ID を設定します。
*
* @param string メッセージ ID
*/
public void setMessageId(String string) {
messageId = string;
プロパティ
}
設定メソッド
/**
* 親メッセージ ID を設定します。
*
* @param string 親メッセージ ID
*/
public void setParentId(String string) {
parentId = string;
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
73
/**
* 題名(*)を設定します。
*
* @param string 題名(*)
*/
public void setMessageSubject(String string) {
messageSubject = string;
}
/**
* 発信日時を設定します。
*
* @param date 発信日時
*/
public void setMessageDate(Date date) {
messageDate = date;
}
/**
* 本文(*)を設定します。
*
* @param string 本文(*)
*/
public void setMessageBody(String string) {
messageBody = string;
}
/**
* メッセージフラグを設定します。
*
* @param string メッセージフラグ
*/
public void setMessageFlag(String string) {
messageFlag = string;
}
/**
* 名前(*)を設定します。
*
* @param string 名前(*)
*/
public void setUserName(String string) {
userName = string;
}
/**
* パスワードを設定します。
*
* @param string パスワード
*/
public void setUserPassword(String string) {
userPassword = string;
}
/**
* e-mail を設定します。
*
* @param string e-mail
74
プロパティ
設定メソッド
5 VIEW ジェネレータによる作成
*/
public void setUserEmail(String string) {
userEmail = string;
}
/**
* ホームページ名を設定します。
*
* @param string ホームページ名
*/
public void setUserHpName(String string) {
userHpName = string;
}
/**
* ホームページ URL を設定します。
*
* @param string ホームページ URL
*/
public void setUserHpUrl(String string) {
userHpUrl = string;
}
/**
* 年齢を設定します。
*
* @param string 年齢
*/
public void setUserAge(String string) {
userAge = string;
}
プロパティ
設定メソッド
/**
* 性別を設定します。
*
* @param string 性別
*/
public void setUserSex(String string) {
userSex = string;
}
/**
* 気分を設定します。
*
* @param strings 気分
*/
public void setUserFeel(String[] strings) {
userFeel = strings;
}
/**
* ルートメッセージを設定します。
*
* @param list ルートメッセージ
*/
public void setRootMessageList(List list) {
rootMessageList = list;
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
75
/**
* 選択メッセージ ID を設定します。
プロパティ
*
* @param string 選択メッセージ ID
設定メソッド
*/
public void setSelectedId(String string) {
selectedId = string;
}
/**
* プロパティ名に対応する日本語名称を返します。
*
* @param tagName HTML タグの name 属性
* @return name に対応する日本語名称
*/
public String getPropertyName(String tagName) {
String propertyName = null;
if(tagName.equals("messageId")) propertyName = "メッセージ ID";
else if(tagName.equals("parentId")) propertyName = "親メッセージ ID";
else if(tagName.equals("messageSubject")) propertyName = "題名(*)";
else if(tagName.equals("messageBody")) propertyName = "本文(*)";
else if(tagName.equals("messageFlag")) propertyName = "メッセージフラグ";
else if(tagName.equals("userName")) propertyName = "名前(*)";
else if(tagName.equals("userPassword")) propertyName = "パスワード";
else if(tagName.equals("userEmail")) propertyName = "e-mail";
else if(tagName.equals("userHpName")) propertyName = "ホームページ名";
else if(tagName.equals("userHpUrl")) propertyName = "ホームページ URL";
else if(tagName.equals("userAge")) propertyName = "年齢";
else if(tagName.equals("userSex")) propertyName = "性別";
プロパティ名
取得メソッド
else if(tagName.equals("userFeel")) propertyName = "気分";
else if(tagName.equals("selectedId")) propertyName = "選択メッセージ ID";
else if(tagName.equals("messageId")) propertyName = "メッセージ ID";
else if(tagName.equals("parentId")) propertyName = "親メッセージ ID";
else if(tagName.equals("messageSubject")) propertyName = "題名";
else if(tagName.equals("messageDate")) propertyName = "発信日時";
else if(tagName.equals("messageBody")) propertyName = "本文";
else if(tagName.equals("messageFlag")) propertyName = "メッセージフラグ";
else if(tagName.equals("userName")) propertyName = "名前";
else if(tagName.equals("userPassword")) propertyName = "パスワード";
else if(tagName.equals("userEmail")) propertyName = "e-mail";
else if(tagName.equals("userHpName")) propertyName = "ホームページ名";
else if(tagName.equals("userHpUrl")) propertyName = "ホームページ URL";
else if(tagName.equals("userAge")) propertyName = "年齢";
else if(tagName.equals("userSex")) propertyName = "性別";
else if(tagName.equals("userFeel")) propertyName = "気分";
return propertyName;
}
/**
* リクエストパラメータ Map を ViewObject にとりこみます。
*
* @param map key:プロパティ名(String) value:値(String or String[] or ViewObject)
*/
public void setPropertyRequestMap(Map map) {
// メッセージ ID
if(map.containsKey("messageId")) {
this.messageId = ((String[])map.get("messageId"))[0];
76
Map を
ViewObject に
セットする
メソッド
5 VIEW ジェネレータによる作成
}
// 親メッセージ ID
if(map.containsKey("parentId")) {
this.parentId = ((String[])map.get("parentId"))[0];
}
// 題名(*)
if(map.containsKey("messageSubject")) {
this.messageSubject = ((String[])map.get("messageSubject"))[0];
}
// 本文(*)
if(map.containsKey("messageBody")) {
this.messageBody = ((String[])map.get("messageBody"))[0];
}
// メッセージフラグ
if(map.containsKey("messageFlag")) {
this.messageFlag = ((String[])map.get("messageFlag"))[0];
}
// 名前(*)
if(map.containsKey("userName")) {
this.userName = ((String[])map.get("userName"))[0];
}
// パスワード
if(map.containsKey("userPassword")) {
this.userPassword = ((String[])map.get("userPassword"))[0];
}
Map を
ViewObject に
// e-mail
if(map.containsKey("userEmail")) {
セットする
メソッド
this.userEmail = ((String[])map.get("userEmail"))[0];
}
// ホームページ名
if(map.containsKey("userHpName")) {
this.userHpName = ((String[])map.get("userHpName"))[0];
}
// ホームページ URL
if(map.containsKey("userHpUrl")) {
this.userHpUrl = ((String[])map.get("userHpUrl"))[0];
}
// 年齢
if(map.containsKey("userAge")) {
this.userAge = ((String[])map.get("userAge"))[0];
}
// 性別
if(map.containsKey("userSex")) {
this.userSex = ((String[])map.get("userSex"))[0];
}
// 気分
userFeel= null;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
77
if(map.containsKey("userFeel")) {
this.userFeel = ((String[])map.get("userFeel"));
Map を
}
ViewObject に
{
セットする
// ルートメッセージ
メソッド
Iterator requestItr = map.keySet().iterator();
Map childObjectMapMap = new HashMap();
//
while( requestItr.hasNext() ) {
String requestKey = (String)requestItr.next();
String[] requestKeyArray = StringCompilation.split(requestKey, "$", 3);
Map childObjectMap;
// キーの先頭が rootMessageList であるとき
if( requestKeyArray[0].equals("rootMessageList") && requestKeyArray.length == 3 ) {
Integer childObjectKey = Integer.valueOf(requestKeyArray[1]);
マップに
put す る
if( childObjectMapMap.containsKey( childObjectKey ) ) {
childObjectMap = (Map)childObjectMapMap.get( childObjectKey );
}
else {
childObjectMap = new HashMap();
}
childObjectMap.put( requestKeyArray[2], map.get(requestKey));
childObjectMapMap.put( childObjectKey, childObjectMap );
}
}
Iterator childObjectItr = (new TreeSet(childObjectMapMap.keySet())).iterator();
this.rootMessageList = new Vector();
while( childObjectItr.hasNext() ) {
BBPageMessageViewObject childObject = new BBPageMessageViewObject();
childObject.setPropertyRequestMap( (Map)childObjectMapMap.get(childObjectItr.next()) );
}
this.rootMessageList.add( childObject );
BBPageMessageViewObject
setPropertyRequestMap
}
メソッド
// 選択メッセージ ID
if(map.containsKey("selectedId")) {
P88
参照
this.selectedId = ((String[])map.get("selectedId"))[0];
}
}
/**
*
チェックメソッドを呼び出します。
*/
public boolean check(){
// エラー情報を初期化する
clearErrorMessageMap();
//
題名(*)の必須チェック
if( !InputCheck.isInput( this.messageSubject)) {
setValid(false);
addErrorMessage("messageSubject", "必須です");
78
入力チェック
メソッド
5 VIEW ジェネレータによる作成
}
//
本文(*)の必須チェック
if( !InputCheck.isInput( this.messageBody)) {
setValid(false);
addErrorMessage("messageBody", "必須です");
}
//
名前(*)の必須チェック
if( !InputCheck.isInput( this.userName)) {
setValid(false);
addErrorMessage("userName", "必須です");
}
{
//
ルートメッセージ
Iterator oItr = null;
if( rootMessageList != null ) {
oItr = rootMessageList.iterator();
}
for( int i=0 ; oItr != null && oItr.hasNext() ; i++ ) {
入力チェック
メソッド
BBPageMessageViewObject childViewObject = (BBPageMessageViewObject)oItr.next();
if( !childViewObject.check() ) {
setValid(false);
Map childErrorMessageMap = childViewObject.getErrorMessageMap();
Iterator itr = childErrorMessageMap.keySet().iterator();
while( itr.hasNext() ) {
String messageKey = (String)itr.next();
addErrorMessages("rootMessageList$" + i + "$" + messageKey,
(String[])childErrorMessageMap.get(messageKey));
}
}
}
}
return isValid();
}
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
79
(5) BBPageMessageViewObject.java
javadoc より
メソッドの概要
boolean check()
チェックメソッドを呼び出します。
java.util.List getChildMessageList()
子メッセージを取得します。記事一覧取得の際に呼ばれます。
java.lang.String getMessageBody()
本文を取得します。
java.lang.String getMessageDate()
発信日時を取得します。
java.lang.String getMessageFlag()
メッセージフラグを取得します。
java.lang.String getMessageId()
メ ッ セ ー ジ ID を 取 得 し ま す 。
java.lang.String getMessageSubject()
題名を取得します。
java.lang.String getParentId()
親 メ ッ セ ー ジ ID を 取 得 し ま す 。
java.lang.String getPropertyName(java.lang.String tagName)
プロパティ名に対応する日本語名称を返します。
java.lang.String getUserAge()
年齢を取得します。
java.lang.String getUserEmail()
e-mail を 取 得 し ま す 。
java.lang.String getUserFeel()
気分を取得します。
java.lang.String getUserHpName()
ホームページ名を取得します。
java.lang.String getUserHpUrl()
ホ ー ム ペ ー ジ URL を 取 得 し ま す 。
java.lang.String getUserName()
名前を取得します。
java.lang.String getUserPassword()
パスワードを取得します。
java.lang.String getUserSex()
性別を取得します。
void setChildMessageList(java.util.List list)
子 メ ッ セ ー ジ を 設 定 し ま す 。記 事 一 覧 の 取 得 の 際 に 親 メ ッ セ ー
ジにセットします。
void setMessageBody(java.lang.String string)
本文をセットします。
void setMessageDate(java.lang.String string)
発信日時をセットします。
void setMessageFlag(java.lang.String string)
メッセージフラグをセットします。
void setMessageId(java.lang.String string)
メ ッ セ ー ジ ID を セ ッ ト し ま す 。
void setMessageSubject(java.lang.String string)
題名をセットします。
80
5 VIEW ジェネレータによる作成
void setParentId(java.lang.String string)
親 メ ッ セ ー ジ ID を セ ッ ト し ま す 。
void setPropertyRequestMap(java.util.Map map)
リ ク エ ス ト パ ラ メ ー タ Map を ViewObject に と り こ み ま す 。
void setUserAge(java.lang.String string)
年齢をセットします。
void setUserEmail(java.lang.String string)
e-mail を セ ッ ト し ま す 。
void setUserFeel(java.lang.String string)
気分をセットします。
void setUserHpName(java.lang.String string)
ホームページ名をセットします。
void setUserHpUrl(java.lang.String string)
ホ ー ム ペ ー ジ URL を セ ッ ト し ま す 。
void setUserName(java.lang.String string)
名前をセットします。
void setUserPassword(java.lang.String string)
パスワードをセットします。
void setUserSex(java.lang.String string)
性別をセットします。
/*
* BBPageListViewObject.java
*
* Created on 2003/08/15, 13:59
*/
package imsg.sample.BBPage.view.object;
import java.util.*;
import jp.co.intra_mart.framework.tools.sourcegenerator.util.InputCheck;
import jp.co.intra_mart.framework.tools.sourcegenerator.util.StringCompilation;
import jp.co.intra_mart.framework.tools.sourcegenerator.view.ViewObject;
import jp.co.intra_mart.framework.tools.sourcegenerator.view.ViewObjectIF;
/**
* BBPageMessageViewObject
* @author
-
* @version
1.0
*/
public class BBPageMessageViewObject extends ViewObject implements ViewObjectIF {
/**
メッセージ ID
*/
private String messageId;
/**
親メッセージ ID
*/
private String parentId;
/**
題名
*/
private String messageSubject;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
81
/**
発信日時
*/
private String messageDate;
/**
本文
*/
private String messageBody;
/**
メッセージフラグ
*/
private String messageFlag;
/**
名前
*/
private String userName;
/**
パスワード
*/
private String userPassword;
/**
e-mail
*/
private String userEmail;
/**
ホームページ名
*/
private String userHpName;
/**
ホームページ URL
*/
private String userHpUrl;
/**
年齢
*/
private String userAge;
/**
性別
*/
private String userSex;
/**
気分
*/
private String userFeel;
/**
子メッセージ
*/
private List childMessageList;
/**
* インスタンスを生成します。
*
*/
public BBPageMessageViewObject() {
super("BBPageList");
}
/**
* 指定の識別子を持つインスタンスを生成します。
*
* @param name 識別子
*/
public BBPageMessageViewObject(String name) {
super(name);
}
/**
* メッセージ ID を取得します。
82
5 VIEW ジェネレータによる作成
*
* @return メッセージ ID
*/
public String getMessageId() {
return messageId;
}
/**
* 親メッセージ ID を取得します。
*
* @return 親メッセージ ID
*/
public String getParentId() {
return parentId;
}
/**
* 題名を取得します。
*
* @return 題名
*/
public String getMessageSubject() {
return messageSubject;
}
/**
* 発信日時を取得します。
*
プロパティ
* @return 発信日時
*/
取得メソッド
public String getMessageDate() {
return messageDate;
}
/**
* 本文を取得します。
*
* @return 本文
*/
public String getMessageBody() {
return messageBody;
}
/**
* メッセージフラグを取得します。
*
* @return メッセージフラグ
*/
public String getMessageFlag() {
return messageFlag;
}
/**
* 名前を取得します。
*
* @return 名前
*/
public String getUserName() {
return userName;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
83
}
/**
* パスワードを取得します。
*
* @return パスワード
*/
public String getUserPassword() {
return userPassword;
}
/**
* e-mail を取得します。
*
* @return e-mail
*/
public String getUserEmail() {
return userEmail;
}
/**
* ホームページ名を取得します。
*
* @return ホームページ名
*/
public String getUserHpName() {
return userHpName;
}
プロパティ
取得メソッド
/**
* ホームページ URL を取得します。
*
* @return ホームページ URL
*/
public String getUserHpUrl() {
return userHpUrl;
}
/**
* 年齢を取得します。
*
* @return 年齢
*/
public String getUserAge() {
return userAge;
}
/**
* 性別を取得します。
*
* @return 性別
*/
public String getUserSex() {
return userSex;
}
/**
* 気分を取得します。
*
84
5 VIEW ジェネレータによる作成
* @return 気分
*/
public String getUserFeel() {
return userFeel;
}
プロパティ
/**
* 子メッセージを取得します。
取得メソッド
*
* @return 子メッセージ
*/
public List getChildMessageList() {
return childMessageList;
}
/**
* メッセージ ID を設定します。
*
* @param string メッセージ ID
*/
public void setMessageId(String string) {
messageId = string;
}
/**
* 親メッセージ ID を設定します。
*
* @param string 親メッセージ ID
*/
public void setParentId(String string) {
parentId = string;
}
/**
* 題名を設定します。
プロパティ
*
* @param string 題名
設定メソッド
*/
public void setMessageSubject(String string) {
messageSubject = string;
}
/**
* 発信日時を設定します。
*
* @param string 発信日時
*/
public void setMessageDate(String string) {
messageDate = string;
}
/**
* 本文を設定します。
*
* @param string 本文
*/
public void setMessageBody(String string) {
messageBody = string;
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
85
/**
* メッセージフラグを設定します。
*
* @param string メッセージフラグ
*/
public void setMessageFlag(String string) {
messageFlag = string;
}
/**
* 名前を設定します。
*
* @param string 名前
*/
public void setUserName(String string) {
userName = string;
}
/**
* パスワードを設定します。
*
* @param string パスワード
*/
public void setUserPassword(String string) {
userPassword = string;
}
/**
* e-mail を設定します。
*
* @param string e-mail
*/
public void setUserEmail(String string) {
userEmail = string;
}
/**
* ホームページ名を設定します。
*
* @param string ホームページ名
*/
public void setUserHpName(String string) {
userHpName = string;
}
/**
* ホームページ URL を設定します。
*
* @param string ホームページ URL
*/
public void setUserHpUrl(String string) {
userHpUrl = string;
}
/**
* 年齢を設定します。
*
* @param string 年齢
86
プロパティ
設定メソッド
5 VIEW ジェネレータによる作成
*/
public void setUserAge(String string) {
userAge = string;
}
/**
* 性別を設定します。
*
* @param string 性別
*/
public void setUserSex(String string) {
userSex = string;
}
プロパティ
/**
設定メソッド
* 気分を設定します。
*
* @param string 気分
*/
public void setUserFeel(String string) {
userFeel = string;
}
/**
* 子メッセージを設定します。
*
* @param list 子メッセージ
*/
public void setChildMessageList(List list) {
childMessageList = list;
}
/**
* プロパティ名に対応する日本語名称を返します。
*
* @param tagName HTML タグの name 属性
* @return name に対応する日本語名称
*/
public String getPropertyName(String tagName) {
String propertyName = null;
if(tagName.equals("messageId")) propertyName = "メッセージ ID";
else if(tagName.equals("parentId")) propertyName = "親メッセージ ID";
else if(tagName.equals("messageSubject")) propertyName = "題名";
else if(tagName.equals("messageDate")) propertyName = "発信日時";
else if(tagName.equals("messageBody")) propertyName = "本文";
プロパティ名
else if(tagName.equals("messageFlag")) propertyName = "メッセージフラグ";
取得メソッド
else if(tagName.equals("userName")) propertyName = "名前";
else if(tagName.equals("userPassword")) propertyName = "パスワード";
else if(tagName.equals("userEmail")) propertyName = "e-mail";
else if(tagName.equals("userHpName")) propertyName = "ホームページ名";
else if(tagName.equals("userHpUrl")) propertyName = "ホームページ URL";
else if(tagName.equals("userAge")) propertyName = "年齢";
else if(tagName.equals("userSex")) propertyName = "性別";
else if(tagName.equals("userFeel")) propertyName = "気分";
return propertyName;
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
87
/**
* リクエストパラメータ Map を ViewObject にとりこみます。
*
* @param map key:プロパティ名(String) value:値(String or String[] or ViewObject)
*/
public void setPropertyRequestMap(Map map) {
// メッセージ ID
if(map.containsKey("messageId")) {
this.messageId = ((String[])map.get("messageId"))[0];
}
// 親メッセージ ID
if(map.containsKey("parentId")) {
this.parentId = ((String[])map.get("parentId"))[0];
}
// 題名
if(map.containsKey("messageSubject")) {
this.messageSubject = ((String[])map.get("messageSubject"))[0];
}
// 発信日時
if(map.containsKey("messageDate")) {
this.messageDate = ((String[])map.get("messageDate"))[0];
}
// 本文
if(map.containsKey("messageBody")) {
this.messageBody = ((String[])map.get("messageBody"))[0];
Map を
}
// メッセージフラグ
if(map.containsKey("messageFlag")) {
this.messageFlag = ((String[])map.get("messageFlag"))[0];
}
// 名前
if(map.containsKey("userName")) {
this.userName = ((String[])map.get("userName"))[0];
}
// パスワード
if(map.containsKey("userPassword")) {
this.userPassword = ((String[])map.get("userPassword"))[0];
}
// e-mail
if(map.containsKey("userEmail")) {
this.userEmail = ((String[])map.get("userEmail"))[0];
}
// ホームページ名
if(map.containsKey("userHpName")) {
this.userHpName = ((String[])map.get("userHpName"))[0];
}
// ホームページ URL
if(map.containsKey("userHpUrl")) {
this.userHpUrl = ((String[])map.get("userHpUrl"))[0];
88
ViewObject に
セットする
メソッド
5 VIEW ジェネレータによる作成
}
// 年齢
if(map.containsKey("userAge")) {
this.userAge = ((String[])map.get("userAge"))[0];
}
// 性別
if(map.containsKey("userSex")) {
this.userSex = ((String[])map.get("userSex"))[0];
}
// 気分
if(map.containsKey("userFeel")) {
this.userFeel = ((String[])map.get("userFeel"))[0];
Map を
}
ViewObject に
セットする
{
メソッド
// 子メッセージ
Iterator requestItr = map.keySet().iterator();
Map childObjectMapMap = new HashMap();
//
while( requestItr.hasNext() ) {
String requestKey = (String)requestItr.next();
String[] requestKeyArray = StringCompilation.split(requestKey, "$", 3);
Map childObjectMap;
// キーの先頭が childMessageList であるとき
if( requestKeyArray[0].equals("childMessageList") && requestKeyArray.length == 3 ) {
Integer childObjectKey = Integer.valueOf(requestKeyArray[1]);
if( childObjectMapMap.containsKey( childObjectKey ) ) {
マップに
put す る
childObjectMap = (Map)childObjectMapMap.get( childObjectKey );
}
else {
childObjectMap = new HashMap();
}
childObjectMap.put( requestKeyArray[2], map.get(requestKey));
childObjectMapMap.put( childObjectKey, childObjectMap );
}
}
Iterator childObjectItr = (new TreeSet(childObjectMapMap.keySet())).iterator();
this.childMessageList = new Vector();
while( childObjectItr.hasNext() ) {
BBPageMessageViewObject childObject = new BBPageMessageViewObject();
childObject.setPropertyRequestMap( (Map)childObjectMapMap.get(childObjectItr.next()) );
this.childMessageList.add( childObject );
}
}
BBPageMessageViewObject
setPropertyRequestMap
}
メソッド
P88
/**
*
参照
チェックメソッドを呼び出します。
*/
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
89
public boolean check(){
// エラー情報を初期化する
clearErrorMessageMap();
{
//
子メッセージ
Iterator oItr = null;
if( childMessageList != null ) {
oItr = childMessageList.iterator();
}
for( int i=0 ; oItr != null && oItr.hasNext() ; i++ ) {
BBPageMessageViewObject childViewObject = (BBPageMessageViewObject)oItr.next();
if( !childViewObject.check() ) {
setValid(false);
Map childErrorMessageMap = childViewObject.getErrorMessageMap();
Iterator itr = childErrorMessageMap.keySet().iterator();
while( itr.hasNext() ) {
String messageKey = (String)itr.next();
addErrorMessages("childMessageList$" + i + "$" + messageKey,
(String[])childErrorMessageMap.get(messageKey));
}
}
}
}
return isValid();
}
}
90
入力チェック
メソッド
5 VIEW ジェネレータによる作成
(6) package_mapping_BBPageList.txt
===BEGIN(BBPageListViewObject)===========================================================
MODEL----->VIEW
/////////////////////////////////////////////////////////////////////
//**
<モデルオブジェクトからマッピングを作成>
//**
//**
**//
ModelObject から取得した値を強制的に ViewObject の項目型に
//**
//**
キャストしています。
ModelObject と ViewObject の項目間でデータが異なる場合には
//**
**//
修正が必要です。
//**
**//
**//
**//
**//
**//
/////////////////////////////////////////////////////////////////////
private Map createBBPageListViewObjectMap(BBMessageModelObject model1){
Hashtable hash = new Hashtable();
hash.put("messageId", (String)model1.getMessageId());
hash.put("parentId", (String)model1.getParentId());
hash.put("messageSubject", (String)model1.getMessageSubject());
hash.put("messageDate", (Date)model1.getMessageDate());
hash.put("messageBody", (String)model1.getMessageBody());
hash.put("messageFlag", (String)model1.getMessageFlag());
hash.put("userName", (String)model1.getUserName());
hash.put("userPassword", (String)model1.getUserPassword());
hash.put("userEmail", (String)model1.getUserEmail());
hash.put("userHpName", (String)model1.getUserHpName());
hash.put("userHpUrl", (String)model1.getUserHpUrl());
hash.put("userAge", (String)model1.getUserAge());
hash.put("userSex", (String)model1.getUserSex());
hash.put("userFeel", (String[])model1.getUserFeel());
return hash;
}
VIEW----->MODEL
/////////////////////////////////////////////////////////////////////
//**
画面ブジェクトから MODEL マッピングを作成
//**
//**
//**
**//
**//
ModelObject と ViewObject の項目間でデータが異なる場合には
修正が必要です。
//**
**//
**//
**//
/////////////////////////////////////////////////////////////////////
private void setBBMessageModelObjectValue(BBMessageModelObject modelobj,BBPageListViewObject
viewobj){
modelobj.setMessageId(viewobj.getMessageId());
modelobj.setParentId(viewobj.getParentId());
modelobj.setMessageSubject(viewobj.getMessageSubject());
modelobj.setMessageDate(viewobj.getMessageDate());
modelobj.setMessageBody(viewobj.getMessageBody());
modelobj.setMessageFlag(viewobj.getMessageFlag());
modelobj.setUserName(viewobj.getUserName());
modelobj.setUserPassword(viewobj.getUserPassword());
modelobj.setUserEmail(viewobj.getUserEmail());
modelobj.setUserHpName(viewobj.getUserHpName());
modelobj.setUserHpUrl(viewobj.getUserHpUrl());
modelobj.setUserAge(viewobj.getUserAge());
modelobj.setUserSex(viewobj.getUserSex());
modelobj.setUserFeel(viewobj.getUserFeel());
}
===END(BBPageListViewObject)=============================================================
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
91
(7) package_mapping_BBPageMessageViewObject.txt
===BEGIN(BBPageMessageViewObject)===========================================================
MODEL----->VIEW
/////////////////////////////////////////////////////////////////////
//**
<モデルオブジェクトからマッピングを作成>
//**
//**
**//
ModelObject から取得した値を強制的に ViewObject の項目型に
//**
//**
キャストしています。
ModelObject と ViewObject の項目間でデータが異なる場合には
//**
**//
修正が必要です。
//**
**//
**//
**//
**//
**//
/////////////////////////////////////////////////////////////////////
private Map createBBPageMessageViewObjectMap(){
Hashtable hash = new Hashtable();
return hash;
}
VIEW----->MODEL
/////////////////////////////////////////////////////////////////////
//**
画面ブジェクトから MODEL マッピングを作成
//**
//**
//**
**//
**//
ModelObject と ViewObject の項目間でデータが異なる場合には
修正が必要です。
//**
**//
**//
**//
/////////////////////////////////////////////////////////////////////
===END(BBPageMessageViewObject)=============================================================
(8) ServiceConfig_BBPage.properties
#Start BBPageListViewObject
#---------------------------------------# デフォルト設定
controller.class.BBPageListDefault=imsg.sample.BBPage.controller.service.BBPageListServiceController
nextpage.path.BBPageListDefault=/imsg/sample/BBPage/jsp/BBPageList.jsp
#
投稿
controller.class.entry=
nextpage.path.entry=
#
返信
controller.class.reply=
nextpage.path.reply=
#
削除
controller.class.erase=
nextpage.path.erase=
#End
#----------------------------------------
92
6
6 コンパイル及び実行
コンパイル及び実行
ソースコ ー ドジェネ レ ータで生 成 したソー ス コードは 、このまま で コンパイ ル 、実行でき
ます。
ここでは e ビルダー に インポー ト してコン パ イル、実 行 を行いま す 。
プロジェクトの作成
(1) ソースジェネレータ Web プロジェクト
Framework Producer を起 動 し て メ ニ ュ ー の 「 フ ァ イ ル 」 - 「 新 規 」 - 「 プ ロ ジ ェ ク ト」
を選択し ま す。こ こで 表示され る「新規 プロ ジェクト 」ダイアロ グ で「intra-mart」―「ソ
ースジェ ネ レータ Web プロジェ ク ト」を選 択 して「次 へ 」ボタン を 押します 。
(2) ソースジェネレータの設定
プ ロ ジ ェ ク ト 名 (任 意 )、 コ ン テ キ ス ト パ ス (既 定 値 :webapp)を 設 定 す る と 、 次 に ソ ー ス ジ
ェネレー タ の設定ダ イ アログが 表 示されま す 。ここで設 定する各 フ ォルダは ソ ースジェネ
レータの 出 力先を選 択 して下さ い 。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
93
• コンテンツ ファイル フォルダ
VIEW シートの生成フ ァ イル出力 先 の「jsp ファイル出 力 先」を追 加 します。
• JAVA ファイル フォルダ
VIEW シートの生成フ ァ イル出力 先 の「src ファイル出 力 先」と
DAO シートの「ModelObject、DAO、DAOIF ファイル出力 先 」を追加 し ます。
• プロパティ ファイル フォルダ
VIEW シートの生成フ ァ イル出力 先 の「properties ファイル出力先 」 と
DAO シートの「DataConfig ファイル出力先 」 を追加し ま す。
(3) 新しいサービスの作成
必要であ れ ば Java 設定を行って 「 終了」ボ タ ンを押す と プロジェ ク トが作成 さ れます。
このとき 、「xxx サ ービスが 存 在しませ ん 。新しい サ ービスを 作 成します か ?」の問に
は「はい 」 と答えま す 。
これでプ ロ ジェクト が 作成され ま す。
プロジェ ク トが作成 さ れると、エ ディタ画 面 にサービ ス フレーム ワ ークとデ ー タフレーム
ワークが 作 成されま す 。(各コ ン ポーネン ト の配置を 整 理した状 態 )
あとは Framework Producer 上でコンパイル 、 実行など を 行うこと が できます 。
94
6 コンパイル及び実行
ソースの実行
Framework Prodeucer のサーバ上 で 実行し、 デ バッグす る ことが可 能 です。
自動生成 さ れたソー ス の JSP 画面を表示さ せ ることが で きます。
デバッグ サ ーバを起 動 させ、メ ニ ューに掲 示 板を登録 し ます。(設定 例)
ページ URL の sample の部分はプ ロ ジェクト 名 です。適 宜 変更して 下 さい。
掲示板アプリケーションの動作画面
画面上の 「BBPageListServiceController を呼び出す」ボ タ ンだけ動 作 します。
ボタンの 下 に赤字で 表 示されて い るのが入 力 チェック エ ラーメッ セ ージです 。
題名、名 前 、本文に 何 かを入力 し 、上記ボ タ ンを押す と サーバサ イ ドで入力 チ ェックが
行われ、 入 力チェッ ク エラーメ ッ セージが 消 えます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
95
96
7
7 ソースコードの追加、変更
ソースコードの追加、変更
自動生成したソースコードに追加、変更を行ってアプリケーションとして完成させます。
• DAO 追加メソッドの実装
• マッピングクラスの追加
• イベントフレームワークの追加
• アクション別 ServiceController の追加
• 画面レイアウトの変更(JSP の変更)
• プロパティファイルの変更
自動生成 し たファイ ル を直接変 更 後、ジェネ レータを 再 実行する と 変更した フ ァイルが上
書きされ変更内容が失われてしまいますのでここではできるだけ自動生成ファイルの行
わない方 法 をとりま す 。
クラスフ ァ イルの場 合 は、自動生 成された ク ラスのサ ブ クラスを 作 成して必 要 な変更を加
えます。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
97
DAO 追 加 メ ソ ッ ド の 実 装
MessageDAO.java の作成 -------------------------------------------------自 動 生 成 さ れ た BBMessageDAO.java に は 追 加 メ ソ ッ ド シ ー ト で 記 述 し た メ ソ ッ ド の ソ ー
スコード 実 装が含ま れ ていませ ん 。
BBMessageDAO クラスを 継承した BBMessage クラスを作 成 して追加 メ ソッドを オ ーバライ
ドしてロ ジ ックを追 加 実装しま す 。
FrameworkProducer で は 、 エ デ ィ タ 画 面 の プ ロ ジ ェ ク ト ツ リ ー
からデー タ フレーム ワ ークの BBMessage を選択します 。
右側の編 集 画面から D AOを選 択 します。
また、プ ロ パティ画 面 から「DAO クラス名 」の項目を 選 択し、右 側 のボタン を クリックし
ます。
表示され た ダイアロ グ から「新 規 にクラス を 作成」を 選 択し、O K ボタンを ク リックしま
す。
クラス作 成 ウィザー ド で
パッケー ジ 名:imsg.sample.BBPage.model.data
クラス名 :MessageDAO
スーパー ク ラス:imsg.sample.BBPage.model.data.BBMessageDAO
を設定し て 、新規に ク ラスを作 成 します。
作成後 、プロ パティ画 面 の「DAO クラス名」が imsg.sample.BBPage.model.data. MessageDAO
になって い ることを 確 認してく だ さい。
98
7 ソースコードの追加、変更
をダブル ク リックし て 、作成さ れ たクラス を 以下のよ う に編集し ま す。
/*
* MessageDAO.java
*/
package imsg.sample.BBPage.model.data;
import imsg.sample.BBPage.model.object.BBMessageModelObject;
import java.math.BigDecimal;
import java.util.Hashtable;
import java.util.List;
import jp.co.intra_mart.foundation.database.DbsConnection;
import jp.co.intra_mart.framework.base.data.DataAccessException;
import jp.co.intra_mart.framework.base.data.DataConnectException;
import jp.co.intra_mart.framework.base.data.DataPropertyException;
/**
*
*/
public class MessageDAO extends BBMessageDAO {
/**
*
現在登録されているメッセージのうち最大の MessageId を返します。<BR>
*
*
@return BigDecimal 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public double getMaxMessageId()
throws DataConnectException, DataAccessException, DataPropertyException
{
//各変数の初期化
DbsConnection conn = null;
String sql = "";
List list = null;
Hashtable hash = null;
double result = 0;
//DbsConnection の取得
conn = getConnection();
//sql の作成
sql = "SELECT MAX(MESSAGEID) AS messageid FROM BBMESSAGE";
//select 処理
try{
long before = System.currentTimeMillis();
list = conn.select(sql);
double time = ((double)(System.currentTimeMillis() - before))/1000.0;
}catch(Exception ex){
throw new DataAccessException(ex.getMessage(),ex);
}
//DB から取得できたかをチェック
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
99
//取得できなかったときは null を返す
try{
hash = (Hashtable)list.get(0);
}catch(IndexOutOfBoundsException ex){
return result;
}
if(hash.containsKey("messageid")){
result = ((Double)hash.get("messageid")).doubleValue();
}
return result;
}
/**
*
ID を自動生成し、新規メッセージを登録します。<BR>
*
*
@param modelObj BBMessageModelObject 型
*
@return BigDecimal 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public double entry(BBMessageModelObject modelObj)
throws DataConnectException, DataAccessException, DataPropertyException
{
double entryId = getMaxMessageId() + 1;
BBMessageModelObject
のメソッド
modelObj.setMessageId( new BigDecimal(entryId) );
P39
insert( modelObj );
return entryId;
}
参照
BBMessageDAO の
メソッド
P23
参照
/**
*
ルートメッセージのリストを取得します。<BR>
*
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
BBMessageDAO の
メソッド
P21
*/
参照
public List getRootMessages()
throws DataConnectException, DataAccessException, DataPropertyException
{
return createListByWhere("MESSAGEFLAG = '1' AND PARENTID IS NULL");
}
/**
*
指定 ID のルートメッセージリストを取得します。<BR>
*
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
100
BBMessageDAO の
メソッド
P21
参照
7 ソースコードの追加、変更
public List getRootMessages(Number rootMessageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
return createListByWhere("MESSAGEID = " + rootMessageId + " AND MESSAGEFLAG = '1' AND PARENTID IS
NULL");
}
/**
*
指定ルートメッセージの子メッセージのリストを取得します。<BR>
*
*
@param rooMessageId Number 型
*
@return List 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
BBMessageDAO の
メソッド
P21
*/
参照
public List getChildMessages(Number rootMessageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
return createListByWhere("MESSAGEFLAG = '1' AND PARENTID = " + rootMessageId );
}
/**
*
指定 ID を持つメッセージを削除(フラグセット)します。<BR>
*
*
@param messageId Number 型
*
@return void 型の値
*
@throws DataConnectException データ接続に関連する例外が発生
*
@throws DataAccessException データアクセス時の例外が発生
*
@throws DataPropertyException データプロパティ取得時の例外が発生
*/
public void eraseMessage(Number messageId)
throws DataConnectException, DataAccessException, DataPropertyException
{
BBMessageModelObject modelObject = new BBMessageModelObject();
// ModelObject に削除情報を設定
modelObject.setMessageId((BigDecimal)messageId);
// メッセージ ID
modelObject.setMessageFlag("0");
// Update を実行
update(modelObject);
}
// 削除フラグ
BBMessageDAO の
メソッド
P24
参照
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
101
マッピングクラスの追加
自動生成 さ れた package_mapping ファイル を 元に ViewObject と ModelObject を相互変換
するマッ ピ ングクラ ス を作成し ま す。
package_mapping 内のソースコー ド は View―Model 間の型変換を全 く 行ってい な いため 、
型に合わ せ て修正す る 必要があ り ます。
javadoc より
メソッドの概要
static BBMessageModelOb getBBMessageModelObject(BBPageListViewObject viewobj)
ject
BBPageInputViewObject → BBMessageModelObject
static BBPageMessageVie getBBPageMessageViewObject(BBMessageModelObject modelObj)
wObject
BBMessageModelObject → BBPageMessageViewObject
FrameworkProducer では、「 ファ イル」-「新 規」-「 その 他」を 選択 し、選 択ダ イアログ
から「ク ラ ス」を選 択 します。
クラス作 成 ウィザー ド で
パッケー ジ 名:imsg.sample.BBPage.model.object
クラス名 :BBMessageMapping
を設定し て 、新規に ク ラスを作 成 します。
作成され た クラスを 以 下のよう に 編集しま す 。
102
7 ソースコードの追加、変更
なお、参 考 にする package_mapping ファイル は、パッ ケ ージエク ス プローラの src フォル
ダの直下 に ある
package_mapping_BBPageMessageViewObject.txt
package_mapping_BBPageList.txt
です。
マッピングクラス BBMessageMapping.java --------------------------------/*
* Created on 2003/07/31
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package imsg.sample.BBPage.model.object;
import imsg.sample.BBPage.view.object.BBPageListViewObject;
import imsg.sample.BBPage.view.object.BBPageMessageViewObject;
/**
* @author shimodaira
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class BBMessageMapping {
/**
* BBPageInputViewObject → BBMessageModelPbject
*
* @param viewobj
* @return
*/
public static BBMessageModelObject getBBMessageModelObject(BBPageListViewObject viewobj) {
BBMessageModelObject modelobj = new BBMessageModelObject();
modelobj.setMessageId(viewobj.getMessageId());
modelobj.setParentId(viewobj.getParentId());
modelobj.setMessageSubject(viewobj.getMessageSubject());
modelobj.setMessageDate(viewobj.getMessageDate());
modelobj.setMessageBody(viewobj.getMessageBody());
modelobj.setMessageFlag(viewobj.getMessageFlag());
ViewObject か ら
ModelObject へ の
マッピング
modelobj.setUserName(viewobj.getUserName());
modelobj.setUserPassword(viewobj.getUserPassword());
modelobj.setUserEmail(viewobj.getUserEmail());
modelobj.setUserHpName(viewobj.getUserHpName());
modelobj.setUserHpUrl(viewobj.getUserHpUrl());
modelobj.setUserAge(viewobj.getUserAge());
modelobj.setUserSex(viewobj.getUserSex());
// View 側が String 配列で単一選択の場合
if( viewobj.getUserFeel() != null) {
modelobj.setUserFeel(viewobj.getUserFeel()[0]);
ViewObject か ら
ModelObject へ の
マッピング
}
else {
modelobj.setUserFeel(null);
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
103
return modelobj;
}
/**
* BBMessageModelObject → BBPageMessageViewObject
*
* @param viewobj
* @return
*/
public static BBPageMessageViewObject getBBPageMessageViewObject(BBMessageModelObject modelObj) {
BBPageMessageViewObject viewObj = new BBPageMessageViewObject();
if(modelObj.getMessageId() != null)
{ viewObj.setMessageId(modelObj.getMessageId().toString()); }
else
{ viewObj.setMessageId(null); }
if(modelObj.getParentId() != null)
{ viewObj.setParentId(modelObj.getParentId().toString()); }
else
{ viewObj.setParentId(null); }
viewObj.setMessageSubject(modelObj.getMessageSubject());
if(modelObj.getMessageDate() != null)
{ viewObj.setMessageDate(modelObj.getMessageDate().toString()); }
else
{ viewObj.setMessageDate(null); }
ModelObject か ら
ViewObject へ の
マッピング
viewObj.setMessageBody(modelObj.getMessageBody());
viewObj.setMessageFlag(modelObj.getMessageFlag());
viewObj.setUserName(modelObj.getUserName());
viewObj.setUserPassword(modelObj.getUserPassword());
viewObj.setUserEmail(modelObj.getUserEmail());
viewObj.setUserHpName(modelObj.getUserHpName());
viewObj.setUserHpUrl(modelObj.getUserHpUrl());
if(modelObj.getUserAge() != null)
{ viewObj.setUserAge(modelObj.getUserAge().toString()); }
else
{ viewObj.setUserAge(null); }
viewObj.setUserSex(modelObj.getUserSex());
viewObj.setUserFeel(modelObj.getUserFeel());
return viewObj;
}
}
104
ModelObject か ら
ViewObject へ の
マッピング
7 ソースコードの追加、変更
イベントフレームワークの追加
ソースコ ー ドジェネ レ ータと J2EE フレーム ワ ークの対 応 は次のよ う になって い ます。
イベント フ レームワ ー クは自動 生 成されな い ため、ソ ー スコード を 追加しま す 。
• サービスフレームワーク
→ VIEW ジェネレータ
• イベントフレームワーク
• データフレームワーク
→ DAO ジェネレータ
掲示板ア プ リケーシ ョ ンでは次 の イベント を 追加とし て 次の機能 を 追加しま す 。
• 記事一覧の取得 CreateMessageListEvent/CreateMessageListListener/CreateMessageListEventResult
• 記事の登録 EntryMessageEvent/EntryMessageEventListener/EntryMessageEventResult
• 記事の削除 EraseMessageEvent/EraseMessageEventListener/EraseMesageEventResult
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
105
記事一覧の取得 CreateMessageList イベント ------------------------------DAO を利用してデー タ ベースか ら 記事を読 み 込み記事 の 一覧を作 成 します。
記事一覧 は 画面オブ ジ ェクト(BBMessageViewObject クラス)のリストと して返却 さ れます 。
FrameworkProducer では、「BBPage」の右クリ ックメニ ュ
ーから「イ ベントフ レ ームワー ク 作成ウィ ザ ード」を選 択
します。
「イベン ト フレーム ワ ーク作成 ウ ィザード 」 で
イベント ID:CreateMessageList
イベント フ ァクトリ : スタンダ ー ドイベン ト ファクト リ
イベント ク ラス名: 「 新規のク ラ スを作成 」 で作成し ま す。
パッケー ジ 名:imsg.sample.BBPage.model.event
クラス名 :CreateMessageListEvent
イベント 処 理結果ク ラ ス名:「 新 規のクラ ス を作成」 で 作成しま す 。
パッケー ジ 名:imsg.sample.BBPage.model.event
クラス名 :CreateMessageListEventResult
「次へ」 を クリック し ます。
イベント リ スナクラ ス 名:「新 規 のクラス を 作成」で 作 成します 。
パッケー ジ 名:imsg.sample.BBPage.model.event
クラス名 :CreateMessageEventListener
「終了」 を クリック し ます。
エディタ 画 面のツリ ー にイベン ト フレーム ワ ーク(CreateMessageList)が作成され ます。
106
7 ソースコードの追加、変更
をダブル ク リックし て 、CreateMessageListEvent.java ファイルを 編 集します 。
(1) CreateMessageListEvent.java
/*
* CreatMessageListEvent.java
*/
package imsg.sample.BBPage.model.event;
import jp.co.intra_mart.framework.base.event.Event;
/**
* メッセージリスト作成イベントを起動する情報です。
*
* @author name
* @version 1.0
*/
public class CreateMessageListEvent extends Event {
private Number messageId;
/**
* CreateMessageListEvent を新規に生成します。
*/
public CreateMessageListEvent() {
super();
// 属性の初期化
setMessageId(null);
}
/**
* メッセージ ID を取得します。
*
* @return メッセージ ID
*/
public Number getMessageId() {
return messageId;
}
/**
* メッセージ ID を設定します。
*
* @param メッセージ ID
*/
public void setMessageId(Number number) {
messageId = number;
}
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
107
をダブルクリックして CreateMessageEventListener.java を編集します。
(2) CreateMessageEventListener.java
/*
* CreateMessageEventListener.java
*/
package imsg.sample.BBPage.model.event;
import imsg.sample.BBPage.model.data.BBMessageDAOIF;
import imsg.sample.BBPage.model.object.BBMessageMapping;
import imsg.sample.BBPage.model.object.BBMessageModelObject;
import imsg.sample.BBPage.view.object.BBPageMessageViewObject;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import jp.co.intra_mart.framework.base.event.Event;
import jp.co.intra_mart.framework.base.event.EventResult;
import jp.co.intra_mart.framework.base.event.StandardEventListener;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
/**
* メッセージリスト作成イベントの処理を行います。
*
* @author name
* @version 1.0
*/
public class CreateMessageListEventListener extends StandardEventListener {
/**
* メッセージリスト作成イベントに対する処理です。
*
* @param event イベント
* @return イベント処理結果
* @throws SystemException システム例外が発生
* @throws ApplicationException アプリケーション例外が発生
*/
protected EventResult fire(Event event) throws SystemException, ApplicationException {
CreateMessageListEvent listEvent = null;
CreateMessageListEventResult listResult = null;
BBMessageDAOIF dao = null;
List rootMessageList = null;
List rootViewList = null;
Iterator rootItr = null;
// イベントのキャスト
listEvent = (CreateMessageListEvent)event;
// DAO の取得
dao = (BBMessageDAOIF)getDAO("BBPage", "BBMessage", listEvent.getLoginGroupID());
// ルートメッセージの読み出し
if( listEvent.getMessageId() != null ) {
108
7 ソースコードの追加、変更
// 返信時、特定のルートメッセージを取得
rootMessageList = dao.getRootMessages( listEvent.getMessageId() );
}
else {
// 通常時、すべてのルートメッセージを取得
rootMessageList = dao.getRootMessages();
}
if(rootMessageList != null) {
rootViewList = new Vector();
rootItr = rootMessageList.iterator();
}
// ルートメッセージ数だけループ
while( rootItr != null && rootItr.hasNext() ) {
List childViewList = null;
Iterator childItr = null;
// ルートメッセージを ModelObject から ViewObject に変換
BBMessageModelObject rootModelObject = (BBMessageModelObject)rootItr.next();
BBPageMessageViewObject rootViewObject =
BBMessageMapping.getBBPageMessageViewObject( rootModelObject );
// ルートメッセージを親に持つ、子メッセージリストを取得
List childMessageList = dao.getChildMessages( rootModelObject.getMessageId() );
if(childMessageList != null) {
childViewList = new Vector();
childItr = childMessageList.iterator();
マッピングクラス
BBMessageMapping
を利用し、
}
ModelObject か ら
// 子メッセージ数だけループ
while( childItr != null && childItr.hasNext() ) {
ViewObject へ 変 換
// 子 ModelObject を ViewObject に変換して子メッセージをリストに追加
BBPageMessageViewObject childViewObject =
BBMessageMapping.getBBPageMessageViewObject( (BBMessageModelObject)childItr.next());
childViewList.add(childViewObject);
}
// 親メッセージに子メッセージリストを格納し、親メッセージを親メッセージリストに格納
rootViewObject.setChildMessageList( childViewList );
rootViewList.add( rootViewObject );
}
// イベント処理結果の生成
listResult = new CreateMessageListEventResult();
listResult.setRootMessageList( rootViewList );
// イベント処理結果
return listResult;
}
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
109
イベント フ ァクトリ の 右クリッ ク メニュー か ら「イベ ン ト処理結 果 クラスの 編 集」を選択
し、CreateMessageListEventResult.java の編集をします 。
(3) CreateMessageListEventResult.java
/*
* CreateMessageListEventResult.java
*/
package imsg.sample.BBPage.model.event;
import java.util.List;
import jp.co.intra_mart.framework.base.event.EventResult;
/**
* メッセージリスト作成イベントの処理結果です。
*
* @author name
* @version 1.0
*/
public class CreateMessageListEventResult implements EventResult {
/**
* ルートメッセージのリスト
*/
private List rootMessageList;
/**
* CreateMessageListEventResult を新規に生成します。
*/
public CreateMessageListEventResult() {
super();
// 属性の初期化
setRootMessageList(null);
}
/**
* ルートメッセージリストを取得します。
*
* @return ルートメッセージリスト
*/
public List getRootMessageList() {
return rootMessageList;
}
/**
110
7 ソースコードの追加、変更
* ルートメッセージリストを設定します。
*
* @param ルートメッセージリスト
*/
public void setRootMessageList(List list) {
rootMessageList = list;
}
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
111
記事一覧の登録 EntryMessage イベント -----------------------------------入力フォ ー ムで入力 さ れた情報 を 渡し、DAO を利用し て データベ ー スに記事 レ コードを追
加します 。
FrameworkProducer では、「CreateMessageList イベント 」の場合と 同 様な操作 を 行って、
各ファイ ル を編集し ま す。
イベント I Dは EntryMessage となります。
(1) EntryMessageEvent.java
/*
* EntryEvent.java
*/
package imsg.sample.BBPage.model.event;
import imsg.sample.BBPage.view.object.BBPageListViewObject;
import jp.co.intra_mart.framework.base.event.Event;
/**
* メッセージ登録イベントを起動する情報です。
*
* @author name
* @version 1.0
*/
public class EntryMessageEvent extends Event {
/**
* 単一の BBPageListViewObject
*/
private BBPageListViewObject viewObject;
/**
* EntryEvent を新規に生成します。
*/
public EntryMessageEvent() {
super();
// 属性の初期化
setViewObject(null);
}
/**
* ViewObject を取得します。
*
* @return ViewObject
*/
public BBPageListViewObject getViewObject() {
return viewObject;
}
/**
* ViewObject を設定します。
*
112
7 ソースコードの追加、変更
* @param ViewObject
*/
public void setViewObject(BBPageListViewObject object) {
viewObject = object;
}
}
(2) EntryMessageEventListenter.java
/*
* EntryMessageEventListener.java
*/
package imsg.sample.BBPage.model.event;
import imsg.sample.BBPage.model.data.BBMessageDAOIF;
import imsg.sample.BBPage.model.object.BBMessageMapping;
import imsg.sample.BBPage.model.object.BBMessageModelObject;
import java.util.Date;
import jp.co.intra_mart.framework.base.event.Event;
import jp.co.intra_mart.framework.base.event.EventResult;
import jp.co.intra_mart.framework.base.event.StandardEventListener;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
/**
* メッセージ登録イベントの処理を行います。
*
* @author name
* @version 1.0
*/
public class EntryMessageEventListener extends StandardEventListener {
/**
* メッセージ登録イベントに対する処理です。
*
* @param event イベント
* @return イベント処理結果
* @throws SystemException システム例外が発生
* @throws ApplicationException アプリケーション例外が発生
*/
protected EventResult fire(Event event) throws SystemException, ApplicationException {
EntryMessageEvent entryEvent = null;
EntryMessageEventResult entryResult = null;
BBMessageDAOIF dao = null;
BBMessageModelObject modelObject = null;
// イベントのキャスト
entryEvent = (EntryMessageEvent)event;
// DAO の取得
dao = (BBMessageDAOIF)getDAO("BBPage", "BBMessage", entryEvent.getLoginGroupID());
// マッピング
modelObject = BBMessageMapping.getBBMessageModelObject( entryEvent.getViewObject() );
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
113
// 既定値の設定
modelObject.setMessageDate( new Date() );
modelObject.setMessageFlag( "1" );
// システム日付を設定
// 1:通常
0:削除済
// データ登録
dao.entry( modelObject );
// イベント処理結果の生成
entryResult = new EntryMessageEventResult();
entryResult.setModelObject( modelObject );
マッピングクラス
BBMessageMapping
を利用し、
ViewObject か ら
ModelObject へ 変 換
// イベント処理結果
return entryResult;
}
}
(3) EntryMessageEventResult.java
/*
* EntryMessageEventResult.java
*/
package imsg.sample.BBPage.model.event;
import imsg.sample.BBPage.model.object.BBMessageModelObject;
import jp.co.intra_mart.framework.base.event.EventResult;
/**
* メッセージ登録イベントの処理結果です。
*
* @author name
* @version 1.0
*/
public class EntryMessageEventResult implements EventResult {
/**
* 単一の BBMessageModelObject
*/
private BBMessageModelObject modelObject;
/**
* EntryMessageEventResult を新規に生成します。
*/
public EntryMessageEventResult() {
super();
// 属性の初期化
setModelObject(null);
}
/**
* ModelObject を取得します。
*
* @return ModelObject
*/
public BBMessageModelObject getModelObject() {
114
7 ソースコードの追加、変更
return modelObject;
}
/**
* ModelObject を設定します。
*
* @param ModelObject
*/
public void setModelObject(BBMessageModelObject object) {
modelObject = object;
}
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
115
記事一覧の削除 EraseMessage イベント -----------------------------------DAO を利用してデー タ ベースの 記 事レコー ド に削除フ ラ グをセッ ト します。
FrameworkProducer では、「CreateMessageList イベント 」の場合と 同 様な操作 を 行って、
各ファイ ル を編集し ま す。
イベント I Dは EraseMessage となります。
(1) EraseMessageEvent.java
/*
* EraseMessageEvent.java
*/
package imsg.sample.BBPage.model.event;
import jp.co.intra_mart.framework.base.event.Event;
/**
* メッセージ削除イベントを起動する情報です。
*
* @author name
* @version 1.0
*/
public class EraseMessageEvent extends Event {
private Number messageId;
/**
* EraseMessageListEvent を新規に生成します。
*/
public EraseMessageEvent() {
super();
// 属性の初期化
setMessageId(null);
}
/**
* メッセージ ID を取得します。
*
* @return メッセージ ID
*/
public Number getMessageId() {
return messageId;
}
/**
* メッセージ ID を設定します。
*
* @param メッセージ ID
*/
public void setMessageId(Number number) {
messageId = number;
}
116
7 ソースコードの追加、変更
}
・
(2) EraseMessageEventListenter.java
/*
* EraseMessageEventListener.java
*/
package imsg.sample.BBPage.model.event;
import imsg.sample.BBPage.model.data.BBMessageDAOIF;
import jp.co.intra_mart.framework.base.event.Event;
import jp.co.intra_mart.framework.base.event.EventResult;
import jp.co.intra_mart.framework.base.event.StandardEventListener;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
/**
* メッセージ削除イベントの処理を行います。
*
* @author name
* @version 1.0
*/
public class EraseMessageEventListener extends StandardEventListener {
/**
* メッセージ削除イベントに対する処理です。
*
* @param event イベント
* @return イベント処理結果
* @throws SystemException システム例外が発生
* @throws ApplicationException アプリケーション例外が発生
*/
protected EventResult fire(Event event) throws SystemException, ApplicationException {
EraseMessageEvent eraseEvent = null;
EraseMessageEventResult eraseResult = null;
BBMessageDAOIF dao = null;
// イベントのキャスト
eraseEvent = (EraseMessageEvent)event;
// DAO の取得
dao = (BBMessageDAOIF)getDAO("BBPage", "BBMessage", eraseEvent.getLoginGroupID());
// 削除メソッドの呼び出し
dao.eraseMessage(eraseEvent.getMessageId());
// イベント処理結果の生成
eraseResult = new EraseMessageEventResult();
// イベント処理結果
return eraseResult;
}
}
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
117
(3) EraseMessageEventResult.java
/*
* EraseMessageListEventResult.java
*/
package imsg.sample.BBPage.model.event;
import jp.co.intra_mart.framework.base.event.EventResult;
/**
* メッセージ削除イベントの処理結果です。
*
* @author name
* @version 1.0
*/
public class EraseMessageEventResult implements EventResult {
/**
* EraseMessageListEventResult を新規に生成します。
*/
public EraseMessageEventResult() {
super();
}
}
118
7 ソースコードの追加、変更
ア ク シ ョ ン 別 ServiceController の 追 加
JSP の各アクション ボ タンに対 応 する ServiceController を追加し ます。
こ ち ら も 自 動 生 成 さ れ た BBPageListServiceController ク ラ ス を 継 承 し て 必 要 な 処 理 を
加えた新 し いクラス を 作成しま す 。
• 初期表示
StartMessageListServiceController
• 一覧表示
CreateMessageListServiceController
• 投稿(entry)
EntryMessageServiceController
• 返信(reply)
CreateMessageListServiceController
• 削除(erase)
EraseMessageServiceController
初期表示 StartMessageListServiceController ----------------------------メニュー か ら最初に 呼 び出され 、初期化を 行 い、初期 画 面を表示 す るサービ ス コントロー
ラです。
FrameworkProducer では、サービ ス (BBPageListService)を選択し ま す。
以下のよ う にプロパ テ ィを変更 し ます。
サービス ID、サービ ス 名:start
コントロ ー ラクラス 名:右側のボ タ ンから「新 規 のクラス を 作成」を選 択 して作成 し ます。
パッケー ジ 名:imsg.sample.BBPage.controller.service
クラス名 :StartMessageListServiceController
スーパー ク ラス: imsg.sample.BBPage.controller.service.BBPageListServiceController
StartMessageListServiceController.java を編集します 。
/*
* StartServiceController.java
*/
package imsg.sample.BBPage.controller.service;
import imsg.sample.BBPage.model.event.CreateMessageListEvent;
import imsg.sample.BBPage.model.event.CreateMessageListEventResult;
import imsg.sample.BBPage.view.object.BBPageListViewIdentifier;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
119
import imsg.sample.BBPage.view.object.BBPageListViewObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jp.co.intra_mart.framework.base.service.ServiceResult;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
/**
* @author * @version 1.0
*/
public class StartMessageServiceController extends BBPageListServiceController {
public ServiceResult service() throws SystemException, ApplicationException {
ViewObject を 一 意 に す る
HttpServletRequest req = getRequest();
HttpSession session = req.getSession();
id を 取 得
String viewId = new BBPageListViewIdentifier().getId();
ServiceResult serviceResult = null;
id か ら ViewObject を
取得
// ViewObject の取得
BBPageListViewObject viewObj = (BBPageListViewObject)session.getAttribute(viewId);
ViewObject に
viewObj.setMessageId(null);
null を セ ッ ト
viewObj.setParentId(null);
viewObj.clearErrorMessageMap();
// メッセージ情報を題名、本文を画面より消去
ViewObject に
viewObj.setParentId( null );
null を セ ッ ト
viewObj.setMessageSubject( null );
viewObj.setMessageBody( null );
// メッセージリスト取得イベント
{
CreateMessageListEvent event = (CreateMessageListEvent)createEvent("BBPage",
"CreateMessageList");
CreateMessageListEventResult result =
(CreateMessageListEventResult)dispatchEvent(event);
viewObj.setRootMessageList( result.getRootMessageList() );
}
BBPageListViewObject の メ ソ ッ ド
return serviceResult;
}
}
120
P75
参照
7 ソースコードの追加、変更
一覧表示、返信(reply) CreateMessageListServiceController --------------記事の一 覧 表示のデ ー タを用意 す るサービ ス コントロ ー ラです。
通常はす べ ての記事 を 、返信時 は 返信元の 記 事のみを 一 覧表示し ま す。
FrameworkProducer では、サービ ス (reply)を選択しま す 。
以下のよ う にプロパ テ ィを変更 し ます。
コントロ ー ラクラス 名:右側のボ タ ンから「新 規 のクラス を 作成」を選 択 して作成 し ます。
パッケー ジ 名:imsg.sample.BBPage.controller.service
クラス名 :CreateMessageListServiceController
スーパー ク ラス: imsg.sample.BBPage.controller.service.BBPageListServiceController
サービス (reply)から遷移ペー ジ(BBPageList)に接続を 作 成します 。
CreateMessageListServiceController.java を編集します 。
/*
* CreateMessageServiceController.java
*/
package imsg.sample.BBPage.controller.service;
import imsg.sample.BBPage.model.event.CreateMessageListEvent;
import imsg.sample.BBPage.model.event.CreateMessageListEventResult;
import imsg.sample.BBPage.view.object.BBPageListViewIdentifier;
import imsg.sample.BBPage.view.object.BBPageListViewObject;
import java.math.BigDecimal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jp.co.intra_mart.framework.base.service.ServiceResult;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
/**
* @author * @version 1.0
*/
public class CreateMessageListServiceController extends BBPageListServiceController {
public ServiceResult service() throws SystemException, ApplicationException {
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
121
HttpServletRequest req = getRequest();
HttpSession session = req.getSession();
String viewId = new BBPageListViewIdentifier().getId();
ViewObject を 一 意 に す る
id を 取 得
// ViewObject の取得
BBPageListViewObject viewObj = (BBPageListViewObject)session.getAttribute(viewId);
id か ら ViewObject を 取 得
// チェックのクリア
viewObj.clearErrorMessageMap();
エラー情報をクリアするメソッド
SourceGenerator パ ッ ケ ー ジ の ViewObject
// メッセージリスト取得イベント
ク ラ ス の clearErrorMessageMap メ ソ ッ ド
CreateMessageListEvent event = (CreateMessageListEvent)createEvent("BBPage",
"CreateMessageList");
if( viewObj.getParentId() != null && !viewObj.getParentId().equals("") ) {
event.setMessageId( new BigDecimal(viewObj.getParentId()) );
}
CreateMessageListEventResult result = (CreateMessageListEventResult)dispatchEvent(event);
viewObj.setRootMessageList( result.getRootMessageList() );
BBPageListViewObject の メ ソ ッ ド
ServiceResult serviceResult = null;
return serviceResult;
}
}
122
P75
参照
7 ソースコードの追加、変更
投稿(entry) EntryMessageServiceController -----------------------------記事の新 規 投稿、返 信 投稿を行 う サービス コ ントロー ラ です。
FrameworkProducer では、サービ ス (entry)を選択しま す 。
以下のよ う にプロパ テ ィを変更 し ます。
コントロ ー ラクラス 名:右側のボ タ ンから「新 規 のクラス を 作成」を選 択 して作成 し ます。
パッケー ジ 名:imsg.sample.BBPage.controller.service
クラス名 :EntryMessageServiceController
スーパー ク ラス: imsg.sample.BBPage.controller.service.BBPageListServiceController
サービス (entry)から遷移ペー ジ(BBPageList)に接続を 作 成します 。
EntryMessageServiceController.java を編集し ます。
/*
* EntryMessageServiceController.java
*/
package imsg.sample.BBPage.controller.service;
import imsg.sample.BBPage.model.event.CreateMessageListEvent;
import imsg.sample.BBPage.model.event.CreateMessageListEventResult;
import imsg.sample.BBPage.model.event.EntryMessageEvent;
import imsg.sample.BBPage.model.event.EntryMessageEventResult;
import imsg.sample.BBPage.view.object.BBPageListViewIdentifier;
import imsg.sample.BBPage.view.object.BBPageListViewObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jp.co.intra_mart.framework.base.service.ServiceResult;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
123
/**
* @author * @version 1.0
*/
public class EntryMessageServiceController extends BBPageListServiceController {
public ServiceResult service() throws SystemException, ApplicationException {
HttpServletRequest req = getRequest();
HttpSession session = req.getSession();
String viewId = new BBPageListViewIdentifier().getId();
ServiceResult serviceResult = null;
ViewObject を 一 意 に す る
id を 取 得
// ViewObject の取得
BBPageListViewObject viewObj = (BBPageListViewObject)session.getAttribute(viewId);
id か ら ViewObject を 取 得
// 必須項目が入力されていない場合は登録しない。
if( !viewObj.isValid() ) {
return serviceResult;
}
// HP 名が空で URL が入っているときは URL を HP 名とする
if( viewObj.getUserHpUrl() != null && !viewObj.getUserHpUrl().equals("")) {
if( viewObj.getUserHpName() == null || viewObj.getUserHpName().equals("")) {
viewObj.setUserHpName( viewObj.getUserHpUrl() );
}
ViewObject に URL を セ ッ ト
}
// メッセージ登録イベント
{
EntryMessageEvent event = (EntryMessageEvent)createEvent("BBPage", "EntryMessage");
event.setViewObject( viewObj );
EntryMessageEventResult result = (EntryMessageEventResult)dispatchEvent(event);
}
// 登録済のメッセージ情報を題名、本文を画面より消去
viewObj.setParentId( null );
ViewObject に
viewObj.setMessageSubject( null );
null を セ ッ ト
viewObj.setMessageBody( null );
// メッセージリスト取得イベント
{
CreateMessageListEvent event = (CreateMessageListEvent)createEvent("BBPage",
"CreateMessageList");
CreateMessageListEventResult result =
(CreateMessageListEventResult)dispatchEvent(event);
viewObj.setRootMessageList( result.getRootMessageList() );
}
BBPageListViewObject の メ ソ ッ ド
return serviceResult;
}
}
124
P75
参照
7 ソースコードの追加、変更
削除(erase) EraseMessageServiceController -----------------------------記事を削 除 するサー ビ スコント ロ ーラです 。
FrameworkProducer では、サービ ス (erase)を選択しま す 。
以下のよ う にプロパ テ ィを変更 し ます。
コントロ ー ラクラス 名 :右側の ボ タンから 「 新規のク ラ スを作成 」 から作成 し ます。
パッケー ジ 名:imsg.sample.BBPage.controller.service
クラス名 :EraseMessageServiceController
スーパー ク ラス: imsg.sample.BBPage.controller.service.BBPageListServiceController
サービス (erase)から遷移ペー ジ(BBPageList)に接続を 作 成します 。
EraseMessageServiceController.java を編集し ます。
/*
* EraseMessageServiceController.java
*/
package imsg.sample.BBPage.controller.service;
import imsg.sample.BBPage.model.event.CreateMessageListEvent;
import imsg.sample.BBPage.model.event.CreateMessageListEventResult;
import imsg.sample.BBPage.model.event.EraseMessageEvent;
import imsg.sample.BBPage.model.event.EraseMessageEventResult;
import imsg.sample.BBPage.view.object.BBPageListViewIdentifier;
import imsg.sample.BBPage.view.object.BBPageListViewObject;
import java.math.BigDecimal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jp.co.intra_mart.framework.base.service.ServiceResult;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
125
import jp.co.intra_mart.framework.system.exception.SystemException;
/**
* @author * @version 1.0
*/
public class EraseMessageServiceController extends BBPageListServiceController {
public ServiceResult service() throws SystemException, ApplicationException {
HttpServletRequest req = getRequest();
ViewObject を 一 意 に す る
HttpSession session = req.getSession();
id を 取 得
String viewId = new BBPageListViewIdentifier().getId();
id か ら ViewObject を 取 得
// ViewObject の取得
BBPageListViewObject viewObj = (BBPageListViewObject)session.getAttribute(viewId);
エラー情報をクリアするメソッド
// チェックのクリア
viewObj.clearErrorMessageMap();
// メッセージ削除イベント
SourceGenerator パ ッ ケ ー ジ の ViewObject
ク ラ ス の clearErrorMessageMap メ ソ ッ ド
if( viewObj.getSelectedId() != null && !viewObj.getSelectedId().equals("") ) {
// 選択されたメッセージ ID を event オブジェクトに設定
EraseMessageEvent event = (EraseMessageEvent)createEvent("BBPage", "EraseMessage");
event.setMessageId( new BigDecimal(viewObj.getSelectedId()) );
// メッセージ削除イベントの呼び出し
EraseMessageEventResult result = (EraseMessageEventResult)dispatchEvent(event);
}
// メッセージリスト取得イベント
{
CreateMessageListEvent event = (CreateMessageListEvent)createEvent("BBPage",
"CreateMessageList");
CreateMessageListEventResult result =
(CreateMessageListEventResult)dispatchEvent(event);
viewObj.setRootMessageList( result.getRootMessageList() );
}
BBPageListViewObject の メ ソ ッ ド
ServiceResult serviceResult = null;
return serviceResult;
}
}
126
P75
参照
7 ソースコードの追加、変更
画 面 レ イ ア ウ ト の 変 更 (JSP の 変 更 )
JSP はレイアウトの 変 更が入る た め大幅な 変 更が必要 に なります 。
継承はで き ませんが、上書きの 危 険を避け る ため、自動 生成ソー ス をコピー し て別の JSP
ファイル を 作成しま す 。
FrameworkProducer では、パッケ ー ジエクス プ ローラの
webapp\imsg\sample\BBPage\jsp\BBPageList.jsp ファイル を編集し ま す。
MessageListView.jsp ---------------------------------------------------<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Shift_JIS" %>
<%--<%@ page errorPage="" %> --%>
<%@ page import="java.util.*"%>
<%@ page import="imsg.sample.BBPage.view.object.*"%>
<%@ taglib prefix="imartj2ee" uri="http://www.intra-mart.co.jp/taglib/core/framework" %>
<%@ taglib prefix="imtag" uri="http://www.intra-mart.co.jp/taglib/core/standard" %>
<%@ taglib prefix="imsg" uri="/jp.co.intra_mart.framework.tools.sourcegenerator.taglib" %>
<jsp:useBean id="BBPageList" class="imsg.sample.BBPage.view.object.BBPageListViewObject" scope="session"
/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>
<P>掲示板 (imsg サンプル)<BR>
<imartj2ee:Form application="BBPage" service="Default" method="POST"
name="mainfrm">
<!-- <INPUT type="submit" value="BBPageListServiceController を呼び出す"> -->
<!--入力チェックのエラー表示-->
<FONT color="red"><%= BBPageList.getErrorMessageReadableText() %></FONT>
<HR>
<imsg:Hidden beanname="BBPageList" property="messageId" />
<imsg:Hidden beanname="BBPageList" property="parentId" />
<imsg:Hidden beanname="BBPageList" property="messageFlag" value="1" />
<TABLE border="0">
<TR>
<TD align="right">題名(*)</TD>
<TD align="left">
<% String blnNewOrReply = (BBPageList.getParentId() == null ||
BBPageList.getParentId().equals("")) ? "true" : "false"; %>
<imtag:Condition validity="<%= blnNewOrReply %>">
<imsg:Text beanname="BBPageList" property="messageSubject" size="60"
maxlength="100" />
<imartj2ee:Submit service="entry" value="新規に投稿" />
</imtag:Condition>
<imtag:Condition validity="<%= blnNewOrReply %>" negative >
<imsg:View beanname="BBPageList" property="messageSubject" />
<imsg:Hidden beanname="BBPageList" property="messageSubject" />
<imartj2ee:Submit service="entry" value="返信する" />
<imartj2ee:Submit service="cancel" value="キャンセル" />
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
127
</imtag:Condition>
</TD>
</TR>
<TR>
<TD align="right" valign="top">本文(*)</TD>
<TD align="left"><imsg:TextArea beanname="BBPageList" property="messageBody"
cols="60" rows="6"></imsg:TextArea></TD>
</TR>
<TR>
<TD align="right">名前(*)</TD>
<TD align="left"><imsg:Text beanname="BBPageList" property="userName" size="40"
maxlength="100" /></TD>
</TR>
<TR>
<TD align="right">パスワード</TD>
<TD align="lieft"><imsg:Password beanname="BBPageList" property="userPassword"
size="40" maxlength="100" /></TD>
</TR>
<TR>
<TD align="right">e-mail</TD>
<TD align="left"><imsg:Text beanname="BBPageList" property="userEmail" size="40"
maxlength="100" /></TD>
</TR>
<TR>
<TD align="right">HomePage 名</TD>
<TD align="left"><imsg:Text beanname="BBPageList" property="userHpName" size="60"
maxlength="100" /></TD>
</TR>
<TR>
<TD align="right">HomePage URL</TD>
<TD align="left"><imsg:Text beanname="BBPageList" property="userHpUrl"
size="60" maxlength="100" /></TD>
</TR>
<TR>
<TD align="right">年齢</TD>
<TD align="left"><imsg:Text beanname="BBPageList" property="userAge" size="6"
maxlength="6" /><TD>
</TR>
<TR>
<TD align="right">性別</TD>
<TD align="left">
<imsg:Radio beanname="BBPageList" property="userSex" value="1" />男性
<imsg:Radio beanname="BBPageList" property="userSex" value="2" />女性
</TD>
</TR>
<TR>
<TD align="right">気分</TD>
<TD align="left">
<imsg:Select beanname="BBPageList" property="userFeel">
<imsg:Option value="1">喜</imsg:Option>
<imsg:Option value="2">怒</imsg:Option>
<imsg:Option value="3">哀</imsg:Option>
<imsg:Option value="4">楽</imsg:Option>
</imsg:Select>
</TD>
</TR>
</TABLE>
<P>
<CENTER>
128
7 ソースコードの追加、変更
<%-- ルートメッセージ (ネストオブジェクト BBPageMessageViewObject) --%>
<%
{
String nest1_tagName = "rootMessageList$";
List nest1_list = BBPageList.getRootMessageList();
Iterator nest1_itr = null;
int nest1_index = 0;
if( nest1_list != null ) {
nest1_itr = nest1_list.iterator();
}
while( nest1_itr != null && nest1_itr.hasNext() ) {
BBPageMessageViewObject nest1_viewObj = (BBPageMessageViewObject)nest1_itr.next();
%>
<TABLE border="1" width="80%" rules="none"
bgcolor="#EAF4FF">
<TR>
<TH align="left" colspan="2" bgcolor="#0000CC">
<FONT color="white">
<%-- 題名 --%>
<imsg:View beanname="<%= nest1_viewObj %>" property="messageSubject" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageSubject" name="<%=
nest1_tagName + nest1_index + "$messageSubject" %>" />
</FONT>
</TH>
</TR>
<TR>
<TD bgcolor="#66CCFF" colspan="2">
<%-- 名前 --%>
<imtag:Condition validity="<%=
(nest1_viewObj.getUserEmail() == null || nest1_viewObj.getUserEmail().equals("")) ? "true" : "false"
%>">
<imsg:View beanname="<%= nest1_viewObj %>" property="userName" />
</imtag:Condition>
<imtag:Condition validity="<%=
(nest1_viewObj.getUserEmail() == null || nest1_viewObj.getUserEmail().equals("")) ? "true" : "false"
%>"
negative>
<A HREF="mailto:<imsg:View beanname="<%= nest1_viewObj %>"
property="userEmail" />">
<imsg:View beanname="<%= nest1_viewObj %>" property="userName" />
</A>
</imtag:Condition>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userName" name="<%=
nest1_tagName + nest1_index + "$userName" %>" />
<%-- ホームページ名 --%>
<imtag:Condition validity="<%=
(nest1_viewObj.getUserHpUrl() != null && !nest1_viewObj.getUserHpUrl().equals("")) ? "true" : "false"
%>">
<FONT size="-1">
(<A HREF="<imsg:View beanname="<%=
nest1_viewObj %>" property="userHpUrl" />">
<imsg:View beanname="<%=
nest1_viewObj %>" property="userHpName" />
</A>)
</FONT>
</imtag:Condition>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userHpName" name="<%=
nest1_tagName + nest1_index + "$userHpName" %>" />
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userHpUrl" name="<%=
nest1_tagName + nest1_index + "$userHpUrl" %>" />
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
129
<%-- 発信日時 --%>
<FONT size="-1">
<imsg:View beanname="<%= nest1_viewObj %>" property="messageDate" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageDate"
name="<%= nest1_tagName + nest1_index + "$messageDate" %>" />
</FONT>
</TD>
</TR>
<TR>
<TD colspan="2">
<%-- 本文 --%>
<imsg:View beanname="<%= nest1_viewObj %>" property="messageBody" /><BR>
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageBody" name="<%=
nest1_tagName + nest1_index + "$messageBody" %>" />
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageFlag" name="<%=
nest1_tagName + nest1_index + "$messageFlag" %>" />
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userPassword"
name="<%= nest1_tagName + nest1_index + "$userPassword" %>" />
<%-- e-mail --%>
<!-- <imsg:View beanname="<%= nest1_viewObj %>" property="userEmail" /><BR> -->
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userEmail" name="<%=
nest1_tagName + nest1_index + "$userEmail" %>" />
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userAge" name="<%=
nest1_tagName + nest1_index + "$userAge" %>" />
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userSex" name="<%=
nest1_tagName + nest1_index + "$userSex" %>" />
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="userFeel" name="<%=
nest1_tagName + nest1_index + "$userFeel" %>" />
</TD>
</TR>
<TR>
<TD width="20" align="right" valign="top">
<%-- 項番 --%>
<!-- <%= nest1_index + 1 %> -->
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="messageId" name="<%=
nest1_tagName + nest1_index + "$messageId" %>" />
<imsg:Hidden beanname="<%= nest1_viewObj %>" property="parentId" name="<%=
nest1_tagName + nest1_index + "$parentId" %>" />
</TD>
<TD>
<%-- 子メッセージ (ネストオブジェクト BBPageMessageViewObject) --%>
<%
{
String nest2_tagName = new String(nest1_tagName + nest1_index +
"$childMessageList$");
List nest2_list = nest1_viewObj.getChildMessageList();
Iterator nest2_itr = null;
int nest2_index = 0;
if( nest2_list != null ) {
nest2_itr = nest2_list.iterator();
}
while( nest2_itr != null && nest2_itr.hasNext() ) {
BBPageMessageViewObject nest2_viewObj =
(BBPageMessageViewObject)nest2_itr.next();
130
7 ソースコードの追加、変更
%>
<TABLE border="0" width="100%" frame="above">
<TR>
<TD bgcolor="#66CCFF">
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageId"
name="<%= nest2_tagName + nest2_index + "$messageId" %>" />
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="parentId"
name="<%= nest2_tagName + nest2_index + "$parentId" %>" />
<%-- 名前 --%>
<imtag:Condition validity="<%=
(nest2_viewObj.getUserEmail() == null || nest2_viewObj.getUserEmail().equals("")) ? "true" : "false"
%>">
<imsg:View beanname="<%= nest2_viewObj %>"
property="userName" />
</imtag:Condition>
<imtag:Condition validity="<%=
(nest2_viewObj.getUserEmail() == null || nest2_viewObj.getUserEmail().equals("")) ? "true" : "false"
%>"
negative>
<A HREF="mailto:<imsg:View beanname="<%=
nest2_viewObj %>" property="userEmail" />">
<imsg:View beanname="<%= nest2_viewObj %>"
property="userName" />
</A>
</imtag:Condition>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userName"
name="<%= nest2_tagName + nest2_index + "$userName" %>" />
<%-- ホームページ名 --%>
<imtag:Condition validity="<%=
(nest2_viewObj.getUserHpUrl() != null && !nest2_viewObj.getUserHpUrl().equals("")) ? "true" : "false"
%>">
<FONT size="-1">
(<A HREF="<imsg:View
beanname="<%= nest2_viewObj %>" property="userHpUrl" />">
<imsg:View beanname="<%=
nest2_viewObj %>" property="userHpName" />
</A>)
</FONT>
</imtag:Condition>
<%-- 発信日時 --%>
<FONT size="-1">
<imsg:View beanname="<%= nest2_viewObj %>" property="messageDate" />
<imsg:Hidden beanname="<%= nest2_viewObj %>"
property="messageDate" name="<%= nest2_tagName + nest2_index + "$messageDate" %>" />
</FONT>
</TD>
</TR>
<TR>
<TD bgcolor="white">
<%-- 本文 --%>
<imsg:View beanname="<%= nest2_viewObj %>" property="messageBody"
/><BR>
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageBody"
name="<%= nest2_tagName + nest2_index + "$messageBody" %>" />
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageFlag"
name="<%= nest2_tagName + nest2_index + "$messageFlag" %>" />
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userPassword"
name="<%= nest2_tagName + nest2_index + "$userPassword" %>" />
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
131
<%-- 題名 --%>
<!-- <imsg:View beanname="<%= nest2_viewObj %>"
property="messageSubject" /><BR> -->
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="messageSubject"
name="<%= nest2_tagName + nest2_index + "$messageSubject" %>" />
<%-- e-mail --%>
<!-- <imsg:View beanname="<%= nest2_viewObj %>" property="userEmail"
/><BR> -->
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userEmail"
name="<%= nest2_tagName + nest2_index + "$userEmail" %>" />
<%-- ホームページ名 --%>
<!-- <imsg:View beanname="<%= nest2_viewObj %>" property="userHpName"
/><BR> -->
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userHpName"
name="<%= nest2_tagName + nest2_index + "$userHpName" %>" />
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userHpUrl"
name="<%= nest2_tagName + nest2_index + "$userHpUrl" %>" />
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userAge"
name="<%= nest2_tagName + nest2_index + "$userAge" %>" />
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userSex"
name="<%= nest2_tagName + nest2_index + "$userSex" %>" />
<imsg:Hidden beanname="<%= nest2_viewObj %>" property="userFeel"
name="<%= nest2_tagName + nest2_index + "$userFeel" %>" />
</TD>
</TR>
</TABLE>
<%
nest2_index++;
}
}
%>
</TD>
</TR>
<TR>
<TD align="center" colspan="2">
<!-- 返信ボタン -->
<imartj2ee:Submit application="BBPage" service="reply" value="返
信"
onclick="<%= "document.mainfrm.parentId.value = '" +
nest1_viewObj.getMessageId() + "' ;"
+ "document.mainfrm.messageSubject.value
= 'Re: " + nest1_viewObj.getMessageSubject() + "'" %>" />
<!-- 削除ボタン -->
<imartj2ee:Submit application="BBPage" service="erase" value="削
除"
onclick="<%= "document.mainfrm.selectedId.value = '" +
nest1_viewObj.getMessageId() + "'" %>" />
</TD>
</TR>
</TABLE>
<P>
<%
nest1_index++;
}
132
7 ソースコードの追加、変更
}
%>
</CENTER>
<imsg:Hidden beanname="BBPageList" property="selectedId" />
<HR>
<!-<imartj2ee:Submit service="entry" value="投稿" /><BR>
<imartj2ee:Submit service="reply" value="返信" /><BR>
<imartj2ee:Submit service="erace" value="削除" /><BR>
-->
</imartj2ee:Form>
</BODY>
</HTML>
プロパティファイルの変更
新しいク ラ スに対応 す るように、サービス プ ロパティ と データプ ロ パティフ ァ イルを変更
します。
FrameworkProducer では、エディ タ 画面の「 プ ロジェク ト 」を選択 し ます。
「エクス ポ ート」ボ タ ンをクリ ッ クします 。
以下のフ ァ イルが、 パ ッケージ エ クスプロ ー ラの src フォルダに 作 成されま す 。
ServiceConfig_BBPage.properties ---------------------------------------controller.class.BBPageListDefault = imsg.sample.BBPage.controller.service.BBPageListServiceController
nextpage.path.BBPageListDefault = /imsg/sample/BBPage/jsp/BBPageList.jsp
controller.class.start = imsg.sample.BBPage.controller.service.StartMessageServiceController
nextpage.path.start = /imsg/sample/BBPage/jsp/MessageListView.jsp
controller.class.cancel = imsg.sample.BBPage.controller.service.StartMessageServiceController
nextpage.path.cancel = /imsg/sample/BBPage/jsp/MessageListView.jsp
controller.class.entry = imsg.sample.BBPage.controller.service.EntryMessageServiceController
nextpage.path.entry = /imsg/sample/BBPage/jsp/MessageListView.jsp
controller.class.reply = imsg.sample.BBPage.controller.service.CreateMessageListServiceController
nextpage.path.reply = /imsg/sample/BBPage/jsp/MessageListView.jsp
controller.class.erase = imsg.sample.BBPage.controller.service.EraseMessageServiceController
nextpage.path.erase = /imsg/sample/BBPage/jsp/MessageListView.jsp
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
133
EventConfig_BBPage.properties -----------------------------------------event.class.CreateMessageList = imsg.sample.BBPage.model.event.CreateMessageListEvent
factory.class.CreateMessageList = jp.co.intra_mart.framework.base.event.StandardEventListenerFactory
factory.param.CreateMessageList.listener = imsg.sample.BBPage.model.event.CreateMessageEventListener
event.class.EraseMessage = imsg.sample.BBPage.model.event.EraseMessageEvent
factory.class.EraseMessage = jp.co.intra_mart.framework.base.event.StandardEventListenerFactory
factory.param.EraseMessage.listener = imsg.sample.BBPage.model.event.EraseMessageEventListener
event.class.EntryMessage = imsg.sample.BBPage.model.event.EntryMessageEvent
factory.class.EntryMessage = jp.co.intra_mart.framework.base.event.StandardEventListenerFactory
factory.param.EntryMessage.listener = imsg.sample.BBPage.model.event.EntryMessageEventListener
DataConfig_BBPage.properties ------------------------------------------dao.connector.BBMessage = intra_mart_db
dao.class.BBMessage = imsg.sample.BBPage.model.data.MessageDAO
134
7 ソースコードの追加、変更
掲示板アプリケーションの実行
掲示板アプリケーションのソースファイル一覧 ----------------------------(Framework Producer プロジェク ト のソース フ ァイルの み)
[sample]
├ [src]
│
├ [imsg]
│
│
│
│
│
│
├ [controller]
│
│
│
│
│
│
├ BBPageListServiceController.java
│
│
│
├ CreateMessageListServiceController.java
│
│
│
├ EntryMessageServiceController.java
│
│
│
├ EraseMessageServiceController.java
│
│
│
└ StartMessageServiceController.java
│
│
├ [model]
│
│
│
├ [data]
│
│
│
│
├ BBMessageDAO.java
│
│
│
│
├ BBMessageDAOIF.java
│
│
│
│
└ MessageDAO.java
│
│
│
├ [event]
│
│
│
│
│
│
│
│
├ CreateMessageListEventListener.java
│
│
│
│
├ CreateMessageListEventResult.java
│
│
│
│
├ EntryMessageEvent.java
│
│
│
│
├ EntryMessageEventListener.java
│
│
│
│
├ EntryMessageEventResult.java
│
│
│
│
├ EraseMessageEvent.java
│
│
│
│
├ EraseMessageEventListener.java
│
│
│
│
└ EraseMessageEventResult.java
│
│
│
└ [object]
│
│
│
├ BBMessageMapping.java
│
│
│
└ BBMessageModelObject.java
│
│
└ [view]
│
│
│
│
├ BBPageListViewIdentifier.java
│
│
├ BBPageListViewObject.java
│
│
└ BBPageMessageViewObject.java
│
├ DataConfig_BBPage.properties
│
├ EventConfig_BBPage.properties
│
├ package_mapping_BBPageList.txt
│
├ package_mapping_BBPageMessageViewObject.txt
│
└ ServiceConfig_BBPage.properties
└ [sample]
└ [BBPage]
└ [service]
├ CreateMessageListEvent.java
└ [object]
└ [webapp]
└ [imsg]
└ [sample]
└ [BBPage]
└ [jsp]
├ BBPageList.jsp
└ MessageListView.jsp
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
135
テーブル BBMESSAGE の作成 ----------------------------------------------デフォル ト データベ ー スで下記 SQL を実行し て BBMESSAGE テーブル を作成し ま す。
CREATE TABLE BBMESSAGE (
messageId
NUMBER(10) PRIMARY KEY,
parentId
NUMBER(10),
-- メッセージ ID
-- 親メッセージ ID
messageSubject VARCHAR2(255),
-- メッセージ 題名
messageDate
DATE,
-- メッセージ 発信日時
messageBody
VARCHAR2(1500),
-- メッセージ 本文
messageFlag
CHAR(1) DEFAULT '1',
-- メッセージ フラグ 有効:1 削除:0
userName
VARCHAR2(255),
-- 発信者 名前
userPassword
VARCHAR2(255),
-- 発信者 パスワード
userEmail
VARCHAR2(255),
-- 発信者 e-mail
userHpName
VARCHAR2(255),
-- 発信者 ホームページ名
userHpUrl
VARCHAR2(255),
-- 発信者 ホームページ URL
userAge
NUMBER(3),
-- 発信者 年齢
userSex
CHAR(1),
-- 発信者 性別 男性:1 女性:2
userFeel
CHAR(1)
-- 発信者 気分
);
メニューの設定 --------------------------------------------------------下記の設 定 でメニュ ー を追加し ま す。
(生成ソー スを動作 さ せた設定 か らはサー ビ ス ID のみを修正)
新しいク ラ スに対応 す るように、サービス プ ロパティ と データプ ロ パティフ ァ イルを変更
します。
プロパテ ィ ファイル の 変更は、e ビルダー を 利用する と ビジュア ル に操作で き ます。
注意事項
• テーブルで日付型を利用しているため、JDBC ドライバのバージョンによっては動作しないことがありま
す。Oracle9i JDBC 9.2.0 で動作を確認しています。できるだけ最新のドライバをご使用下さい。
• 厳密な入力チェックを行っていません。数値項目には数値入力は数値以外の入力はしないで下さい。
136
7 ソースコードの追加、変更
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
137
8
付録
SourceGenerator タ グ ラ イ ブ ラ リ 機 能
SourceGenerator タグラ イブ ラ リ を 使用 す る に は、 タ グ ラ イブ ラ リ を 使用 す る JSP のペ
ージで、 以 下のよう な taglib ディレクティ ブ を指定す る 必要があ り ます。
<%@
taglib
prefix="imsg"
uri="/jp.co.intra_mart.framework.tools.sourcegenerator.taglib" %>
uri 属性には "/jp.co.intra_mart.framework.tools.sourcegenerator.taglib" を指定し
てくださ い 。 prefix 属性は、そ のページ で 使用され る 全てのタ グ ライブラ リ の前に付加
され る XML 名前空 間 識 別子 を 指定 する も ので 、 任意 の 名 前を 付 けて も構 い ませ ん。(以
下、この API リストで は、 prefix 属性を "imsg" として説明しま す)
< サ ンプ ル >
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Shift_JIS" %>
<%@
taglib
prefix="imsg"
uri="/jp.co.intra_mart.framework.tools.sourcegenerator.taglib" %>
<jsp:useBean id="id" class="ViewObject" scope="session" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>
キーワー ド<BR>
<imsg:Text beanname="bean" property="item" size="80" maxlength="40"
"Defaultkeyword" />
</BODY>
</HTML>
138
value
=
8 付録
Text
テ キ ス ト フ ィ ー ル ド の 入 力 形 式 を 持 つ HTML 要 素 <INPUT type=” text” >タ グ を 生 成 し ま
す。
初 期 値 (value)に 属 性 (beanname、 property)で 指 定 さ れ た Bean の プ ロ パ テ ィ 値 を セ ッ ト
します。
Tag ボ デ ィ
空
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の INPUT タ グ に 準 じ ま す 。
属性
名前
beanname
必須
実行時評価
Yes
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
accesskey
No
Yes
HTML に お け る INPUT タ グ の accesskey 属 性 に 相 当 し ま す 。
alt
No
Yes
HTML に お け る INPUT タ グ の alt 属 性 に 相 当 し ま す 。
altkey
No
Yes
HTML に お け る INPUT タ グ の altkey 属 性 に 相 当 し ま す 。
class
No
Yes
HTML に お け る INPUT タ グ の class 属 性 に 相 当 し ま す 。
dir
No
Yes
HTML に お け る INPUT タ グ の dir 属 性 に 相 当 し ま す 。
disabled
No
Yes
HTML に お け る INPUT タ グ の disabled 属 性 に 相 当 し ま す 。
id
No
Yes
HTML に お け る INPUT タ グ の id 属 性 に 相 当 し ま す 。
lang
No
Yes
HTML に お け る INPUT タ グ の lang 属 性 に 相 当 し ま す 。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
139
maxlength
No
Yes
HTML に お け る INPUT タ グ の maxlength 属 性 に 相 当 し ま す 。
name
No
Yes
HTML に お け る INPUT タ グ の name 属 性 に 相 当 し ま す 。
省 略 し た 場 合 は beanname 属 性 が 使 わ れ ま す 。
onblur
No
Yes
HTML に お け る INPUT タ グ の onBlur 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onchange
No
Yes
HTML に お け る INPUT タ グ の onChange 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onclick
No
Yes
HTML に お け る INPUT タ グ の onClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
ondbclick
No
Yes
HTML に お け る INPUT タ グ の onDbClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onfocus
No
Yes
HTML に お け る INPUT タ グ の onFocus 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeydown
No
Yes
HTML に お け る INPUT タ グ の onKeyDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeypress
No
Yes
HTML に お け る INPUT タ グ の onKeyPress 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeyup
No
Yes
HTML に お け る INPUT タ グ の onKeyUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousedown
No
Yes
HTML に お け る INPUT タ グ の onMouseDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousemove
140
No
Yes
8 付録
HTML に お け る INPUT タ グ の onMouseMove 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseout
No
Yes
HTML に お け る INPUT タ グ の onMouseOut 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseover
No
Yes
HTML に お け る INPUT タ グ の onMouseOver 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseup
No
Yes
HTML に お け る INPUT タ グ の onMouseUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onselect
No
Yes
HTML に お け る INPUT タ グ の onSelect 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
readonly
No
Yes
HTML に お け る INPUT タ グ の readonly 属 性 に 相 当 し ま す 。
size
No
Yes
HTML に お け る INPUT タ グ の size 属 性 に 相 当 し ま す 。
style
No
Yes
HTML に お け る INPUT タ グ の style 属 性 に 相 当 し ま す 。
styleclass
No
Yes
HTML に お け る INPUT タ グ の styleclass 属 性 に 相 当 し ま す 。
styleid
No
Yes
HTML に お け る INPUT タ グ の styleid 属 性 に 相 当 し ま す 。
tabindex
No
Yes
HTML に お け る INPUT タ グ の tabindex 属 性 に 相 当 し ま す 。
title
No
Yes
HTML に お け る INPUT タ グ の title 属 性 に 相 当 し ま す 。
titlekey
No
Yes
HTML に お け る INPUT タ グ の titlekey 属 性 に 相 当 し ま す 。
value
No
Yes
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
141
初 期 値 を 設 定 し ま す 。 (Bean の プ ロ パ テ ィ 値 が null の 場 合 に 適 用 さ れ ま す )
使用例
テキストの表示
<imsg:Text beanname="bean" property="item" size="80"
maxlength="40" value = "value1" />
Checkbox
チ ェ ッ ク ボ ッ ク ス の 入 力 形 式 を 持 つ HTML 要 素 <INPUT type=” checkbox” >タ グ を 生 成 し
ます。
value 属 性 値 と 処 理 対 象 の Bean の プ ロ パ テ ィ 値 の い ず れ か が 一 致 し た 場 合 、 checked 属
性を出力します。
Tag ボ デ ィ
空
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の INPUT タ グ に 準 じ ま す 。
属性
名前
beanname
必須
実行時評価
Yes
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
value
Yes
Yes
処 理 対 象 の value 値 を 指 定 し ま す 。
accesskey
No
HTML に お け る INPUT タ グ の
alt
No
HTML に お け る INPUT タ グ の
altkey
No
HTML に お け る INPUT タ グ の
checked
142
No
Yes
accesskey 属 性 に 相 当 し ま す 。
Yes
alt 属 性 に 相 当 し ま す 。
Yes
altkey 属 性 に 相 当 し ま す 。
Yes
8 付録
初 期 状 態 を 設 定 し ま す 。 (Bean の プ ロ パ テ ィ 値 が null の 場 合 に 適 用 さ れ ま す )
class
No
HTML に お け る INPUT タ グ の
dir
disabled 属 性 に 相 当 し ま す 。
Yes
id 属 性 に 相 当 し ま す 。
Yes
lang 属 性 に 相 当 し ま す 。
No
HTML に お け る INPUT タ グ の
name
Yes
No
HTML に お け る INPUT タ グ の
maxlength
dir 属 性 に 相 当 し ま す 。
No
HTML に お け る INPUT タ グ の
lang
Yes
No
HTML に お け る INPUT タ グ の
id
class 属 性 に 相 当 し ま す 。
No
HTML に お け る INPUT タ グ の
disabled
Yes
Yes
maxlength 属 性 に 相 当 し ま す 。
No
HTML に お け る INPUT タ グ の
Yes
name 属 性 に 相 当 し ま す 。
省 略 し た 場 合 は beanname 属 性 が 使 わ れ ま す 。
onblur
No
HTML に お け る INPUT タ グ の
Yes
onBlur 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onchange
No
HTML に お け る INPUT タ グ の
Yes
onChange 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onclick
No
HTML に お け る INPUT タ グ の
Yes
onClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
ondblclick
No
Yes
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
143
HTML に お け る INPUT タ グ の
onDblClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onfocus
No
HTML に お け る INPUT タ グ の
Yes
onFocus 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeydown
No
HTML に お け る INPUT タ グ の
Yes
onKeyDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeypress
No
HTML に お け る INPUT タ グ の
Yes
onKeyPress 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeyup
No
HTML に お け る INPUT タ グ の
Yes
onKeyUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousedown
No
HTML に お け る INPUT タ グ の
Yes
onMouseDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousemove
No
HTML に お け る INPUT タ グ の
Yes
onMouseMove 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseout
No
HTML に お け る INPUT タ グ の
Yes
onMouseOut 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseover
No
HTML に お け る INPUT タ グ の
Yes
onMouseOver 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseup
No
HTML に お け る INPUT タ グ の
Yes
onMouseUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
144
8 付録
readonly
No
HTML に お け る INPUT タ グ の
size
No
HTML に お け る INPUT タ グ の
style
No
HTML に お け る INPUT タ グ の
styleclass
No
HTML に お け る INPUT タ グ の
styleid
No
HTML に お け る INPUT タ グ の
tabindex
No
HTML に お け る INPUT タ グ の
title
No
HTML に お け る INPUT タ グ の
titlekey
No
HTML に お け る INPUT タ グ の
Yes
readonly 属 性 に 相 当 し ま す 。
Yes
size 属 性 に 相 当 し ま す 。
Yes
style 属 性 に 相 当 し ま す 。
Yes
styleclass 属 性 に 相 当 し ま す 。
Yes
styleid 属 性 に 相 当 し ま す 。
Yes
tabindex 属 性 に 相 当 し ま す 。
Yes
title 属 性 に 相 当 し ま す 。
Yes
titlekey 属 性 に 相 当 し ま す 。
使用例
チェックボックスの表示
<imsg:Checkbox beanname="bean" property="item" value="1" />商 品 1<BR>
<imsg:Checkbox beanname="bean" property="item" value="2" />商 品 2<BR>
<imsg:Checkbox beanname="bean" property="item" value="3" />商 品 3<BR>
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
145
Hidden
隠 し フ ィ ー ル ド を 持 つ HTML 要 素 <INPUT type=” hidden” >タ グ を 生 成 し ま す 。
初 期 値 ( v a l u e ) に 属 性 ( b e a n n a m e 、p r o p e r t y ) で 指 定 さ れ た B e a n の プ ロ パ テ ィ 値 を セ ッ ト
します。
Tag ボ デ ィ
空
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の INPUT タ グ に 準 じ ま す 。
属性
名前
beanname
必須
実行時評価
Yes
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
alt
No
HTML に お け る INPUT タ グ の
altkey
No
HTML に お け る INPUT タ グ の
name
No
HTML に お け る INPUT タ グ の
Yes
alt 属 性 に 相 当 し ま す 。
Yes
altkey 属 性 に 相 当 し ま す 。
Yes
name 属 性 に 相 当 し ま す 。
省 略 し た 場 合 は beanname 属 性 が 使 わ れ ま す 。
title
No
HTML に お け る INPUT タ グ の
titlekey
No
HTML に お け る INPUT タ グ の
value
No
Yes
title 属 性 に 相 当 し ま す 。
Yes
titlekey 属 性 に 相 当 し ま す 。
Yes
初 期 値 を 設 定 し ま す 。 (Bean の プ ロ パ テ ィ 値 が null の 場 合 に 適 用 さ れ ま す )
使用例
隠しフィールドの設定
146
<imsg:Hidden beanname="bean" property="item" value="value" />
8 付録
Password
パ ス ワ ー ド の 入 力 形 式 を 持 つ HTML 要 素 <INPUT type=” password” >タ グ を 生 成 し ま す 。
初 期 値 ( v a l u e ) に 属 性 ( b e a n n a m e 、p r o p e r t y ) で 指 定 さ れ た B e a n の プ ロ パ テ ィ 値 を セ ッ ト し
ます。
Tag ボ デ ィ
空
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の INPUT タ グ に 準 じ ま す 。
属性
名前
beanname
必須
Yes
実行時評価
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
accesskey
No
Yes
HTML に お け る INPUT タ グ の accesskey 属 性 に 相 当 し ま す 。
alt
No
Yes
HTML に お け る INPUT タ グ の alt 属 性 に 相 当 し ま す 。
altkey
No
Yes
HTML に お け る INPUT タ グ の altkey 属 性 に 相 当 し ま す 。
class
No
Yes
HTML に お け る INPUT タ グ の class 属 性 に 相 当 し ま す 。
dir
No
Yes
HTML に お け る INPUT タ グ の dir 属 性 に 相 当 し ま す 。
disabled
No
Yes
HTML に お け る INPUT タ グ の disabled 属 性 に 相 当 し ま す 。
id
No
Yes
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
147
HTML に お け る INPUT タ グ の id 属 性 に 相 当 し ま す 。
lang
No
Yes
HTML に お け る INPUT タ グ の lang 属 性 に 相 当 し ま す 。
maxlength
No
Yes
HTML に お け る INPUT タ グ の maxlength 属 性 に 相 当 し ま す 。
name
No
Yes
HTML に お け る INPUT タ グ の name 属 性 に 相 当 し ま す 。
省 略 し た 場 合 は beanname 属 性 が 使 わ れ ま す 。
onblur
No
Yes
HTML に お け る INPUT タ グ の onBlur 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onchange
No
Yes
HTML に お け る INPUT タ グ の onChange 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onclick
No
Yes
HTML に お け る INPUT タ グ の oncCick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
ondbclick
No
Yes
HTML に お け る INPUT タ グ の onDbClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onfocus
No
Yes
HTML に お け る INPUT タ グ の onFocus 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeydown
No
Yes
HTML に お け る INPUT タ グ の onKeyDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeypress
148
No
Yes
8 付録
HTML に お け る INPUT タ グ の onKeyPress 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeyup
No
Yes
HTML に お け る INPUT タ グ の onKeyUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousedown
No
Yes
HTML に お け る INPUT タ グ の onMouseDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousemove
No
Yes
HTML に お け る INPUT タ グ の onMouseMove 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseout
No
Yes
HTML に お け る INPUT タ グ の onMouseOut 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseover
No
Yes
HTML に お け る INPUT タ グ の onMouseOver 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseup
No
Yes
HTML に お け る INPUT タ グ の onMouseUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onselect
No
Yes
HTML に お け る INPUT タ グ の onselect 属 性 に 相 当 し ま す 。
readonly
No
Yes
HTML に お け る INPUT タ グ の readonly 属 性 に 相 当 し ま す 。
size
No
Yes
HTML に お け る INPUT タ グ の size 属 性 に 相 当 し ま す 。
style
No
Yes
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
149
HTML に お け る INPUT タ グ の style 属 性 に 相 当 し ま す 。
styleclass
No
Yes
HTML に お け る INPUT タ グ の styleclass 属 性 に 相 当 し ま す 。
styleid
No
Yes
HTML に お け る INPUT タ グ の styleid 属 性 に 相 当 し ま す 。
tabindex
No
Yes
HTML に お け る INPUT タ グ の tabindex 属 性 に 相 当 し ま す 。
title
No
Yes
HTML に お け る INPUT タ グ の title 属 性 に 相 当 し ま す 。
titlekey
No
Yes
HTML に お け る INPUT タ グ の titlekey 属 性 に 相 当 し ま す 。
value
No
Yes
初 期 値 を 設 定 し ま す 。 (Bean の プ ロ パ テ ィ 値 が null の 場 合 に 適 用 さ れ ま す )
使用例
パスワードフィールドの表示
<imsg:Password beanname="bean" property="item" size="80" maxlength="40"
value="DefaultPassword" />
150
8 付録
Radio
ラ ジ オ ボ タ ン の 入 力 形 式 を 持 つ HTML 要 素 <INPUT type=” radio” >タ グ を 生 成 し ま す 。
value 属 性 値 と Bean の プ ロ パ テ ィ 値 が 一 致 し た 場 合 、 checked 属 性 を 出 力 し ま す 。
Tag ボ デ ィ
空
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の INPUT タ グ に 準 じ ま す 。
属性
名前
beanname
必須
Yes
実行時評価
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
value
Yes
Yes
ラ ジ オ ボ タ ン の value 値 を 指 定 し ま す 。
accesskey
No
Yes
HTML に お け る INPUT タ グ の accesskey 属 性 に 相 当 し ま す 。
alt
No
Yes
HTML に お け る INPUT タ グ の alt 属 性 に 相 当 し ま す 。
altkey
No
Yes
HTML に お け る INPUT タ グ の altkey 属 性 に 相 当 し ま す 。
checked
No
Yes
初 期 状 態 を 設 定 し ま す 。 (Bean の プ ロ パ テ ィ 値 が null の 場 合 に 適 用 さ れ ま す )
class
No
Yes
HTML に お け る INPUT タ グ の class 属 性 に 相 当 し ま す 。
dir
No
Yes
HTML に お け る INPUT タ グ の dir 属 性 に 相 当 し ま す 。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
151
disabled
No
Yes
HTML に お け る INPUT タ グ の disabled 属 性 に 相 当 し ま す 。
id
No
Yes
HTML に お け る INPUT タ グ の id 属 性 に 相 当 し ま す 。
lang
No
Yes
HTML に お け る INPUT タ グ の lang 属 性 に 相 当 し ま す 。
maxlength
No
Yes
HTML に お け る INPUT タ グ の maxlength 属 性 に 相 当 し ま す 。
name
No
Yes
HTML に お け る INPUT タ グ の name 属 性 に 相 当 し ま す 。
省 略 し た 場 合 は beanname 属 性 が 使 わ れ ま す 。
onblur
No
Yes
HTML に お け る INPUT タ グ の onBlur 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onchange
No
Yes
HTML に お け る INPUT タ グ の onChange 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onclick
No
Yes
HTML に お け る INPUT タ グ の onClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
ondblclick
No
Yes
HTML に お け る INPUT タ グ の onDblClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onfocus
No
Yes
HTML に お け る INPUT タ グ の onFocus 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeydown
152
No
Yes
8 付録
HTML に お け る INPUT タ グ の onKeyDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeypress
No
Yes
HTML に お け る INPUT タ グ の onKeyPress 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeyup
No
Yes
HTML に お け る INPUT タ グ の onKeyUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousedown
No
Yes
HTML に お け る INPUT タ グ の onMouseDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousemove
No
Yes
HTML に お け る INPUT タ グ の onMouseMove 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseout
No
Yes
HTML に お け る INPUT タ グ の onMouseOut 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseover
No
Yes
HTML に お け る INPUT タ グ の onMouseOver 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseup
No
Yes
HTML に お け る INPUT タ グ の onMouseUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
readonly
No
Yes
HTML に お け る INPUT タ グ の readonly 属 性 に 相 当 し ま す 。
size
No
Yes
HTML に お け る INPUT タ グ の size 属 性 に 相 当 し ま す 。
style
No
Yes
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
153
HTML に お け る INPUT タ グ の style 属 性 に 相 当 し ま す 。
styleclass
No
Yes
HTML に お け る INPUT タ グ の styleclass 属 性 に 相 当 し ま す 。
styleid
No
Yes
HTML に お け る INPUT タ グ の styleid 属 性 に 相 当 し ま す 。
tabindex
No
Yes
HTML に お け る INPUT タ グ の tabindex 属 性 に 相 当 し ま す 。
title
No
Yes
HTML に お け る INPUT タ グ の title 属 性 に 相 当 し ま す 。
titlekey
No
Yes
HTML に お け る INPUT タ グ の titlekey 属 性 に 相 当 し ま す 。
使用例
ラジオボタンの表示
<imsg:Radio beanname="bean" property="item" value="1" />商 品 1<BR>
<imsg:Radio beanname="bean" property="item" value="2" />商 品 2<BR>
154
8 付録
TextArea
複 数 行 テ キ ス ト フ ィ ー ル ド の 入 力 形 式 を 持 つ HTML 要 素 <TEXTAREA>タ グ を 生 成 し ま す 。
BODY に 属 性 (beanname、 property)で 指 定 し た Bean の プ ロ パ テ ィ 値 を セ ッ ト し ま す 。
JSP
Tag ボ デ ィ
初期値を指定します。
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の TEXTAREA タ グ に 準 じ ま す 。
属性
名前
beanname
必須
Yes
実行時評価
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
accesskey
No
Yes
HTML に お け る TEXTAREA タ グ の accesskey 属 性 に 相 当 し ま す 。
alt
No
Yes
HTML に お け る TEXTAREA タ グ の alt 属 性 に 相 当 し ま す 。
altkey
No
Yes
HTML に お け る TEXTAREA タ グ の altkey 属 性 に 相 当 し ま す 。
class
No
Yes
HTML に お け る TEXTAREA タ グ の class 属 性 に 相 当 し ま す 。
cols
No
Yes
HTML に お け る TEXTAREA タ グ の cols 属 性 に 相 当 し ま す 。
dir
No
Yes
HTML に お け る TEXTAREA タ グ の dir 属 性 に 相 当 し ま す 。
disabled
No
Yes
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
155
HTML に お け る TEXTAREA タ グ の disabled 属 性 に 相 当 し ま す 。
id
No
Yes
HTML に お け る TEXTAREA タ グ の id 属 性 に 相 当 し ま す 。
lang
No
Yes
HTML に お け る TEXTAREA タ グ の lang 属 性 に 相 当 し ま す 。
name
No
Yes
HTML に お け る TEXTAREA タ グ の name 属 性 に 相 当 し ま す 。
省 略 し た 場 合 は beanname 属 性 が 使 わ れ ま す 。
onblur
No
Yes
HTML に お け る TEXTAREA タ グ の onBlur 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onchange
No
Yes
HTML に お け る TEXTAREA タ グ の onChange 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onclick
No
Yes
HTML に お け る TEXTAREA タ グ の onClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
ondblclick
No
Yes
HTML に お け る TEXTAREA タ グ の onDblClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onfocus
No
Yes
HTML に お け る TEXTAREA タ グ の onFocus 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeydown
No
Yes
HTML に お け る TEXTAREA タ グ の onKeyDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeypress
156
No
Yes
8 付録
HTML に お け る TEXTAREA タ グ の onKeyPress 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeyup
No
Yes
HTML に お け る TEXTAREA タ グ の onKeyUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousedown
No
Yes
HTML に お け る TEXTAREA タ グ の onMouseDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousemove
No
Yes
HTML に お け る TEXTAREA タ グ の onMouseMove 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseout
No
Yes
HTML に お け る TEXTAREA タ グ の onMouseOut 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseover
No
Yes
HTML に お け る TEXTAREA タ グ の onMouseOver 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseup
No
Yes
HTML に お け る TEXTAREA タ グ の onMouseUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onselect
No
Yes
HTML に お け る TEXTAREA タ グ の onselect 属 性 に 相 当 し ま す 。
readonly
No
Yes
HTML に お け る TEXTAREA タ グ の readonly 属 性 に 相 当 し ま す 。
rows
No
Yes
HTML に お け る TEXTAREA タ グ の rows 属 性 に 相 当 し ま す 。
style
No
Yes
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
157
HTML に お け る TEXTAREA タ グ の style 属 性 に 相 当 し ま す 。
styleclass
No
Yes
HTML に お け る TEXTAREA タ グ の styleclass 属 性 に 相 当 し ま す 。
styleid
No
Yes
HTML に お け る TEXTAREA タ グ の styleid 属 性 に 相 当 し ま す 。
tabindex
No
Yes
HTML に お け る TEXTAREA タ グ の tabindex 属 性 に 相 当 し ま す 。
title
No
Yes
HTML に お け る TEXTAREA タ グ の title 属 性 に 相 当 し ま す 。
titlekey
No
Yes
HTML に お け る TEXTAREA タ グ の titlekey 属 性 に 相 当 し ま す 。
wrap
No
Yes
HTML に お け る TEXTAREA タ グ の wrap 属 性 に 相 当 し ま す 。
使用例
複数テキストフィールドの表示
<imsg:TextArea beanname="bean" property="item" cols="60" rows="5"/>
158
8 付録
View
プロパティ値を表示します。
Tag ボ デ ィ
空
制約
なし
属性
名前
beanname
必須
Yes
実行時評価
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
value
No
Yes
初 期 値 を 設 定 し ま す 。 (Bean の プ ロ パ テ ィ 値 が null の 場 合 に 適 用 さ れ ま す )
使用例
bean の プ ロ パ テ ィ 値 の 表 示
<imsg:View beanname="bean" property="item" />
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
159
Select
<SELECT>タ グ を 生 成 し ま す 。 内 部 タ グ に 記 述 さ れ た <imsg:Option />タ グ は beanname、
property 属 性 を 省 略 で き ま す 。
こ の と き Option タ グ は Select タ グ の beanname、 property 属 性 を 参 照 し ま す 。
Tag ボ デ ィ
JSP
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の SELECT タ グ に 準 じ ま す 。
属性
名前
beanname
必須
Yes
実行時評価
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
Yes
Yes
処理対象のプロパティを指定します。
class
No
Yes
HTML に お け る SELECT タ グ の class 属 性 に 相 当 し ま す 。
dir
No
Yes
HTML に お け る SELECT タ グ の dir 属 性 に 相 当 し ま す 。
disabled
No
Yes
HTML に お け る SELECT タ グ の disabled 属 性 に 相 当 し ま す 。
id
No
Yes
HTML に お け る SELECT タ グ の id 属 性 に 相 当 し ま す 。
lang
No
Yes
HTML に お け る SELECT タ グ の lang 属 性 に 相 当 し ま す 。
multiple
No
Yes
HTML に お け る SELECT タ グ の multiple 属 性 に 相 当 し ま す 。
name
160
No
Yes
8 付録
HTML に お け る SELECT タ グ の name 属 性 に 相 当 し ま す 。
省 略 し た 場 合 は beanname 属 性 が 使 わ れ ま す 。
onblur
No
Yes
HTML に お け る SELECT タ グ の onBlur 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onchange
No
Yes
HTML に お け る SELECT タ グ の onChange 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onclick
No
Yes
HTML に お け る SELECT タ グ の onClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
ondblclick
No
Yes
HTML に お け る SELECT タ グ の onDblClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onfocus
No
Yes
HTML に お け る SELECT タ グ の onFocus 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeydown
No
Yes
HTML に お け る SELECT タ グ の onKeyDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeypress
No
Yes
HTML に お け る SELECT タ グ の onKeyPress 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeyup
No
Yes
HTML に お け る SELECT タ グ の onKeyUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousedown
No
Yes
HTML に お け る SELECT タ グ の onMouseDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
161
onmousemove
No
Yes
HTML に お け る SELECT タ グ の onMouseMove 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseout
No
Yes
HTML に お け る SELECT タ グ の onMouseOut 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseover
No
Yes
HTML に お け る SELECT タ グ の onMouseOver 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseup
No
Yes
HTML に お け る SELECT タ グ の onMouseUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
size
No
Yes
HTML に お け る SELECT タ グ の size 属 性 に 相 当 し ま す 。
style
No
Yes
HTML に お け る SELECT タ グ の style 属 性 に 相 当 し ま す 。
tabindex
No
Yes
HTML に お け る SELECT タ グ の tabindex 属 性 に 相 当 し ま す 。
title
No
Yes
HTML に お け る SELECT タ グ の title 属 性 に 相 当 し ま す 。
内部タグ
Optionタ グ
<SELECT>タ グ の オ プ シ ョ ン 要 素 と な る HTML 要 素 <OPTION>タ グ を 生 成 し ま す 。
value 属 性 値 と 処 理 対 象 の Bean の プ ロ パ テ ィ (配 列 )の い ず れ か の 値 が 一 致 し た 場 合 、
selected 属 性 を 出 力 し ま す 。
使用例
リストボックスの表示
162
8 付録
<imsg:Select beanname="bean" property="item" size="10">
<imsg:Option value="1">January</imsg:Option>
<imsg:Option value="2">February</imsg:Option>
</imsg:Select>
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
163
Option
<SELECT>タ グ の オ プ シ ョ ン 要 素 と な る HTML 要 素 <OPTION>タ グ を 生 成 し ま す 。
value 属 性 値 と 処 理 対 象 の Bean の プ ロ パ テ ィ (配 列 )の い ず れ か の 値 が 一 致 し た 場 合 、
selected 属 性 を 出 力 し ま す 。
Tag ボ デ ィ
JSP
制約
本 タ グ を 配 置 す る 場 所 は 、 HTML の OPTION タ グ に 準 じ ま す 。
属性
名前
beanname
必須
No
実行時評価
Yes
処理対象のオブジェクトを指定します。
※文字列を記述した場合と実行時評価を記述した場合で動作が異なります。
property
No
Yes
処理対象のプロパティを指定します。
value
Yes
Yes
処 理 対 象 の value 値 を 指 定 し ま す 。
class
No
Yes
HTML に お け る OPTION タ グ の class 属 性 に 相 当 し ま す 。
dir
No
Yes
HTML に お け る OPTION タ グ の dir 属 性 に 相 当 し ま す 。
disabled
No
Yes
HTML に お け る OPTION タ グ の disabled 属 性 に 相 当 し ま す 。
id
No
Yes
HTML に お け る OPTION タ グ の id 属 性 に 相 当 し ま す 。
lang
No
Yes
HTML に お け る OPTION タ グ の lang 属 性 に 相 当 し ま す 。
onclick
164
No
Yes
8 付録
HTML に お け る OPTION タ グ の onClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
ondbclick
No
Yes
HTML に お け る OPTION タ グ の onDbClick 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeydown
No
Yes
HTML に お け る OPTION タ グ の onKeyDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeypress
No
Yes
HTML に お け る OPTION タ グ の onKeyPress 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onkeyup
No
Yes
HTML に お け る OPTION タ グ の onKeyUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousedown
No
Yes
HTML に お け る OPTION タ グ の onMouseDown 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmousemove
No
Yes
HTML に お け る OPTION タ グ の onMouseMove 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseout
No
Yes
HTML に お け る OPTION タ グ の onMouseOut 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseover
No
Yes
HTML に お け る OPTION タ グ の onMouseOver 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
onmouseup
No
Yes
HTML に お け る OPTION タ グ の onMouseUp 属 性 に 相 当 し ま す 。
注意:属性名はすべて小文字で記述してください。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
165
selected
No
Yes
HTML に お け る OPTION タ グ の selected 属 性 に 相 当 し ま す 。
style
No
Yes
HTML に お け る OPTION タ グ の style 属 性 に 相 当 し ま す 。
title
No
Yes
HTML に お け る OPTION タ グ の title 属 性 に 相 当 し ま す 。
使用例
ドロップダウンリストの表示
<select name="month">
<imsg:Option beanname="bean" property="item" value="1">January</imsg:Option>
<imsg:Option beanname="bean" property="item" value="2">February</imsg:Option>
</select>
※beanname に 文字 列を記 述し た場合 と実 行時評 価を 記述し た場 合の動 作の 違い
・ 文字 列を記 述し た場合
この 名 前を持つ オ ブジェク ト がページ 、リクエス ト 、セッシ ョ ン、アプ リ ケーション
の各スコ ー プから検 索 されます 。
(記述例 )beanname="viewObj"
・ 実行 時評価 を記 述した 場合
この 名 前のスク リ プティン グ 変数が使 わ れます。
(記述例 )beanname="<%= viewObj %>"
(文 字列 と実行 時評 価の動 作の 違い)
<%
// ス ク リ プ テ ィ ン グ 変 数 viewObj
ViewObject viewObj = new ViewObject();
viewObj.setItem("コ ー ラ ");//ア イ テ ム プ ロ パ テ ィ に "コ ー ラ "を 設 定 し ま す
// セ ッ シ ョ ン ス コ ー プ の オ ブ ジ ェ ク ト viewObj
session.setAttribute("viewObj", viewObj);//セ ッ シ ョ ン ス コ ー プ に viewObj を 格 納 し ま す
viewObj = new ViewObject();
viewObj.setItem("ペ プ シ ");//Item プ ロ パ テ ィ に "ペ プ シ "を 設 定 し ま す
%>
JSP ソ ー ス : <ismg:Text beanname="viewObj" property="item" />
HTML 出 力 : <INPUT type="text" name="viewObj" value="コ ー ラ ">
166
8 付録
JSP ソ ー ス : <ismg:Text beanname="<%= viewObj %>" property="item" />
HTML 出 力 : <INPUT type="text" name="viewObj" value="ペ プ シ ">
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
167
SourceGenerator 拡 張 ク ラ ス ラ イ ブ ラ リ 機 能
intra-mart SourceGenerator パ ッ ケ ー ジ
jp.co.intra_mart.framework.tools.sourcegenerator.model
モデルオブジェクト操作ク
ラス
jp.co.intra_mart.framework.tools.sourcegenerator.taglib タ グ ラ イ ブ ラ リ
jp.co.intra_mart.framework.tools.sourcegenerator.util
汎用関数
jp.co.intra_mart.framework.tools.sourcegenerator.view
ビューオブジェクト操作ク
ラス
パッケージ jp.co.intra_mart.framework.tools.sourcegenerator.model -----インタフェースの概要
ModelObjectIF ModelObject を 継 承 す る ク ラ ス が 実 装 す る イ ン タ ー フ ェ ー ス で す 。
クラスの概要
FiliationComponent 階 層 関 係 の 処 理 を す る ク ラ ス で す 。
ModelObject
タイトル: 自動生成するモデルオブジェクトの親クラスです。
StatusObject
ステータスモデルオブジェクト
パッケージ jp.co.intra_mart.framework.tools.sourcegenerator.taglib ----クラスの概要
HtmlCheckboxTag
チェックボックス
HtmlHiddenTag
隠しフィールド
HtmlOptionTag
オプションボタン
HtmlPasswordTag
パスワード
HtmlRadioTag
ラジオボタン
HtmlSelectTag
選択リスト
HtmlTextAreaTag
テキストエリア
HtmlTextTag
テキスト
HtmlViewTag
ビュー
ImsgBodyTagSupport
SourceGenerator 向 け の メ ソ ッ ド を 追 加 し た BodyTagSupport ク ラ ス で
す。
ImsgTagSupport
SourceGenerator 向 け の メ ソ ッ ド を 追 加 し た TagSupport ク ラ ス で す 。
パッケージ jp.co.intra_mart.framework.tools.sourcegenerator.util ------クラスの概要
AccessIDGenerator オ ブ ジ ェ ク ト ア ク セ ス ID の 作 成
168
DateFunction
日付関連関数群
InputCheck
入力チェック関数群
NumericFunction
数値関連関数群
8 付録
StringCompilation 文 字 列 比 較
パッケージ jp.co.intra_mart.framework.tools.sourcegenerator.view ------インタフェースの概要
ViewObjectIF ViewObject を 継 承 す る ク ラ ス が 実 装 す る イ ン タ ー フ ェ ー ス で す 。
クラスの概要
ViewIdentifier
ViewObject の 親 オ ブ ジ ェ ク ト を 特 定 す る た め の 識 別 子 を 保 持 す る ク ラ ス
です。
ViewObject
画面情報を保持するクラスです。
intra-mart J2EE ソースコードジェネレータ チュートリアルガイド
169
8 付録
プログラミング・ガイド J2EE ベース開発モデル