org.opengion.hayabusa.taglib
クラス TableUpdateParamTag
java.lang.Object
javax.servlet.jsp.tagext.TagSupport
javax.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.TableUpdateParamTag
- すべての実装されたインタフェース:
- Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally
public class TableUpdateParamTag
- extends CommonTagSupport
TableUpdateTag にパラメーターを渡す為のタグクラスです。
汎用的なデータベース登録処理を行えるタグ tableUpdate タグを新規作成します。
これは、具体的なSLQを作成する tableUpdateParam タグと組み合わせて使用できます。
tableUpdate タグは、queryType に JDBCTableUpdate を指定します。基本的にこれだけ
です。tableUpdateParam では、sqlType に、INSERT,COPY,UPDATE,MODIFY,DELETE の
どれかを指定する事で、SQL文のタイプを指定します。COPY,MODIFY は command と
関連を持たす為に追加しているタイプで、INSERTやUPDATE と同じ処理を行います。
tableUpdateParam の table には、作成したい SQL のテーブルを指定します。
where 属性は、検索結果の DBTableModel の更新時に使用する条件を指定します。
- 関連項目:
- 直列化された形式
- 機能階層
- DB登録
- 形式サンプル:
●形式:<og:tableUpdate command="{@command}" queryType="JDBCTableUpdate" >
<og:tableUpdateParam
sqlType = "{@sqlType}" // INSERT,COPY,UPDATE,MODIFY,DELETE
table = "{@TABLE_NAME}" // 処理対象のテーブル名
names = "{@names}" // 処理対象のカラム名
omitNames = "{@omitNames}" // 処理対象外のカラム名
where = "{@where}" // 処理対象を特定するキー
constKeys = "{@constKeys}" // 処理カラム名の中の固定情報カラム名
constVals = "{@constVals}" // 処理カラム名の中の固定情報設定値
logicalDelete = "{@logicalDelete}" // sqlTypeがDELETEの場合にもUPDATE文を発行
/>
</og:tableUpdate>
●body:なし
●使用例
・【entry.jsp】
<og:tableUpdate command="{@command}" queryType="JDBCTableUpdate" >
<og:tableUpdateParam
sqlType = "{@sqlType}"
table = "{@MEM.TABLE_NAME}"
where = "ROWID = [ROWID]"
/>
</og:tableUpdate>
- 変更履歴:
3.8.8.0 (2007/12/22) 新規作成 |
4.1.2.0 (2008/03/12) 実装の大幅な修正 |
- バージョン
- 4.0
- 作成者
- Kazuhiko Hasegawa
- 導入されたバージョン:
- JDK5.0,
フィールドの概要 |
static String |
SQL_TYPE
sqlType属性に設定できる値 "|INSERT|COPY|UPDATE|MODIFY|DELETE|" |
クラス org.opengion.hayabusa.taglib.CommonTagSupport から継承されたメソッド |
add, add, addEventColumnSQL, check, check, commitTableObject, debugPrint, doAfterBody, doCatch, doFinally, doStartTag, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsglbl, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getResource, getScope, getSessionAttribute, getTagName, getUser, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setMsglbl, setNoTransitionRequest, setObject, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, setUseValue, startQueryTransaction, sys, sysBool, sysInt, useQuotCheck, useXssCheck |
SQL_TYPE
public static final String SQL_TYPE
- sqlType属性に設定できる値 "|INSERT|COPY|UPDATE|MODIFY|DELETE|"
- 関連項目:
- 定数フィールド値
TableUpdateParamTag
public TableUpdateParamTag()
doEndTag
public int doEndTag()
- Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
- 定義:
- インタフェース
Tag
内の doEndTag
- オーバーライド:
- クラス
CommonTagSupport
内の doEndTag
- 戻り値:
- int
- 変更履歴:
4.3.7.0 (2009/06/01) 論理削除対応 |
release2
protected void release2()
- タグリブオブジェクトをリリースします。
キャッシュされて再利用されるので、フィールドの初期設定を行います。
- オーバーライド:
- クラス
CommonTagSupport
内の release2
- 変更履歴:
4.3.7.0 (2009/06/01) logicalDelete属性追加 |
setSqlType
public void setSqlType(String type)
- 【TAG】BODY部に書かれている SQLタイプを指定します。
- パラメータ:
type
- BODY部に書かれている SQL タイプ- TagLib:
SQLタイプは、INSERT,COPY,UPDATE,MODIFY,DELETE の中から指定する
必要があります。これらは、内部に書かれるSQLの形式を指定するのに使用します。
内部処理は、DBTableModelの改廃コード(A,C,D)に対して使用される
SQL を選択する場合の情報に使用されます。
なお、COPY と MODIFY は、command で指定できる簡易機能として用意しています。
上位の TableUpdateTag の sqlType 属性 と同じsqlType 属性の場合のみ、SQL文を
合成・出力します。(上位のsqlTypeがnullの場合は、無条件実行します。)
指定のタイプが、異なる場合は、なにも処理を行いません。 |
setTable
public void setTable(String tbl)
- 【TAG】処理対象のテーブル名を指定します。
- パラメータ:
tbl
- String- 関連項目:
setNames( String )
,
setWhere( String )
,
setSqlType( String )
- TagLib:
テーブル名を指定することで、sqlTypeに応じた QUERYを生成することが出来ます。
生成する場合のカラムを特定する場合は、names 属性で指定できます。
また、WHERE条件は、where属性で指定します。 |
setNames
public void setNames(String nms)
- 【TAG】処理対象のカラム名をCSV形式で複数指定します。
- パラメータ:
nms
- String- 関連項目:
setTable( String )
,
setOmitNames( String )
- TagLib:
生成するQUERYのカラム名をカンマ区切り文字(CSV)で複数指定します。
指定がない場合は、DBTableModel の全カラム(※)を使用して、QUERYを構築します。
一般に、テーブル結合してDBTableModelを構築した場合は、登録すべきカラムを
指定する必要があります。
(※)正確には、DBTableModel の全カラムのうち、ROWID,ROWNUM,WRITABLE カラムは
無視します。
分解方法は、通常のパラメータ取得後に、CSV分解します。 |
- 変更履歴:
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。 |
setOmitNames
public void setOmitNames(String nms)
- 【TAG】処理対象外のカラム名をCSV形式で複数指定します。
- パラメータ:
nms
- String- 関連項目:
setTable( String )
,
setNames( String )
- TagLib:
生成するQUERYのカラム名に指定しないカラム名をカンマ区切り文字(CSV)で複数指定します。
指定がない場合は、DBTableModel の全カラム(※)を使用して、QUERYを構築します。
テーブル結合などで、処理したくないカラム数の方が少ない場合に、names ですべてを
指定するより少ない記述ですみます。
(※)正確には、DBTableModel の全カラムのうち、ROWID,ROWNUM,WRITABLE カラムは
無視します。 |
setWhere
public void setWhere(String wr)
- 【TAG】処理対象を特定するキー条件(where句)を指定します。
- パラメータ:
wr
- 検索条件(where句)- TagLib:
生成するQUERYのwhere 句を指定します。通常の WHERE 句の書き方と同じで、
DBTableModelの値を割り当てたい箇所に[カラム名] を記述します。
文字列の場合、設定値をセットするときに、シングルコーテーションを
使用しますが、[カラム名]で指定する場合は、その前後に、(')シングル
コーテーションは、不要です。
{@XXXX}変数を使用する場合は、パース時に固定文字に置き換えられる為、
文字列指定時の(')シングルコーテーションが必要になります。
例:FGJ='1' and CLM=[CLM] and SYSTEM_ID in ([SYSID],'**') and KBSAKU='{@KBSAKU}' |
setConstKeys
public void setConstKeys(String keys)
- 【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します。
- パラメータ:
keys
- String- 関連項目:
setConstVals( String )
- TagLib:
names 属性のカラムや table 属性より、QUERYを作成して、DBTableModelの値を
割り当てる場合、DBTableModelの値ではなく、外部から指定した固定値を
割り当てたい場合に、そのカラム名をカンマ区切り文字(CSV)で複数指定します。
ここで指定するカラム名は、names 属性に含まれるか、DBTableModelのカラムとして
存在する必要があります。なお、names 属性に含まれる場合は、BTableModelのカラムに
含まれる必要はありません。
分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。
こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 |
setConstVals
public void setConstVals(String vals)
- 【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します。
- パラメータ:
vals
- String- 関連項目:
setConstKeys( String )
- TagLib:
names 属性のカラムや table 属性より、QUERYを作成して、DBTableModelの
値を割り当てる場合、DBTableModelの値ではなく、外部から指定した固定値を
割り当てたい場合に、そのカラム名に対応する設定値をカンマ区切り文字(CSV)で
複数指定します。ここで指定する設定値は、constKeys 属性と対応させます。
分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。
こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 |
setQuotCheck
public void setQuotCheck(String flag)
- 【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか(true/false)を設定します(初期値:USE_SQL_INJECTION_CHECK)。
- パラメータ:
flag
- クォーティションチェックする ("true")/しない (それ以外)- 関連項目:
SystemData.USE_SQL_INJECTION_CHECK
- TagLib:
SQLインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに
渡す文字列にクォーティション(') を許さない設定にすれば、ある程度は防止できます。
数字タイプの引数には、 or 5=5 などのクォーティションを使用しないコードを埋めても、
数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、
' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。
(') が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。
初期値は、システムパラメータのUSE_SQL_INJECTION_CHECK です。 |
setConstObjKey
public void setConstObjKey(String key)
- 【TAG】固定情報カラムの処理オブジェクトを特定するキーを設定します(初期値:SYSTEM_ID)。
- パラメータ:
key
- 固定情報カラムの処理オブジェクトを特定するキー- TagLib:
固定情報カラム をシステム単位にJavaクラスで管理できます。
そのクラスオブジェクトは、org.opengion.hayabusa.db.DBConstValue インターフェースを
継承した、plugin クラスになります。
そのクラスを特定するキーワードを指定します。
初期値は、SYSTEM_ID でシステム単位にクラスを作成します。
もし、他のシステムと共通の場合は、継承だけさせることも可能です。
対応したDBConstValueクラスがプラグインとして存在しない場合は、
システムリソースのDEFAULT_CONST_CLASSで指定されたクラスが利用されます。
初期値は、SYSTEM_ID です。 |
setLogicalDelete
public void setLogicalDelete(String flg)
- 【TAG】sqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します。(初期値:false)。
- パラメータ:
flg
- 論理削除(UPDATE)を行うかどうか- TagLib:
sqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します。
trueが指定された場合は、DELETE文ではなく、UPDATE文が発行されます。
falseが指定された場合は、DELETE文が発行されます。
さらに論理削除を行う場合、org.opengion.hayabusa.db.DBConstValue インターフェースに
定義されている、getLogicalDeleteKeys()及びgetLogicalDeleteValsを実装することで、
論理削除する際のフラグの更新方法を統一的に管理することが可能になります。
初期値は、false(物理削除する)です |
toString
public String toString()
- このオブジェクトの文字列表現を返します。
基本的にデバッグ目的に使用します。
- オーバーライド:
- クラス
CommonTagSupport
内の toString
- 戻り値:
- このクラスの文字列表現
Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.