001 /* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016 package org.opengion.hayabusa.taglib; 017 018 import org.opengion.fukurou.util.StringUtil ; 019 import static org.opengion.fukurou.util.StringUtil.nval ; 020 021 /** 022 * {@XXXX} 変数の特殊??、動?実行するタグです? 023 * 024 * こ?タグの目??、{@XXXX} 変数の使?をドキュメント化することにあります? 025 * 通常は、動?編???行う??ありません? 026 * 027 * 通常のリクエスト変数は、{@XXXX} で取り出すことが可能です?ところが? 028 * {@SYS.XXXX} 、{@USER.XXXX} 、{@GUI.XXXX}?などのシス?予?? 029 * 変数を取り?す?合に、XXXX 部?動的に変更することは出来ません? 030 * こ?タグは、簡易的に、XXXX を引数に取り、動?取り出すことができるようにします? 031 * 032 * @og.formSample 033 * ●形式? 034 * <og:requestValue 035 * sys = "XXXX" シス?パラメータ の値を取? 036 * user = "ID" UserInfoオブジェクト?値を取?og:userInfo) 037 * gui = "KEY" GUIInfoオブジェクト?値を取? 038 * mem = "XXXX" REQUEST_CACHE の値を取? 039 * lbl = "XXXX" ラベルリソースの値を取? 040 * msg = "XXXX" メ?ージリソースの値を取? 041 * db = "COUNT" ??タベ?ス実行結果を取? 042 * session = "XXXX" session Attribute の値を取? 043 * date = "XXXX" 日付関係?値を取? 044 * nvar = "XXXX" Unicode??の値?HTML のエスケープ記号(&#xZZZZ;)に変換します? 045 * > 046 * ●body?な? 047 * 048 * ●Tag定義?? 049 * <og:requestValue 050 * sys 【TAG】{@SYS.XXXX} と同等?シス?パラメータ の値を取得しま? 051 * user 【TAG】{@USER.XXXX} と同等?UserInfoオブジェクト?値を取得しま? 052 * gui 【TAG】{@GUI.XXXX} と同等?GUIInfoオブジェクト?値を取得しま? 053 * mem 【TAG】{@MEM.XXXX} と同等?REQUEST_CACHE の値を取得しま? 054 * lbl 【TAG】{@LBL.XXXX} と同等?ラベルリソースの値を取得しま? 055 * db 【TAG】データベ?ス実行結果を取得しま? 056 * session 【TAG】session Attribute の値を取得しま? 057 * date 【TAG】日付関係?値を取得しま? 058 * nvar 【TAG】Unicode??の値?HTML のエスケープ記号(&#xZZZZ;)に変換しま? 059 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 060 * /> 061 * 062 * 063 * @og.rev 3.8.0.2 (2005/07/11) 新規作? 064 * @og.group 画面部? 065 * 066 * @version 0.9.0 2000/10/17 067 * @author Kazuhiko Hasegawa 068 * @since JDK5.0, 069 */ 070 public class RequestValueTag extends CommonTagSupport { 071 //* こ?プログラ??VERSION??を設定します? {@value} */ 072 private static final String VERSION = "4.0.0.0 (2007/10/18)" ; 073 074 private static final long serialVersionUID = 400020071018L ; 075 076 private String sys = null; 077 private String user = null; 078 private String gui = null; 079 private String mem = null; 080 private String lbl = null; 081 // private String msg = null; 082 private String db = null; 083 private String session = null; 084 private String date = null; 085 private String nvar = null; 086 087 /** 088 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 089 * 090 * @og.rev 4.0.0.0 (2007/10/18) メ?ージリソース統? getResource().getMessage ?getResource().getLabel ) 091 * 092 * @return 後続???? 093 */ 094 @Override 095 public int doEndTag() { 096 debugPrint(); // 4.0.0 (2005/02/28) 097 098 StringBuilder buf = new StringBuilder(); 099 100 if( sys != null ) { 101 buf.append( sys( sys.trim() ) ); 102 } 103 else if( user != null ) { 104 buf.append( getUserInfo( user.trim() ) ); 105 } 106 else if( gui != null ) { 107 buf.append( getGUIInfoAttri( gui.trim() ) ); 108 } 109 else if( mem != null ) { 110 buf.append( getRequestCacheData( mem.trim() ) ); 111 } 112 else if( lbl != null ) { 113 buf.append( getLabel( lbl.trim() ) ); 114 } 115 // else if( msg != null ) { 116 // buf.append( getMessage( msg.trim() ) ); 117 // } 118 else if( db != null ) { 119 buf.append( getRequestParameter( "{@DB." + db.trim() + "}" ) ); 120 } 121 else if( session != null ) { 122 buf.append( getSessionAttribute( session.trim() ) ); 123 } 124 else if( date != null ) { 125 buf.append( getDateFormat( date.trim() ) ); 126 } 127 else if( nvar != null ) { 128 buf.append( StringUtil.getUnicodeEscape( getRequestValue( nvar.trim() ) ) ); 129 } 130 131 jspPrint( buf.toString() ); 132 133 return(EVAL_PAGE); // ペ?ジの残りを評価する? 134 } 135 136 /** 137 * タグリブオブジェクトをリリースします? 138 * 139 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 140 * 141 */ 142 @Override 143 protected void release2() { 144 super.release2(); 145 sys = null; 146 user = null; 147 gui = null; 148 mem = null; 149 lbl = null; 150 // msg = null; 151 db = null; 152 session = null; 153 date = null; 154 nvar = null; 155 } 156 157 /** 158 * 【TAG】{@SYS.XXXX} と同等?シス?パラメータ の値を取得します? 159 * 160 * @og.tag 161 * 本来は、シス?パラメータ の値を取得できますが、シス??共有?? 162 * 取得できるように機?追?て?す? 163 * また?ユーザー個別にシス?パラメータを変更できます?こ?取得?? 164 * シス?パラメータとして取得します?(値はユーザー個別値を返します?) 165 * 166 * SERVER_NAME こ?Tomcatが実行して?サーバ?? localhost ? 167 * SERVER_URL Portも含?RLアドレス http://localhost:8823/ 168 * CONTEXT_URL 実行して?コン?スト?URLアドレス http://localhost:8823/dbdef2/ 169 * REAL_PATH / ルートに対応する物?ィレクトリ d:/webapps/dbdef2/ ? 170 * CONTEXT_NAME コン?スト名(webapps 直下?仮想フォル?) dbdef ? 171 * DATE YMDH とほぼ同じですが?yyyy/MM/dd HH:mm:ss' の形式で取得できます? 172 * 任? ユーザーパラメータ(GE16) の値/シス?パラメータ(GE12)の値を取? 173 * 174 * {@SYS.COOKIE.カラ?}で、Cookie の読み込みを行えます? 175 * 上記以外に、予?や、シス?パラメータ の値の読取が可能です? 176 * 177 * @param val キャ?ュするサブキー 178 */ 179 public void setSys( final String val ) { 180 sys = nval( getRequestParameter( val ),sys ); 181 } 182 183 /** 184 * 【TAG】{@USER.XXXX} と同等?UserInfoオブジェクト?値を取得します? 185 * 186 * @og.tag 187 * ユーザーパラメータとは異なります? 188 * 189 * 以下?値は UserInfo オブジェクト??から取得します? 190 * 191 * ・JNAME ユーザー日本語名称 192 * ・ID ユーザー?? 193 * ・IDNO USER.ID が5Byte以上?時?み先??文字を除?ユーザー?? 194 * ・INFO ユーザー??(ユーザーID?日本語名称) 195 * ・LANG ?? 196 * ・ROLES ロール 197 * ・IPADDRESS IPアドレス 198 * ・LOGINTIME ログイン時刻 199 * 200 * 以下?値はあらかじめ?動的に作?されます? 201 * 202 * ・YMD ?byte の今日のシス?日? 203 * ・YMDH ?4byte の今日のシス?日? 204 * 205 * それ以外?、外部より設定された値です? 206 * 207 * @param val キャ?ュするサブキー 208 */ 209 public void setUser( final String val ) { 210 user = nval( getRequestParameter( val ),user ); 211 } 212 213 /** 214 * 【TAG】{@GUI.XXXX} と同等?GUIInfoオブジェクト?値を取得します? 215 * 216 * @og.tag 217 * GUIInfo オブジェクトで定義されて?属???を取り?すことが?来ます? 218 * 引数は?XXXX ID" と?状態で受け取ります?(GUI. ははずした形) 219 * XXXXには、画面??(GUIInfo)の属?キーを指定します?IDが指定されな??合?? 220 * 実行中の自??身の画面が指定されたことになります? 221 * これは、session 登録? の HybsSystem#GUIINFO_KEY キー の値で取得します? 222 * こ?値は,画面が呼び出される毎に毎回設定されており、リクエスト毎に 223 * ?し直す?があります? 224 * 225 * ID に、画面IDを指定した?合??#064; ?によるリクエスト引数の値を適用できます? 226 * {@GUI.@XXXX ID} ??{@GUI.XXXX @ID} です?(同時?も可能) 227 * 228 * ・KEY 画面ID 229 * ・ADDRESS 実行アドレス 230 * ・REALADDRESS 実行実アドレス 231 * ・SEQUENCE 表示? 232 * ・GROUPS メニュグルー? 233 * ・CLASSIFY メニュ?? 234 * ・LEVEL メニュ階層番号 235 * ・LABEL 画面名称 236 * ・NAME 画面名称(=SNAME) 237 * ・SNAME 画面名称(short) 238 * ・LNAME 画面名称(long) 239 * ・ROLES ロールズ 240 * ・MODE アクセスモード?(mr,mw,-r,-w の??) 241 * ・TARGET ターゲ? 242 * ・PARAM 設定?(パラメータ) 243 * ・KBLINK リンク区? 244 * ・DESCRIPTION 概要説? 245 * 246 * @param val 画面??を取り?すキー 247 */ 248 public void setGui( final String val ) { 249 gui = nval( getRequestParameter( val ),gui ); 250 } 251 252 /** 253 * 【TAG】{@MEM.XXXX} と同等?REQUEST_CACHE の値を取得します? 254 * 255 * @og.tag 256 * 検索時? request ??をキャ?ュして?メモリ上から?を取り?します? 257 * 通常は、query_init.jsp で定義されて? GAMENID付? 258 * リクエストキャ?ュ??を取り?します? 259 * 260 * @param val キャ?ュするサブキー 261 */ 262 public void setMem( final String val ) { 263 mem = nval( getRequestParameter( val ),mem ); 264 } 265 266 /** 267 * 【TAG】{@LBL.XXXX} と同等?ラベルリソースの値を取得します? 268 * 269 * @og.tag 270 * ラベルリソースのロケールは、ログインユーザーのロケールになります? 271 * これは、{@LBL.XXXX Y} 引数処?おこな?め?、サポ?トメソ?です? 272 * 引数は?XXXX Y" と?状態で受け取ります?(LBL. ははずした形) 273 * ラベルには??常のラベル(Label)以外に、Short,Tips,Comment の??を持って?す? 274 * {@LBL.XXXX Y} の Y に、?のLabel,Short,Tips,Comment の頭??'L','S','T','C')? 275 * ?することで、それぞれ?状態を取得することが可能になります? 276 * Y を指定しな???{@LBL.XXXX}) は?L' が指定された場合と同じ効果があります? 277 * Y は、?頭?1文字で判断して?す?で、{@LBL.XXXX Short}と記述できます? 278 * Y 引数には?#064;で始まるリクエスト引数が指定できます?例えば、{@LBL.XXXX @ZZ} 279 * とすると、ZZ のリクエスト引数の値?Y に適用されます? 280 * ラベルキーそ?も?をパラメータ化することが?来ます? 281 * これは、{@LBL.@XXXX}と?形式になります?引数は、?の説明と同じです? 282 * こ?場合?、XXXX をキーにリクエスト引数の値が?ラベルリソースのキーになります? 283 * 284 * @param val キャ?ュするサブキー 285 */ 286 @Override 287 public void setLbl( final String val ) { 288 lbl = nval( getRequestParameter( val ),lbl ); 289 } 290 291 /** 292 * 【TAG】{@MSG.XXXX} と同等?メ?ージリソースの値を取得します? 293 * 294 * @og.tag 295 * メ?ージリソースのロケールは、ログインユーザーのロケールになります? 296 * メ?ージリソースでは、{@MSG.XXXX AA @BB #CC} と?引数処?おこな? 297 * 事が可能です? 298 * 引数は?XXXX AA @BB #CC" と?状態で受け取ります?(MSG. ははずした形) 299 * "AA @BB #CC" は、スペ?スで区?れたメ?ージリソースの引数?です? 300 * こ?、引数?には??常??AA)、リクエスト文?@BB)、ラベル??#CC)が指定できます? 301 * ・通常??AA)?そのまま、メ?ージリソースの引数にセ?されます? 302 * ・リクエスト文?@BB)?リクエスト引数に置き換えます?通常、{@BB} ?しますが? 303 * メ?ージパラメータの引数、{@XXXX ??? {@BB} ???} と、?れ子で?できな?め? 304 * {@XXXX ??? @BB ???} と、省略形で?します?よって、引数として??常?? 305 * 先?に?@" を使用することは出来ません? 306 * ・ラベル??#CC)?ラベルキーを指定されたと解釈して、??ます?これは?CC"? 307 * キーに、ラベルリソースを検索し?そ??に応じた文字に変換後?メ?ージリソースの 308 * 引数に?します?PL/SQL等で、SET_ERRMSGS プロシージャの引数に、{#CC} ?を 309 * ?して、ラベルリソースを利用できますが、{@XXXX ??? {#CC} ???} と、?れ子で 310 * ?できな?め?{@XXXX ??? #CC ???} と、省略形で?します? 311 * よって、引数として??常??先?に?#" を使用することは出来ません?エスケープ未採用) 312 * メ?ージキーそ?も?をパラメータ化することが?来ます? 313 * これは、{@MSG.@XXXX}と?形式になります?引数は、?の説明と同じです? 314 * こ?場合?、XXXX をキーにリクエスト引数の値が?メ?ージリソースのキーになります? 315 * 316 * @param val キャ?ュするサブキー 317 */ 318 // public void setMsg( final String val ) { 319 // msg = nval( getRequestParameter( val ),msg ); 320 // } 321 322 /** 323 * 【TAG】データベ?ス実行結果を取得します? 324 * 325 * @og.tag 326 * 検索結果の件数を?"DB.COUNT" キーでリクエストにセ?して?す? 327 * 検索結果を?"DB.ERR_CODE" キーでリクエストにセ?して?す? 328 * これら?、リクエスト?アトリビュートへセ?して?為、query タグ?? 329 * directWriteTable タグの処?降?リクエストスコープ中での取得になります? 330 * 331 * @param val キャ?ュするサブキー 332 */ 333 public void setDb( final String val ) { 334 db = nval( getRequestParameter( val ),db ); 335 } 336 337 /** 338 * 【TAG】session Attribute の値を取得します? 339 * 340 * @og.tag 341 * session スコープに登録されて?アトリビュートオブジェクト?値? 342 * 取り出します? 343 * 344 * @param val キャ?ュするサブキー 345 */ 346 public void setSession( final String val ) { 347 session = nval( getRequestParameter( val ),session ); 348 } 349 350 /** 351 * 【TAG】日付関係?値を取得します? 352 * 353 * @og.tag 354 * これは、{@DATE.XXXX AA BB} 引数処?おこな?め?、サポ?トメソ?です? 355 * 引数は?XXXX AA BB" と?状態で受け取ります?(DATE. ははずした形) 356 * "XXXX" は、日付??行うキー??で予?になって?す? 357 * ・YMD???8文字?日付データ(200X年XX?X日)を扱?す? 358 * ・Y2MD??6文字?日付データ(0X年XX?X日)を扱?す? 359 * ・YM?? ?6文字?日付データ(200X年XX?を扱?す? 360 * ・HMS???6文字?時刻??タ(XX時XX?X?を扱?す? 361 * ・YMDHMS ?14文字?日付データ(200X年XX?X日XX時XX?X?を扱?す? 362 * ・EEE???曜日をデフォルトロケールで表示します? 363 * 364 * F付きは、フォーマットされた日付を返します? 365 * ・YMDF??8文字?日付データ(200X年XX?X日)を扱?す? 366 * ・Y2MDF?6文字?日付データ(0X年XX?X日)を扱?す? 367 * ・YMF???6文字?日付データ(200X年XX?を扱?す? 368 * ・HMSF??6文字?時刻??タ(XX時XX?X?を扱?す? 369 * ・YMDHMSF?14文字?日付データ(200X年XX?X日XX時XX?X?を扱?す? 370 * 371 * AA 引数は、基準となる日付を、YYYYMMDD形式で?します?無??場合?? 372 * 処?刻を基準にした、同?グ?の同??年月日時??を使用して値を取得します? 373 * ?できる日付?、?、YYYYMMDD形式とし?時?秒? ゼロにリセ?された状態になります? 374 * AA には、数字で始ま?20050701など)実日付と@で始まるパラメータが使用できます? 375 * @ZZ と記述することで、{@ZZ}で?する?合と同様?リクエストパラメータが使用できます? 376 * こ?パラメータの値は、YYYYMMDD形式?数字か、null(また?ゼロストリング)です?nullの 377 * 場合?、なにも指定されて??判断して、??刻を使用します? 378 * 第?引数は?数字か?#064;)以外?場合?、省略されたと判断されます? 379 * 380 * BB 引数は、日付につ?の?算??行います? 381 * 省略すると、なにも加減算??行いません? 382 * ・SD ?当月の??の日付にセ?します?(当月?日) 383 * ・ED ?当月の??日付にセ?します?(当月月末) 384 * ・SM ?本年の??の月にセ?します?(本年?月) 385 * ・EM ?本年の??月にセ?します?(本年?2月) 386 * ・SW ?日付???週初め(月曜日)にセ?します?日付?当日より前に移動します? 387 * ・EW ?日付???週末(日曜日)にセ?します?日付?当日より後ろに移動します? 388 * ・D1 ??DXXX ?日を指定??け?めます?D1なら翌日、D200 な?00日? 389 * ・M1 ??MXXX ?月を指定??け?めます?M1なら翌月、M6 なら半年? 390 * 391 * @param val キャ?ュするサブキー 392 */ 393 public void setDate( final String val ) { 394 date = nval( getRequestParameter( val ),date ); 395 } 396 397 /** 398 * 【TAG】Unicode??の値?HTML のエスケープ記号(&#xZZZZ;)に変換します? 399 * 400 * @og.tag 401 * HTMLでのエスケープ文字を使用して、Unicodeを文字?化して登録する為の変換を行います? 402 * ここでは、?力文字を、キャラクタ(char)型に?し?(&#xZZZZ;)に変換して?ます? 403 * よって??常に?文?Shift-JISで?Byte,UTF-8で?Byte)が??Byteになります? 404 * こ?変換された文字?を?HTML上でそ?まま取り出すと、?のUnicode?に戻る為? 405 * 通常のShift-JISでは、扱えな??中国語など)でも表示可能になります? 406 * 407 * @param val キャ?ュするサブキー 408 */ 409 public void setNvar( final String val ) { 410 nvar = nval( getRequestParameter( val ),nvar ); 411 } 412 413 /** 414 * こ?オブジェクト???表現を返します? 415 * 基本???目?使用します? 416 * 417 * @return こ?クラスの??表現 418 */ 419 @Override 420 public String toString() { 421 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 422 .println( "VERSION" ,VERSION ) 423 .println( "sys" ,sys ) 424 .println( "user" ,user ) 425 .println( "gui" ,gui ) 426 .println( "mem" ,mem ) 427 .println( "lbl" ,lbl ) 428 // .println( "msg" ,msg ) 429 .println( "db" ,db ) 430 .println( "session" ,session ) 431 .println( "date" ,date ) 432 .println( "nvar" ,nvar ) 433 .println( "Other..." ,getAttributes().getAttribute() ) 434 .fixForm().toString() ; 435 } 436 }