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 */ 016package org.opengion.hayabusa.taglib; 017 018import org.opengion.hayabusa.common.HybsSystem; 019import org.opengion.hayabusa.resource.GUIInfo; 020import org.opengion.hayabusa.resource.RoleMode ; 021import org.opengion.hayabusa.db.DBLastSql; 022import org.opengion.fukurou.util.Attributes; 023import org.opengion.fukurou.util.XHTMLTag; 024import org.opengion.fukurou.util.StringUtil ; 025 026import static org.opengion.fukurou.util.StringUtil.nval ; 027 028/** 029 * ファイルアップロード/ダウンロードリンクを作成するタグです(通常は result_info.jsp に組込み)。 030 * 031 * 画面検索した結果を、ダウンロードしたり、アップロードする機能は、画面リソースの 032 * ロール制御で管理しています。 033 * ただし、デフォルトで、以下の制限が掛かっています。 034 * 035 * ファイルダウンロード 036 * ・command="NEW|RENEW|FIRST|LAST|PREV|NEXT|VIEW|RESET" のみ 037 * ファイルアップロード 038 * ・command="COPY|INSERT" のみ 039 * 040 * 5.7.8.1 (2014/07/18) 041 * addDownCmnd と、addUpldCmnd を指定すれば、ダウンロード、アップロードできる 042 * command を増やすことが可能です。 043 * 044 * また、typeDownload="true" にするとDownload 処理を行う為の前処理を実施します。 045 * Download 処理を行うには、指定の画面(呼び出し元)と、抜き出した時の 046 * DBTableModel がマッチしているか判定します。 047 * また、DBTableModel が存在しない、または、不備な場合(オーバーフロー)は、 048 * 最終SQLを実行する必要があり、そもそも、抜出処理が出来ない状態では、 049 * エラーを返す必要があります。 050 * それら、一連のDownload 処理を行うかどうかを指定します。 051 * true の場合、session の HybsSystem.DB_LAST_SQL_KEY に格納された 052 * DBLastSql オブジェクトを取得し、scope が request または、overflow が 053 * true の場合に、BODY部を実行します。(通常、queryタグを記述します。) 054 * query の出力先は、scope を request にします。 055 * それ以外は、tableId から取り出した DBTableModel を、scope = "request" 056 * に(アドレスのみ)コピーします。 057 * writeTable タグでは、scope = "request" から、DBTableModel を取り出します。 058 059 * @og.formSample 060 * ●形式:一般ユーザーが直接組み込むことはありません。 061 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 062 * 063 * ●Tag定義: 064 * <og:fileUD 065 * command 【TAG】command を指定します 066 * downloadImg 【TAG】ダウンロード時のアイコンを指定します(初期値:"{@SYS.JSP}/image/fileDownload.gif") 067 * downloadJsp 【TAG】ダウンロード時の呼び出しJSPを指定します(初期値:"{@SYS.JSP}/common/fileDownload.jsp") 068 * uploadImg 【TAG】アップロード時のアイコンを指定します(初期値:"{@SYS.JSP}/image/fileUpload.gif") 069 * uploadJsp 【TAG】アップロード時の呼び出しJSPを指定します(初期値:"{@SYS.JSP}/common/fileUpload.jsp") 070 * imgWidth 【TAG】アイコン幅サイズ(px)を指定します(初期値:20px) 071 * imgHeight 【TAG】アイコン高さサイズ(px)を指定します(初期値:20px) 072 * filename 【TAG】ダウンロード時ファイル名を指定します(初期値:"{@GUI.LABEL}.xls") 073 * addDownCmnd 【TAG】ダウンロード時のコマンドを追加指定できます(初期値:null) 074 * addUpldCmnd 【TAG】アップロード時のコマンドを追加指定できます(初期値:null) 075 * roles 【TAG】ロールズをセットします 076 * target 【TAG】ダウンロード文書を表示させるフレーム、またはウィンドウの名前を指定します 077 * errorMsg 【TAG】ダウンロード出来ない場合のエラーメッセージIDを指定します(初期値:ERR0028) 078 * typeDownload 【TAG】Download 処理を行うかどうかを指定します(初期値:false) 079 * useEditLink 【TAG】編集リンク自体を出すかどうかどうか(初期値:true) 080 * editImg 【TAG】編集アイコンを指定します(初期値:"{@SYS.JSP}/image/edit.png") 081 * clmEdit 【TAG】編集時にカラム編集タブを表示するかどうか(初期値:true) 082 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 083 * > ... Body ... 084 * </og:fileUD> 085 * 086 * ●使用例 087 * <og:fileUD command="{@command}" /> 088 * 089 * <og:fileUD 090 * command = command設定 (ダウンロード="NEW|RENEW|FIRST|LAST|PREV|NEXT|VIEW" 、 アップロード="COPY|INSERT") 091 * [ downloadImg ] = "{@SYS.JSP}/image/fileDownload.gif" ダウンロード時のアイコン 092 * [ downloadJsp ] = "{@SYS.JSP}/common/fileDownload.jsp" ダウンロード時の呼び出しJSP 093 * [ uploadImg ] = "{@SYS.JSP}/image/fileUpload.gif" アップロード時のアイコン 094 * [ uploadJsp ] = "{@SYS.JSP}/common/filePopup.jsp" アップロード時の呼び出しJSP 095 * [ imgWidth ] = "20px" アイコン幅サイズ(px) 096 * [ imgHeight ] = "20px" アイコン高さサイズ(px) 097 * [ filename ] = "{@GUI.LABEL}.xls" ダウンロード時ファイル名 098 * [ roles ] = "GE|DOC" アクセスロールズ 099 * [ target ] = "_blank" ダウンロードファイルを開くターゲット 100 * [ errorMsg ] = "ERR0042" エラーメッセージID 101 * [ typeDownload] = "false/true" Download 処理を行うかどうか(初期値:false) 102 * /> 103 * 104 * @og.group ファイルアップロード/ダウンロード 105 * 106 * @og.rev 4.3.0.0 (2008/07/04) 新規追加 107 * @og.rev 5.7.4.1 (2014/03/15) エラーメッセージ変更 108 * @og.rev 5.9.32.1 (2018/05/08) URLチェック対応 109 * 110 * @version 4.0 111 * @author Kazuhiko Hasegawa 112 * @since JDK5.0, 113 */ 114public class FileUDTag extends CommonTagSupport { 115 //* このプログラムのVERSION文字列を設定します。 {@value} */ 116 private static final String VERSION = "5.7.8.1 (2014/07/18)" ; 117 118 private static final long serialVersionUID = 578120140718L ; 119 120 private String sysJsp = HybsSystem.sys( "JSP" ); 121 122 private String command = null; // ダウンロード="NEW|RENEW" 、アップロード="COPY|INSERT" 123 private String downloadImg = sysJsp + "/image/fileDownload.gif"; // ダウンロード時のアイコン 124 private String downloadJsp = sysJsp + "/common/fileDownload.jsp"; // ダウンロード時の呼び出しJSP 125 private String uploadImg = sysJsp + "/image/fileUpload.gif"; // アップロード時のアイコン 126 private String uploadJsp = sysJsp + "/common/filePopup.jsp"; // アップロード時の呼び出しJSP 127 private String imgWidth = "20px"; // アイコン幅サイズ(px) 128 private String imgHeight = "20px"; // アイコン高さサイズ(px) 129 private String filename = null; // ダウンロード時ファイル名("{@GUI.LABEL}.xls") 130 private String roles = null; // アクセスロールズ 131 private String target = null; // ダウンロードファイルを開くターゲット 132 private String errorMsg = "ERR0042"; // 出力対象データが見つかりませんでした。再度検索して下さい。 5.7.4.1 (2014/03/15) 133 private boolean isError = false; 134 private boolean typeDownload = false; // Download 処理を行うかどうか(初期値:false) 135 private boolean isEdit = true; // 5.6.0.2 (2013/01/19) ロールのisEditとほぼ同等。clmEdit用。 136 private boolean useEditLink = true; // 5.7.5.0 (2014/04/04) 編集リンク自体を出すかどうかどうか(初期値:true) 137 138 private String addDownCmnd = null; // 5.7.8.1 (2014/07/18) ダウンロード時のコマンドを追加 139 private String addUpldCmnd = null; // 5.7.8.1 (2014/07/18) アップロード時のコマンドを追加 140 141 private static final String EDIT_GAMENID= "14_EDIT"; // 編集画面の画面ID 142 private String editImg = sysJsp + "/image/edit.png"; // 編集時のアイコン 143 144 // 5.9.32.1 (2018/05/08) URLチェック対応 145 private boolean useURLCheck = HybsSystem.sysBool("FILEUD_URL_CHECK"); 146 private long urlCheckTime= 1000*60*60*24; 147 private String urlCheckCrypt = HybsSystem.sys( "URL_CHECK_CRYPT" ); 148 149 /** 150 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 151 * 152 * @og.rev 5.1.6.0 (2010/05/01) 画面項目並べ替え対応 153 * 154 * @return 後続処理の指示(SKIP_BODY) 155 */ 156 @Override 157 public int doStartTag() { 158 159 if( typeDownload ) { 160 DBLastSql lastSql = (DBLastSql)getSessionAttribute( HybsSystem.DB_LAST_SQL_KEY ); 161 if( lastSql != null ) { 162 String guikey = getRequest().getParameter( "gamenId" ); 163 if( lastSql.isGuiMatch( guikey ) ) { 164 // view タグで仕込んだ clmNames を、Request 変数に設定します。 165 setRequestAttribute( "DB.CLM_NAMES" , lastSql.getClmNames() ); 166 // 5.1.6.0 (2010/05/01) 画面項目並べ替え対応 167 setRequestAttribute( "DB.VIEW_CLM_NAMES" , lastSql.getViewClmNames() ); 168 setRequestAttribute( "DB.VIEW_EDITABLE" , Boolean.toString( lastSql.isViewEditable() ) ); 169 170 // if( lastSql.isRequest() || lastSql.isOverflow() ) { 171 if( lastSql.isRequest() ) { 172 // 5.1.6.0 (2010/05/01) 173 String sql = getUserInfo( "LASTSQL" ); 174 if( sql != null ) { 175 return EVAL_BODY_BUFFERED ; // Body を評価する。( extends BodyTagSupport 時) 176 } 177 } 178 String tableId = lastSql.getTableId(); 179 setRequestAttribute( HybsSystem.TBL_MDL_KEY, getSessionAttribute( tableId ) ); 180 return SKIP_BODY ; // Body を評価しない 181 } 182 } 183 184 // 処理が実行できない場合、エラーを出力します。 185 jspPrint( getResource().getLabel( errorMsg ) ); 186 isError = true; 187 } 188 189 return SKIP_BODY ; // Body を評価しない 190 } 191 192 /** 193 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 194 * 195 * @og.rev 4.3.0.1 (2008/08/11) callBack パラメータの設定漏れ修正、引数から見直し 196 * @og.rev 5.1.6.0 (2010/05/01) 帳票画面定義機能対応 197 * @og.rev 5.1.7.0 (2010/06/01) 進む・戻るボタンでもExcel出力ボタンを出す 198 * @og.rev 5.3.6.0 (2011/06/01) Edit機能見直し 199 * @og.rev 5.3.7.0 (2011/07/01) Excel取込で画面IDとアドレスが異なる場合にエラーとなるバグを修正 200 * @og.rev 5.3.7.0 (2011/07/01) 編集画面をリサイズできるように対応します。 201 * @og.rev 5.3.7.0 (2011/07/01) PL/SQLを利用した検索でファイルダウンロードが出来るように対応します。 202 * @og.rev 5.4.2.0 (2011/12/01) 画面リソースで画面編集機能のON/OFFを設定できるようにする。 203 * @og.rev 5.5.2.4 (2012/05/16) nullに対する冗長な比較 204 * @og.rev 5.5.5.2 (2012/08/20) 画面リソースのoモード対応 205 * @og.rev 5.5.6.2 (2012/09/24) makeTagのtarget対応 206 * @og.rev 5.6.0.2 (2013/01/19) editモードのisEditコントロール対応 207 * @og.rev 5.7.5.0 (2014/04/04) 編集リンク自体を出すかどうかどうか(初期値:true) 208 * @og.rev 5.7.8.1 (2014/07/18) command="RESET" 時に、ダウンロードリンクを表示 209 * @og.rev 5.7.8.1 (2014/07/18) addDownCmnd , addUpldCmndを追加 210 * @og.rev 5.8.9.0 (2015/08/07) 6.3.4.0の移植 EditのURLをindex.jspまで指定する。 211 * @og.rev 5.9.32.1 (2018/05/11) 出力ファイルの拡張子の自動変更 212 * @og.rev 5.10.0.2 (2018/06/22) 6.8.1.3対応 日本語のeditNameが400エラー 213 * 214 * @return 後続処理の指示 215 */ 216 @Override 217 public int doEndTag() { 218 debugPrint(); 219 220 if( isError ) { return SKIP_PAGE ; } // ページの残りの処理を行わない。 221 if( typeDownload ) { return EVAL_PAGE ; } // ページの残りを評価する。 222 223 boolean isDownload ; 224 // 5.7.8.1 (2014/07/18) command="RESET" 時に、ダウンロードリンクを表示 225 if( "NEW".equals( command ) || "RENEW".equals( command ) 226 || "FIRST".equals( command ) || "LAST".equals( command ) 227 || "PREV".equals( command ) || "NEXT".equals( command ) 228 || "VIEW".equals( command ) || "RESET".equals( command ) ) { 229 isDownload = true; 230 } 231 else if( "COPY".equals( command ) || "INSERT".equals( command ) ) { 232 isDownload = false; 233 } 234 // 5.7.8.1 (2014/07/18) addDownCmnd , addUpldCmndを追加 235 else if( addDownCmnd != null && addDownCmnd.equals( command ) ) { 236 isDownload = true; 237 } 238 else if( addUpldCmnd != null && addUpldCmnd.equals( command ) ) { 239 isDownload = false; 240 } 241 else { 242 return EVAL_PAGE ; 243 } 244 245 byte bitMode ; 246 if( roles != null ) { 247 RoleMode roleMode = RoleMode.newInstance( roles ); 248 RoleMode userRoleMode = getUser().getRoleMode(); 249 bitMode = userRoleMode.getAccessBitMode( roleMode ); 250 } 251 else { 252 GUIInfo guiInfo = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY ); 253 bitMode = guiInfo.getBitMode(); 254 } 255 256 if( filename == null ) { 257 String suffix = HybsSystem.sys( "TABLE_WRITER_EXCEL_TYPE"); // 5.9.32.1 (2018/05/11) 258 //filename = getGUIInfoAttri( "LABEL" ) + ".xls" ; 259 filename = getGUIInfoAttri( "LABEL" ) + "." + suffix ; 260 } 261 String guikey = getGUIInfoAttri( "KEY" ); // 4.3.0.1 (2008/08/11) 262 if( isDownload ) { 263 if( RoleMode.isDownload( bitMode ) ) { 264 // 4.3.0.1 (2008/08/11) callBack パラメータの設定漏れ修正、引数から見直し 265 // <og:link href="{@SYS.JSP}/common/fileDownload.jsp" target="_blank" useGamenId="false" 266 // keys="filename,h_clms" vals="{@GUI.LABEL}.xls,{@h_clms}" > 267 268 // 5.3.7.0 (2011/07/01) PL/SQLを利用した検索でファイルダウンロードが出来るように対応します。 269 String href = downloadJsp + "?command=RENEW&gamenId=" + guikey + "&GAMENID=" + guikey + "&filename=" + StringUtil.urlEncode( filename ) ; 270 271 jspPrint( makeTag( downloadImg,href,"Download File", target, true ) ); // 5.5.6.2 (2012/09/24) 272 273 // 5.1.6.0 (2010/05/01) 帳票画面定義機能対応 274 // 5.3.6.0 (2011/06/01) Edit機能見直し 275 GUIInfo editGui = getUser().getGUIInfo( EDIT_GAMENID ); 276 // 5.7.5.0 (2014/04/04) 編集リンク自体を出すかどうかどうか(初期値:true) 277 if( editGui != null && useEditLink ) { 278// String hrefEdit = sysJsp + "/" + editGui.getAddress() + "/" 279 String hrefEdit = sysJsp + "/" + editGui.getAddress() + "/index.jsp" // 5.8.9.0 (2015/08/07) 280 + "?command=NEW&gamenId=" + guikey + "&GAMENID=" + guikey; 281 282 String editName = getRequestValue( "editName" ); 283 // 5.5.2.4 (2012/05/16) nullに対する冗長な比較 284 if( editName != null ) { 285// hrefEdit += "&editName=" + editName; 286 hrefEdit += "&editName=" +StringUtil.urlEncode( editName ); // 5.10.0.2 (2018/06/22) 日本語のeditNameが400エラー 287 } 288 289 // 5.4.2.0 (2011/12/01) 画面リソースで画面編集機能のON/OFFを設定できるようにする。 290 if( RoleMode.isEdit( bitMode ) && isEdit ) { // 5.6.0.2(2013/01/09) 291 hrefEdit += "&edit=true"; 292 } 293 294 // 5.5.5.2 (2012/08/10) 画面リソースで、画面編集機能の制限を行えるようにする 295 if( RoleMode.isFullEdit( bitMode ) ) { 296 hrefEdit += "&fullEdit=true"; 297 } 298 else{ 299 hrefEdit += "&fullEdit=false"; 300 } 301 302 // 5.3.7.0 (2011/07/01) 編集画面をリサイズできるように対応します。 303 hrefEdit = "javascript:ogOpen('" + hrefEdit + "',null,null,'width=800px,height=330px,top=350,left=100,resizable=yes',false);"; 304// jspPrint( makeTag (editImg,hrefEdit,"Edit",null,false) ); // 5.5.6.2 (2012/09/24) 305 jspPrint( makeTag (editImg,hrefEdit,"Edit",null,false).replace( "href", "onClick" ) ); // 5.10.0.2 (2018/06/21) 306 } 307 } 308 } 309 else { 310 if( RoleMode.isUpload( bitMode ) ) { 311 // 4.3.0.1 (2008/08/11) callBack パラメータの設定漏れ修正、引数から見直し 312 // <og:link href="{@SYS.JSP}/common/filePopup.jsp" keys="callBack" vals="{@GUI.KEY}/{@SESSION.JSPID}" > 313 314 String jspId = (String)getSessionAttribute( "JSPID" ); 315 // 5.3.7.0 (2011/07/01) Excel取込で画面IDとアドレスが異なる場合にエラーとなるバグを修正 316 String callBack = getGUIInfoAttri( "ADDRESS" ) + "/" + jspId + "?GAMENID=" + guikey; 317 callBack = StringUtil.urlEncode( callBack ); 318 String href = uploadJsp + "?callBack=" + callBack; 319 320 jspPrint( makeTag( uploadImg,href,"Upload File",target,false ) ); // 5.5.6.2 (2012/09/24) 321 } 322 } 323 324 return EVAL_PAGE ; 325 } 326 327 /** 328 * タグリブオブジェクトをリリースします。 329 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 330 * 331 * @og.rev 5.7.4.1 (2014/03/15) エラーメッセージ変更 332 * @og.rev 5.7.5.0 (2014/04/04) useEditLink 追加 333 * @og.rev 5.7.8.1 (2014/07/18) addDownCmnd,addUpldCmnd 追加 334 * @og.rev 5.9.32.1 (2018/05/08) URLチェック対応 335 */ 336 @Override 337 protected void release2() { 338 super.release2(); 339 sysJsp = HybsSystem.sys( "JSP" ); 340 command = null; // ダウンロード="NEW|RENEW|FIRST|LAST|PREV|NEXT|VIEW|RESET" 、アップロード="COPY|INSERT" 341 downloadImg = sysJsp + "/image/fileDownload.gif"; // ダウンロード時のアイコン 342 downloadJsp = sysJsp + "/common/fileDownload.jsp"; // ダウンロード時の呼び出しJSP 343 uploadImg = sysJsp + "/image/fileUpload.gif"; // アップロード時のアイコン 344 uploadJsp = sysJsp + "/common/filePopup.jsp"; // アップロード時の呼び出しJSP 345 imgWidth = "20px"; // アイコン幅サイズ(px) 346 imgHeight = "20px"; // アイコン高さサイズ(px) 347 filename = null; // ダウンロード時ファイル名("{@GUI.LABEL}.xls") 348 roles = null; // アクセスロールズ 349 target = null; // ダウンロードファイルを開くターゲット 350 errorMsg = "ERR0042"; // 出力対象データが見つかりませんでした。再度検索して下さい。 5.7.4.0 (2014/03/15) 351 typeDownload = false; // Download 処理を行うかどうか(初期値:false) 352 isError = false; 353 editImg = sysJsp + "/image/edit.png"; // 編集時のアイコン 354 isEdit = true; // 5.6.0.2 (2013/01/19) 355 useEditLink = true; // 5.7.5.0 (2014/04/04) 追加 356 addDownCmnd = null; // 5.7.8.1 (2014/07/18) ダウンロード時のコマンドを追加 357 addUpldCmnd = null; // 5.7.8.1 (2014/07/18) アップロード時のコマンドを追加 358 useURLCheck = HybsSystem.sysBool("FILEUD_URL_CHECK"); // 5.9.32.1 (2018/05/11) 359 urlCheckCrypt = HybsSystem.sys( "URL_CHECK_CRYPT" ); // 5.9.32.1 (2018/05/11) 360 } 361 362 /** 363 * リンクを作成します。 364 * 365 * @og.rev 4.3.0.1 (2008/08/11) callBack パラメータの設定漏れ修正、引数から見直し 366 * @og.rev 5.5.6.2 (2012/09/24) tgt引数追加 367 * 368 * @param imgsrc イメージソース 369 * @param href リンクのURL 370 * @param alt イメージの説明文書 371 * @param tgt HTMLのtarget 372 * @param chk urlCheck対象 373 * @og.rev 5.9.32.1 (2018/05/08) URLチェック対応 374 * 375 * @return リンク文字列 376 */ 377// private String makeTag( final String imgsrc, final String href, final String alt, final String tgt ) { // 5.5.6.2 (2012/09/24) 378 private String makeTag( final String imgsrc, final String href, final String alt, final String tgt, final boolean chk ) { // 5.5.6.2 (2012/09/24) 379 // linkのBODY部にセットするイメージタグの作成 380 Attributes imgAttri = new Attributes(); 381 imgAttri.set( "width" , imgWidth ); 382 imgAttri.set( "height" , imgHeight ); 383 imgAttri.set( "src" , imgsrc ); 384 imgAttri.set( "alt" , alt ); 385 386 String img = XHTMLTag.img( imgAttri ); 387 388 // 5.9.32.1 (2018/05/11) urlCheck 389 String tag = href; 390 if( useURLCheck && chk ) { 391 tag = XHTMLTag.addURLCheckKey( tag, HybsSystem.URL_CHECK_KEY, getUser().getUserID(), System.currentTimeMillis() + urlCheckTime ); 392 } 393 394 // 4.3.0.1 (2008/08/11) callBack パラメータの設定漏れ修正、引数から見直し 395 // linkタグの作成 396 Attributes linkAttri = new Attributes(); 397 //linkAttri.set( "href" , href ); 398 linkAttri.set( "href" , tag ); 399 linkAttri.set( "body" , img ); 400 linkAttri.set( "target" , tgt ); // 5.5.6.2 (2012/09/24) 401 402 return XHTMLTag.link( linkAttri ); 403 404 } 405 406 /** 407 * 【TAG】command を指定します。 408 * 409 * @og.tag 410 * command を指定します。 411 * ダウンロードは、"NEW|RENEW|FIRST|LAST|PREV|NEXT|VIEW|RESET" のみ有効です。 412 * アップロードは、"COPY|INSERT" のみ有効です。 413 * それ以外のコマンドでは、アイコンは表示されません。 414 * 例えば、NEXT/PREV など。 415 * 416 * @param cmd コマンド[NEW/RENEW/FIRST/LAST/PREV/NEXT/VIEW/RESET/COPY/INSERT] 417 * @see #setAddDownCmnd( String ) 418 * @see #setAddUpldCmnd( String ) 419 * @see #setCommand( String ) 420 */ 421 public void setCommand( final String cmd ) { 422 command = nval( getRequestParameter( cmd ),command ); 423 } 424 425 /** 426 * 【TAG】ダウンロード時のアイコンを指定します(初期値:"{@SYS.JSP}/image/fileDownload.gif")。 427 * 428 * @og.tag 429 * ダウンロード時に表示されるアイコンを指定します。 430 * 初期値:"{@SYS.JSP}/image/fileDownload.gif" です。 431 * 432 * @param img ダウンロード時のアイコン 433 */ 434 public void setDownloadImg( final String img ) { 435 downloadImg = nval( getRequestParameter( img ),downloadImg ); 436 } 437 438 /** 439 * 【TAG】ダウンロード時の呼び出しJSPを指定します(初期値:"{@SYS.JSP}/common/fileDownload.jsp")。 440 * 441 * @og.tag 442 * ダウンロード時に呼び出されるJSPファイル名を指定します。 443 * 初期値:"{@SYS.JSP}/common/fileDownload.jsp" です。 444 * 445 * @param file ダウンロード時の呼び出しJSP 446 */ 447 public void setDownloadJsp( final String file ) { 448 downloadJsp = nval( getRequestParameter( file ),downloadJsp ); 449 } 450 451 /** 452 * 【TAG】アップロード時のアイコンを指定します(初期値:"{@SYS.JSP}/image/fileUpload.gif")。 453 * 454 * @og.tag 455 * アップロード時に表示されるアイコンを指定します。 456 * 初期値:"{@SYS.JSP}/image/fileUpload.gif" です。 457 * 458 * @param img アップロード時のアイコン 459 */ 460 public void setUploadImg( final String img ) { 461 uploadImg = nval( getRequestParameter( img ),uploadImg ); 462 } 463 464 /** 465 * 【TAG】アップロード時の呼び出しJSPを指定します(初期値:"{@SYS.JSP}/common/fileUpload.jsp")。 466 * 467 * @og.tag 468 * アップロード時に呼び出されるJSPファイル名を指定します。 469 * 初期値:"{@SYS.JSP}/common/fileUpload.jsp" です。 470 * 471 * @param file アップロード時の呼び出しJSP 472 */ 473 public void setUploadJsp( final String file ) { 474 uploadJsp = nval( getRequestParameter( file ),uploadJsp ); 475 } 476 477 /** 478 * 【TAG】アイコン幅サイズ(px)を指定します(初期値:20px)。 479 * 480 * @og.tag 481 * アップロード/ダウンロードのアイコンを表示する際の幅サイズ(px)を指定します。 482 * ファイルサイズは、アップロード/ダウンロード共通です。 483 * 初期値は、20px です。 484 * 485 * @param width アイコン幅サイズ(px) 486 */ 487 public void setImgWidth( final String width ) { 488 imgWidth = nval( getRequestParameter( width ),imgWidth ); 489 } 490 491 /** 492 * 【TAG】アイコン高さサイズ(px)を指定します(初期値:20px)。 493 * 494 * @og.tag 495 * アップロード/ダウンロードのアイコンを表示する際の高さサイズ(px)を指定します。 496 * ファイルサイズは、アップロード/ダウンロード共通です。 497 * 初期値は、20px です。 498 * 499 * @param height アイコン高さサイズ(px) 500 */ 501 public void setImgHeight( final String height ) { 502 imgHeight = nval( getRequestParameter( height ),imgHeight ); 503 } 504 505 /** 506 * 【TAG】ダウンロード時ファイル名を指定します(初期値:"{@GUI.LABEL}.xls")。 507 * 508 * @og.tag 509 * ダウンロード時のファイル名を指定します 510 * 通常は、画面のラベル(言語対応)+XLS拡張子です。 511 * 初期値は、"{@GUI.LABEL}.xls" です。 512 * 513 * @param file ダウンロード時ファイル名("{@GUI.LABEL}.xls") 514 */ 515 public void setFilename( final String file ) { 516 filename = nval( getRequestParameter( file ),filename ); 517 } 518 519 /** 520 * 【TAG】ロールズをセットします。 521 * 522 * @og.tag 523 * ここで指定したロールを元に、ユーザー毎のアクセス許可がチェックされます。 524 * アクセス許可されないと、表示されません。 525 * このロールを指定しない場合は、画面のロールが使用されます。 526 * 527 * @param rls パラメータ 528 */ 529 public void setRoles( final String rls ) { 530 roles = nval( getRequestParameter( rls ),roles ); 531 } 532 533 /** 534 * 【TAG】ダウンロード文書を表示させるフレーム、またはウィンドウの名前を指定します。 535 * 536 * @og.tag フレーム名(ターゲット属性)を設定します。 537 * 538 * @param flag ダウンロード文書のフレーム名(ターゲット属性) 539 */ 540 public void setTarget( final String flag ) { 541 target = nval( getRequestParameter( flag ),target ); 542 } 543 544 /** 545 * 【TAG】Download 処理を行うかどうかを指定します(初期値:false)。 546 * 547 * @og.tag 548 * Download 処理を行うには、指定の画面(呼び出し元)と、抜き出した時の 549 * DBTableModel がマッチしているか判定します。 550 * また、DBTableModel が存在しない、または、不備な場合(オーバーフロー)は、 551 * 最終SQLを実行する必要があり、そもそも、抜出処理が出来ない状態では、 552 * エラーを返す必要があります。 553 * それら、一連のDownload 処理を行うかどうかを指定します。 554 * true の場合、session の HybsSystem.DB_LAST_SQL_KEY に格納された 555 * DBLastSql オブジェクトを取得し、scope が request または、overflow が 556 * true の場合に、BODY部を実行します。(通常、queryタグを記述します。) 557 * query の出力先は、scope を request にします。 558 * それ以外は、tableId から取り出した DBTableModel を、scope = "request" 559 * に(アドレスのみ)コピーします。 560 * writeTable タグでは、scope = "request" から、DBTableModel を取り出します。 561 * 562 * 初期値は、false(抜き出しでは無くリンク作成) です。 563 * 564 * @param type Download 処理を行うかどうか(初期値:false) 565 */ 566 public void setTypeDownload( final String type ) { 567 typeDownload = nval( getRequestParameter( type ),typeDownload ); 568 } 569 570 /** 571 * 【TAG】ダウンロード出来ない場合のエラーメッセージIDを指定します(初期値:ERR0042)。 572 * 573 * @og.tag 574 * DBTableModel が、最後に作成された画面と、メモリ中の DBLastSql オブジェクトが 575 * 管理している情報が異なる場合は、ダウンロード出来ません。 576 * 同様に、DBLastSql オブジェクト 自身が作成されていない場合も出来ません。 577 * そのようなケースに表示するエラーメッセージのメッセージIDを指定します。 578 * 引数は、指定できません。 579 * 初期値は、『ERR0042:出力対象データが見つかりませんでした。再度検索して下さい。』 です。 580 * 581 * @param msg ダウンロード文書のフレーム名(ターゲット属性) 582 */ 583 public void setErrorMsg( final String msg ) { 584 errorMsg = nval( getRequestParameter( msg ),errorMsg ); 585 } 586 587 /** 588 * 【TAG】編集アイコンを指定します(初期値:"{@SYS.JSP}/image/edit.png")。 589 * 590 * @og.tag 591 * 編集アイコンを指定します。 592 * 初期値:"{@SYS.JSP}/image/edit.png" です。 593 * 594 * @og.rev 5.1.6.0 (2010/05/01) 新規追加 595 * 596 * @param img アップロード時のアイコン 597 */ 598 public void setEditImg( final String img ) { 599 editImg = nval( getRequestParameter( img ),editImg ); 600 } 601 602 /** 603 * 【TAG】Edit画面でカラム編集タブを出すかどうか(初期値:true) 604 * 605 * @og.tag 606 * falseを指定するとカラム編集タブを出さない。 607 * 608 * @param type カラム編集タブを出すかどうか(初期値:true) 609 */ 610 public void setClmEdit( final String type ) { 611 isEdit = nval( getRequestParameter( type ),isEdit ); 612 } 613 614 /** 615 * 【TAG】Edit画面でカラム編集リンクを出力するかどうか(初期値:true) 616 * 617 * @og.tag 618 * falseを指定するとカラム編集リンクを出さない。 619 * 従来は、カラム編集画面の内、【表示項目設定】タブを表示しないだけでした。 620 * この設定は、RWMODE を、 ##d , ##u , ##f の場合にも同様の設定が可能です。 621 * カラム編集リンク自体を出さない機能は、現時点ではリソース設定できないため、 622 * タグのパラメータとして指定できるようにします。 623 * 基本的には、このパラメータはほとんど使われていないハズなので、 624 * 機能を置き換えます。 625 * 初期値は、カラム編集リンクを出力する(=true)です。 626 * 627 * @og.rev 5.7.5.0 (2014/04/04) 新規追加 628 * 629 * @param flag カラム編集リンクを出力するかどうか(初期値:true) 630 * @see org.opengion.hayabusa.taglib.QueryButtonTag#setUseEditMenu(String) 631 */ 632 public void setUseEditLink( final String flag ) { 633 useEditLink = nval( getRequestParameter( flag ),useEditLink ); 634 } 635 636 /** 637 * 【TAG】ダウンロード時のコマンドを追加指定できます(初期値:null) 638 * 639 * @og.tag 640 * ダウンロードリンクが表示される command は、 641 * "NEW|RENEW|FIRST|LAST|PREV|NEXT|VIEW|RESET" のみです。 642 * これ以外の command で、ダウンロードリンクを表示させたい場合は、 643 * この、addDownCmnd に、記述します。 644 * 初期値は、null(追加コマンドはない)です。 645 * 646 * @og.rev 5.7.8.1 (2014/07/18) 新規追加 647 * 648 * @param cmd ダウンロード時のコマンドを追加指定 649 * @see #setCommand( String ) 650 */ 651 public void setAddDownCmnd( final String cmd ) { 652 addDownCmnd = nval( getRequestParameter( cmd ),addDownCmnd ); 653 } 654 655 /** 656 * 【TAG】アップロード時のコマンドを追加指定できます(初期値:null) 657 * 658 * @og.tag 659 * アップロードリンクが表示される command は、"COPY|INSERT" のみです。 660 * これ以外の command で、アップロードリンクを表示させたい場合は、 661 * この、addUpldCmnd に、記述します。 662 * 初期値は、null(追加コマンドはない)です。 663 * 664 * @og.rev 5.7.8.1 (2014/07/18) 新規追加 665 * 666 * @param cmd アップロード時のコマンドを追加指定 667 * @see #setCommand( String ) 668 */ 669 public void setAddUpldCmnd( final String cmd ) { 670 addUpldCmnd = nval( getRequestParameter( cmd ),addUpldCmnd ); 671 } 672 673 /** 674 * 【TAG】リンクアドレスにURLチェック用の確認キーを付加するかどうか[true/false]を指定します。 675 * 676 * @og.tag 677 * この属性は、URLCheckFilter(org.opengion.hayabusa.filter.URLCheckFilter)と合わせて使用します。 678 * trueが指定された場合、リンクURLのパラメーターに、URL確認用のパラメーターが出力されます。 679 * このパラメーターを、URLCheckFilterが復号化し、正式なアクセスであるかどうかの判定を行います。 680 * 681 * この属性はjsp/fileDownloadに対してチェックをかける場合にtrueにする必要があります。 682 * 通常はシステムリソースのFILEUD_URL_CHECKで設定します。 683 * 684 * 初期値は、 "false"(確認キーを出力しない) です。 685 * 686 * @og.rev 5.9.32.1 (2018/05/08) 追加 687 * 688 * @param flag 暗号化するかかどうか [true:暗号化する/false:しない] 689 * @see org.opengion.hayabusa.filter.URLCheckFilter 690 */ 691 public void setUseURLCheck( final String flag ) { 692 useURLCheck = nval( getRequestParameter( flag ),useURLCheck ); 693 } 694 695 /** 696 * このオブジェクトの文字列表現を返します。 697 * 基本的にデバッグ目的に使用します。 698 * 699 * @return このクラスの文字列表現 700 */ 701 @Override 702 public String toString() { 703 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 704 .println( "VERSION" ,VERSION ) 705 .println( "command" ,command ) 706 .println( "downloadImg" ,downloadImg ) 707 .println( "downloadJsp" ,downloadJsp ) 708 .println( "uploadImg" ,uploadImg ) 709 .println( "uploadJsp" ,uploadJsp ) 710 .println( "imgWidth" ,imgWidth ) 711 .println( "imgHeight" ,imgHeight ) 712 .println( "filename" ,filename ) 713 .println( "roles" ,roles ) 714 .println( "target" ,target ) 715 .println( "Other..." ,getAttributes().getAttribute() ) 716 .fixForm().toString() ; 717 } 718}