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.hayabusa.common.HybsSystem; 019 import org.opengion.hayabusa.common.HybsSystemException; 020 import org.opengion.hayabusa.db.DBErrMsg; 021 import org.opengion.hayabusa.resource.GUIInfo; 022 import org.opengion.hayabusa.resource.ResourceManager; 023 import org.opengion.fukurou.db.Transaction; 024 import org.opengion.fukurou.db.TransactionReal; 025 import org.opengion.fukurou.util.ErrorMessage; 026 import org.opengion.fukurou.util.FileUtil; 027 import org.opengion.fukurou.util.StringUtil; 028 import org.opengion.fukurou.util.Closer ; 029 import static org.opengion.fukurou.util.StringUtil.nval ; 030 031 import java.util.Locale ; 032 033 import java.sql.Connection; 034 import java.sql.Statement; 035 import java.sql.CallableStatement; 036 import java.sql.ResultSet; 037 import java.sql.ResultSetMetaData; 038 import java.sql.SQLException; 039 import java.sql.Types; 040 // import java.sql.Array; // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ? 対応ã?oracle.sql.ARRAY ã®ç½®ãæ›ã? 041 import oracle.sql.ARRAY; // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ? 対å¿? 042 import oracle.sql.ArrayDescriptor; // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ? 対å¿? 043 // import oracle.jdbc.OracleConnection; // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ? 対å¿? 044 045 import oracle.jdbc.OracleTypes; // CURSOR ãŒæ®‹ã‚‹ 046 import oracle.jdbc.OracleCallableStatement; // CURSOR ãŒæ®‹ã‚‹ 047 048 import java.io.File; 049 import java.io.PrintWriter; 050 import java.io.FileOutputStream; 051 import java.io.IOException; 052 import java.io.ObjectOutputStream; 053 import java.io.ObjectInputStream; 054 import java.util.zip.ZipOutputStream; 055 import java.util.zip.ZipEntry; 056 057 import java.util.Map; 058 059 /** 060 * SELECTæ–?‚’直接実行ã—ã¦ã€æŒ‡å®šã?ファイルã«å‡ºåŠ›ã™ã‚‹ã‚¿ã‚°ã§ã™ã? 061 * 062 * ä¸é–“ã?ã€ãƒ‡ãƒ¼ã‚¿(DBTableModel)を作æ?ã—ãªã?Ÿã‚ã?余計ãªãƒ¡ãƒ¢ãƒªã‚’å–らãšã€? 063 * 高é?ã«ãƒ??タを抜ãå?ã™ã“ã¨ãŒå¯èƒ½ã§ã™ã? 064 * ä¸?–¹ã€æŠœãå?ã™ãƒ‡ãƒ¼ã‚¿ã¯ç”Ÿãƒ‡ãƒ¼ã‚¿ã®ãŸã‚ã€ãƒ‡ãƒ¼ã‚¿ã®å†åˆ©ç”¨ç‰ã?シスãƒ?ƒ çš?ª 065 * 使用を想定ã—ã¦ã?¾ã™ã? 066 * JDBCErrMsg å½¢å¼ã?PL/SQL をコールã—ã¦ã€ãã®æ¤œç´¢çµæžœ(カーソル)を抜ãã“ã¨ã‚‚ã§ãã¾ã™ã? 067 * 068 * ※ ã“ã?ã‚¿ã‚°ã¯ã€Transaction ã‚¿ã‚°ã®å¯¾è±¡ã§ã™ã? 069 * 070 * @og.formSample 071 * â—å½¢å¼ï¼?lt;og:directWriteTable filename="[?¥?¥?¥]" ?¥?¥?¥ >SELECT * FROM ZYXX </og:directWriteTable > 072 * â—body?šã‚ã‚?EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã? 073 * 074 * â—Tag定義?? 075 * <og:directWriteTable 076 * fileURL ã€TAG】ä¿å˜å?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªåã‚’æŒ?®šã—ã¾ã?(åˆæœŸå€¤:FILE_URL[=filetemp/]) 077 * filename ã€TAG】ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:シスãƒ?ƒ パラメータã®FILE_FILENAME) 078 * zipFilename ã€TAG】ZIPファイルを作æ?ã™ã‚‹ã¨ãã?ZIPファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:filename + ".zip") 079 * encode ã€TAG】ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルエンコーãƒ?‚£ãƒ³ã‚°åã‚’ã‚»ãƒ?ƒˆã—ã¾ã?(åˆæœŸå€¤:FILE_ENCODE[=UnicodeLittle]) 080 * fileAppend ã€TAG】追åŠ?ƒ¢ãƒ¼ãƒ‰ã§æ›¸ãè¾¼ã‚?‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false[通常モード]) 081 * zip ã€TAGã€‘çµæžœã‚’ファイルã«å‡ºåŠ›ã™ã‚‹ã¨ãã«ã€ZIPã§åœ§ç¸®ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 082 * separator ã€TAG】å¯å¤‰é•·ãƒ•ァイルを作æ?ã™ã‚‹ã¨ãã?é ?›®åŒºåˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?(åˆæœŸå€¤:TAB_SEPARATOR[= ]) 083 * useHeader ã€TAG】ã?ãƒ?ƒ€ãƒ¼ã‚’書ãè¾¼ã‚?‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true) 084 * displayMsg ã€TAGã€‘æ¤œç´¢çµæžœã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0033[ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸ]) 085 * notfoundMsg ã€TAGã€‘æ¤œç´¢çµæžœãŒã‚¼ãƒä»¶ã®å ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ]) 086 * fetchSize ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®ãƒ•ã‚§ãƒ?ƒã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã?åˆæœŸå€¤:100) 087 * names ã€TAG】PL/SQLを利用ã™ã‚‹å ´åˆã?引数ã«ã‚»ãƒ?ƒˆã™ã¹ã?ãƒ??ã‚¿ã®åç§°ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã? 088 * queryType ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹ID(JDBC,JDBCErrMsg)を指定ã—ã¾ã?{@og.doc03Link queryType åˆæœŸå€¤:JDBC}) 089 * dbid ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)検索時ã?DB接続IDを指定ã—ã¾ã?åˆæœŸå€¤:DEFAULT) 090 * useNumber ã€TAG】行番å·ã‚’å?力ã™ã‚‹ã‹ã©ã?‹(åˆæœŸå€¤:true) 091 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 092 * > ... Body ... 093 * </og:directWriteTable> 094 * 095 * â—使用ä¾? 096 * <og:directWriteTable 097 * dbid = "ORCL" 接続データベã?スID(åˆæœŸå€¤:DEFAULT) 098 * separator = "," ファイルã®åŒºåˆ?‚Šæ–??åˆæœŸå€¤:ã‚¿ãƒ? 099 * fileURL = "{@USER.ID}" ä¿å˜å?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªå? 100 * filename = "{@filename}" ä¿å˜ãƒ•ァイルå? 101 * encode = "UnicodeLittle" ä¿å˜ãƒ•ァイルエンコードå 102 * useHeader = "true" ä¿å˜ãƒ•ァイルã«ãƒ˜ãƒƒãƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹ 103 * zip = "true" ZIPファイルã«åœ§ç¸®ã™ã‚‹ã‹ã©ã?‹ 104 * zipFilename = "Sample.zip" ZIPファイルã®ãƒ•ァイルå? 105 * fileAppend = "true" ファイルを追åŠ?ƒ¢ãƒ¼ãƒ‰ã§ç™»éŒ²ã™ã‚‹ã‹ã©ã?‹ 106 * displayMsg = "MSG0033" 実行後ã?表示メãƒ?‚»ãƒ¼ã‚¸ 107 * fetchSize = "200" DB検索ã™ã‚‹å ´åˆã?フェãƒ?ƒã™ã‚‹ã‚µã‚¤ã‚º 108 * > 109 * SELECT * FROM ZYXX 110 * </og:directWriteTable > 111 * 112 * <og:directWriteTable 113 * fileURL = "{@USER.ID}" ä¿å˜å?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªå? 114 * filename = "{@filename}" ä¿å˜ãƒ•ァイルå? 115 * names = "AAA,BBB,CCC,?¥?¥?¥" æŒ?®šã?ã‚ーã«å¯¾å¿œã™ã‚‹ãƒªã‚¯ã‚¨ã‚¹ãƒˆå?ã‚?ARG_ARRAY ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 116 * queryType = "JDBCErrMsg" JDBCErrMsg å½¢å¼ã?PL/SQL をコールã—ã¾ã™ã? 117 * > 118 * { call PL/SQL(?,?,?,? ) } 119 * </og:directWriteTable > 120 * 121 * @og.rev 3.5.6.0 (2004/06/18) æ–°è¦ä½œæ? 122 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã®å®Ÿè¡Œã‚’追åŠ? 123 * @og.group ファイル出åŠ? 124 * 125 * @version 4.0 126 * @author Kazuhiko Hasegawa 127 * @since JDK5.0, 128 */ 129 public class DirectWriteTableTag extends CommonTagSupport { 130 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 131 private static final String VERSION = "5.7.2.3 (2014/01/31)" ; 132 133 private static final long serialVersionUID = 572320140131L ; 134 135 private static final String TAB_SEPARATOR = "\t" ; 136 private static final String errMsgId = HybsSystem.ERR_MSG_KEY; 137 138 private final int DB_MAX_QUERY_TIMEOUT = HybsSystem.sysInt( "DB_MAX_QUERY_TIMEOUT" ) ; 139 // private static final String ARG_ARRAY = HybsSystem.sys( "ARG_ARRAY" ) ; 140 // private static final String ERR_MSG = HybsSystem.sys( "ERR_MSG" ) ; 141 // private static final String ERR_MSG_ARRAY = HybsSystem.sys( "ERR_MSG_ARRAY" ) ; 142 private static final String ARG_ARRAY = "ARG_ARRAY" ; 143 private static final String ERR_MSG = "ERR_MSG" ; 144 private static final String ERR_MSG_ARRAY = "ERR_MSG_ARRAY" ; 145 146 // 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´ 147 // private String dbid = "DEFAULT"; 148 private String dbid = null; 149 private String separator = TAB_SEPARATOR; // é ?›®åŒºåˆ?‚Šæ–?? 150 private boolean useHeader = true; // ヘッãƒ??ã®ä½¿ç”¨å¯å¦ 151 private String fileURL = HybsSystem.sys( "FILE_URL" ); 152 private String filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイルå? 153 private String zipFilename = null; // ZIPファイルå? 154 private String sql = null; 155 private String encode = HybsSystem.sys( "FILE_ENCODE" ); // ファイルエンコーãƒ?‚£ãƒ³ã‚° "DEFAULT","JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS" 156 private boolean fileAppend = false; // ファイルをAPPENDモードã§å‡ºåŠ›ã™ã‚‹ã‹ 157 private boolean zip = false; // ファイルをZIPã™ã‚‹ã? 158 // private String displayMsg = "MSG0033"; // ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸã€? 159 private String displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" ); 160 private String notfoundMsg = "MSG0077"; // 対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€? 161 private long dyStart = 0; // 実行時間測定用ã®DIVè¦ç´?‚’出力ã—ã¾ã™ã? 162 private int fetchSize = 100 ; // フェãƒ?ƒã™ã‚‹è¡Œæ•°(åˆæœŸå€¤:100) 163 private boolean useNumber = true; // 5.5.7.1(2012/10/05) 行番å·å‡ºåŠ? 164 165 // 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 166 private boolean queryType = true; // ノã?マルã¯ã€true/ JDBCErrMsg ã®æ™‚ã?ã€false 167 private String names = null; // æŒ?®šã?リクエスト変数をã?ARG_ARRAY ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 168 private int errCode = ErrorMessage.OK; 169 private transient ErrorMessage errMessage = null; 170 171 /** 172 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 173 * 174 * @return 後続å?ç??æŒ?¤º( EVAL_BODY_BUFFERED ) 175 */ 176 @Override 177 public int doStartTag() { 178 dyStart = System.currentTimeMillis(); // 時間測定用 179 return( EVAL_BODY_BUFFERED ); // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™? 180 } 181 182 /** 183 * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã? 184 * 185 * @og.rev 3.8.6.3 (2006/11/30) SQL æ–??å‰å¾Œã?スペã?スをå–り除ãã¾ã™ã? 186 * 187 * @return 後続å?ç??æŒ?¤º(SKIP_BODY) 188 */ 189 @Override 190 public int doAfterBody() { 191 sql = getBodyString(); 192 if( sql == null || sql.length() == 0 ) { 193 String errMsg = "BODY éƒ¨ã®æ¤œç´¢ç”¨ Selectæ–??ã€å¿??ã§ã™ã?"; 194 throw new HybsSystemException( errMsg ); 195 } 196 sql = sql.trim(); 197 return(SKIP_BODY); // Body を評価ã—ãªã? 198 } 199 200 /** 201 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 202 * 203 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 204 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹çµ±å? getResource().getMessage > getResource().getLabel ) 205 * 206 * @return 後続å?ç??æŒ?¤º 207 */ 208 @Override 209 public int doEndTag() { 210 debugPrint(); // 4.0.0 (2005/02/28) 211 212 PrintWriter pw = null; 213 final int executeCount; 214 try { 215 if( zip ) { 216 String directory = HybsSystem.url2dir( fileURL ); 217 218 if( zipFilename == null ) { zipFilename = filename + ".zip"; } 219 ZipOutputStream gzip = null; 220 try { 221 gzip = new ZipOutputStream( 222 new FileOutputStream( 223 StringUtil.urlAppend( directory,zipFilename ))); 224 gzip.putNextEntry( new ZipEntry( filename ) ); 225 pw = new PrintWriter( gzip ); 226 executeCount = create( pw ) ; 227 228 pw.flush(); 229 gzip.closeEntry(); 230 gzip.finish() ; 231 } 232 finally { 233 Closer.ioClose( gzip ); // 4.0.0 (2006/01/31) close 処ç?™‚ã® IOException ã‚’ç„¡è¦? 234 } 235 } 236 else { 237 pw = getPrintWriter(); 238 executeCount = create( pw ); 239 } 240 } catch( IOException ex ) { 241 String errMsg = "Error in DirectWriteTableTag: " + toString(); 242 throw new HybsSystemException( errMsg,ex ); // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´ 243 } finally { 244 Closer.ioClose( pw ); // 4.0.0 (2006/01/31) close 処ç?™‚ã® IOException ã‚’ç„¡è¦? 245 } 246 247 // 3.6.1.0 (2005/01/05) æ¤œç´¢çµæžœã®ä»¶æ•°ã‚’ã?"DB.COUNT" ã‚ーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€? 248 setRequestAttribute( "DB.COUNT" , String.valueOf( executeCount ) ); 249 setRequestAttribute( "DB.ERR_CODE", String.valueOf( errCode ) ); 250 251 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL ); 252 253 // 実行件数ã®è¡¨ç¤º 254 // boolean useStatusBar = HybsSystem.sysBool( "VIEW_USE_DISPLAY_MSG" ); 255 // if( useStatusBar && executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) { 256 if( executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) { 257 buf.append( executeCount ); 258 // buf.append( getResource().getMessage( displayMsg ) ); 259 buf.append( getResource().getLabel( displayMsg ) ); 260 buf.append( HybsSystem.BR ); 261 } 262 else if( executeCount == 0 && notfoundMsg != null && notfoundMsg.length() > 0 ) { 263 // buf.append( getResource().getMessage( notfoundMsg ) ); 264 buf.append( getResource().getLabel( notfoundMsg ) ); 265 buf.append( HybsSystem.BR ); 266 } 267 268 // 3.6.1.0 (2005/01/05) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用 269 String err = TaglibUtil.makeHTMLErrorTable( errMessage,getResource() ); 270 if( err != null && err.length() > 0 ) { 271 buf.append( err ); 272 setSessionAttribute( errMsgId,errMessage ); 273 } 274 else { 275 removeSessionAttribute( errMsgId ); 276 } 277 278 jspPrint( buf.toString() ); 279 280 // 時間測定用㮠DIV è¦ç´?‚’出åŠ? 281 long dyTime = System.currentTimeMillis()-dyStart; 282 jspPrint( "<div id=\"queryTime\" value=\"" + (dyTime) + "\"></div>" ); // 3.5.6.3 (2004/07/12) 283 284 // 3.6.1.0 (2005/01/05) è¦å‘Šæ™‚ã«åœæ¢ã—ã¦ã?¾ã—ãŸãŒã?継続å?ç?•ã›ã¾ã™ã? 285 int rtnCode = EVAL_PAGE; 286 if( errCode >= ErrorMessage.NG ) { // 異常 287 rtnCode = SKIP_PAGE; 288 } 289 290 // 4.0.0 (2005/01/31) ã‚»ã‚ュリãƒ?‚£ãƒã‚§ãƒ?‚¯(ãƒ??タアクセス件数登録) 291 GUIInfo guiInfo = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY ); 292 if( guiInfo != null ) { guiInfo.addReadCount( executeCount,dyTime,sql ); } 293 294 return( rtnCode ); 295 } 296 297 /** 298 * タグリブオブジェクトをリリースã—ã¾ã™ã? 299 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã? 300 * 301 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 302 * @og.rev 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´ 303 * @og.rev 5.5.7.1 (2012/10/05) useNumber追åŠ? 304 */ 305 @Override 306 protected void release2() { 307 super.release2(); 308 separator = TAB_SEPARATOR; // é ?›®åŒºåˆ?‚Šæ–?? 309 fileURL = HybsSystem.sys( "FILE_URL" ); 310 filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイルå? 311 zipFilename = null; // ZIPファイルå? 312 sql = null; 313 encode = HybsSystem.sys( "FILE_ENCODE" ); // ファイルエンコーãƒ?‚£ãƒ³ã‚° "DEFAULT","JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS" 314 fileAppend = false; // ファイルをAPPENDモードã§å‡ºåŠ›ã™ã‚‹ã‹ 315 zip = false; // ファイルをZIPã™ã‚‹ã? 316 // displayMsg = "MSG0033"; // ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸã€? 317 displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" ); 318 notfoundMsg = "MSG0077"; // 対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€? 319 // dbid = "DEFAULT"; 320 dbid = null; 321 fetchSize = 100 ; // フェãƒ?ƒã™ã‚‹è¡Œæ•°(åˆæœŸå€¤:0 å‚è?ã«ã—ãªã? 322 dyStart = 0; 323 queryType = true; // ノã?マルã¯ã€true/ JDBCErrMsg ã®æ™‚ã?ã€false 324 names = null; // æŒ?®šã?リクエスト変数をã?ARG_ARRAY ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 325 errCode = ErrorMessage.OK; 326 errMessage = null; 327 useNumber = true; // 5.5.7.1 (2012/10/05) 328 } 329 330 /** 331 * 実オブジェクトを生æ?ã—ã¦??del>PrintWriter</del>OutputStream ã«æ›¸ãè¾¼ã¿ã¾ã™ã? 332 * 333 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 334 * @og.rev 3.8.6.0 (2006/09/29) ヘッãƒ??ã«ãƒ©ãƒ™ãƒ«ã‚’å?力ã™ã‚‹ã‚ˆã?«ä¿®æ£ 335 * @og.rev 3.8.7.0 (2006/12/15) アクセスãƒã‚°å–å¾—ã?為,ApplicationInfoオブジェクトをè¨å®? 336 * @og.rev 4.3.4.3 (2008/12/22) (Oracle11gDriver対å¿?PL/SQLコールã®å ´åˆã«ã€?クãƒãƒ¼ã‚ºã•ã‚ŒãŸæ–‡ã§ã™ã?"ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹å•題ã«å¯¾å¿? 337 * @og.rev 5.1.9.0 (2010/08/01) Transaction 対å¿? 338 * @og.rev 5.2.2.0 (2010/11/01) 改行をå«ã‚??åˆã?ã€ãƒ€ãƒ–ルクオートを強制çš?«å‰å¾Œã«è¿½åŠ?™ã‚‹ã? 339 * @og.rev 5.2.2.0 (2010/11/01) ãƒ?ƒ–ルクオートをå«ã‚??åˆã?ã€ãã®ç›´å‰ã«ãƒ?ƒ–ルクオートを強制çš?«è¿½åŠ?™ã‚‹ã? 340 * @og.rev 5.3.0.0 (2010/12/01) executeCall メソãƒ?ƒ‰ã®å¼•数見直ã? 341 * @og.rev 5.3.7.0 (2011/07/01) TransactionReal ã®å¼•数変更 342 * @og.rev 5.5.7.1 (2012/10/05) useNumberã®è¿½åŠ? 343 * 344 * @param out PrintWriterオブジェクãƒ? 345 * 346 * @return 検索件数 347 */ 348 private int create( final PrintWriter out ) { 349 final int executeCount; 350 Statement stmt = null; 351 CallableStatement callStmt = null; // 4.3.4.3 (2008/12/22) 352 ResultSet resultSet = null ; 353 boolean errFlag = true; 354 // Connection conn = null; 355 Transaction tran = null; // 5.1.9.0 (2010/08/01) Transaction 対å¿? 356 try { 357 // 5.1.9.0 (2010/08/01) Transaction 対å¿? 358 TransactionTag tranTag = (TransactionTag)findAncestorWithClass( this,TransactionTag.class ); 359 if( tranTag == null ) { 360 // tran = new TransactionReal( dbid,getApplicationInfo() ); 361 tran = new TransactionReal( getApplicationInfo() ); // 5.3.7.0 (2011/07/01) 引数変更 362 } 363 else { 364 tran = tranTag.getTransaction(); 365 } 366 // conn = ConnectionFactory.connection( dbid,getApplicationInfo() ); // 3.8.7.0 (2006/12/15) 367 368 Connection conn = tran.getConnection( dbid ); // 5.1.9.0 (2010/08/01) Transaction 対å¿? 369 // 3.6.1.0 (2005/01/05) 370 if( queryType ) { // JDBC 通常㮠SELECT æ–? 371 stmt = conn.createStatement(); 372 if( fetchSize > 0 ) { stmt.setFetchSize( fetchSize ); } 373 resultSet = stmt.executeQuery( sql ); 374 } 375 else { // PL/SQL Call æ–? 376 String[] values = null; 377 if( names != null ) { 378 String[] nameArray = StringUtil.csv2Array( names ); 379 values = getRequest( nameArray ); 380 } 381 callStmt = conn.prepareCall( sql ); 382 // resultSet = executeCall( conn,callStmt,sql,values ); // 4.3.4.3 (2008/12/22) 383 resultSet = executeCall( conn,callStmt,values ); // 5.3.0.0 (2010/12/01) 384 } 385 if( resultSet == null ) { return 0; } 386 387 ResultSetMetaData metaData = resultSet.getMetaData(); 388 int numberOfColumns = metaData.getColumnCount(); 389 390 // ヘッãƒ??部ã®å‡ºåŠ? 391 if( useHeader && numberOfColumns > 0 ) { 392 StringBuilder headName = new StringBuilder(); 393 StringBuilder headLabel = new StringBuilder(); 394 headName.append( "#Name" ); 395 headLabel.append( "#Label" ); 396 String clm ; 397 ResourceManager resource = getResource(); 398 for(int column = 1; column <= numberOfColumns; column++) { 399 clm = (metaData.getColumnLabel(column)).toUpperCase(Locale.JAPAN); 400 headName.append( TAB_SEPARATOR ).append( clm ); 401 headLabel.append( TAB_SEPARATOR ).append( resource.getLabel( clm ) ); 402 } 403 out.println( headName.toString() ); 404 out.println( headLabel.toString() ); 405 } 406 407 int rowNo = 0; 408 Object obj ; 409 while( resultSet.next() ) { 410 if( useNumber ){ // 5.5.7.1 (2012/10/05) 411 out.print( rowNo ); // è¡Œç•ªå· 412 } 413 for(int column = 1; column <= numberOfColumns; column++) { 414 if( column == 1 && !useNumber && !useHeader ){ // 5.5.7.1 (2012/10/05) 415 //ã“ã?å ´åˆã ã‘セパレータ出力ã—ãªã? 416 } 417 else{ 418 out.print( separator ); 419 } 420 obj = resultSet.getObject(column); 421 if( obj != null ) { 422 // out.print( obj ); 423 // 5.2.2.0 (2010/11/01) 改行ã?ãƒ?ƒ–ルクオートç‰ã?処ç? 424 String sval = obj.toString(); 425 if( sval.indexOf( '"' ) >= 0 ) { sval = sval.replaceAll( "\"" ,"\"\"" ) ; } 426 if( sval.indexOf( HybsSystem.CR ) >= 0 ) { 427 sval = "\"" + sval + "\"" ; 428 } 429 out.print( sval ); 430 } 431 } 432 out.println(); 433 rowNo++ ; 434 } 435 executeCount = rowNo ; 436 errFlag = false; // エラーã§ã¯ãªã? 437 } 438 catch ( SQLException ex ) { // 3.6.1.0 (2005/01/05) 439 String errMsg = "ãƒ??タベã?ス処ç?‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€? 440 + HybsSystem.CR + stmt + HybsSystem.CR 441 + "err=[" + ex.getSQLState() + "]" 442 + ex.getMessage(); 443 throw new HybsSystemException( errMsg,ex ); 444 } 445 finally { 446 Closer.resultClose( resultSet ); 447 Closer.stmtClose( stmt ); 448 Closer.stmtClose( callStmt ); // 4.3.4.3 (2008/12/22) 449 if( tran != null ) { // 5.5.2.6 (2012/05/25) findbugs対å¿? 450 tran.close( errFlag ); // 5.1.9.0 (2010/08/01) Transaction 対å¿? 451 } 452 // if( errFlag ) { ConnectionFactory.remove( conn,dbid ); } // 削除 453 // else { ConnectionFactory.close( conn,dbid ); } // è¿”å´ 454 // conn = null; 455 } 456 457 return executeCount ; 458 } 459 460 /** 461 * 引数é…å?付ã?クエリーを実行ã—ã¾ã™ã? 462 * 処ç??体ã?, #execute() ã¨åŒæ§˜ã«ã€å„サブクラスã®å®Ÿè£?«ä¾å˜ã—ã¾ã™ã? 463 * ã“れã¯ã€CallableStatement を用ã?¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?ス検索処ç?‚’行ã„ã¾ã™ã? 464 * {call TYPE3B01.TYPE3B01(?,?,?,?)} ã§ã€?¼”番目ã®å¼•æ•°ã«ã¯ã€? 465 * names ã§æŒ?®šã—ãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ãŒã?ARG_ARRAY é…å?ã«é ?¬¡ã‚»ãƒ?ƒˆã•れã¾ã™ã? 466 * 使用ã™ã‚‹å ´åˆã?ã€ä¸?—¦ã‚ã‹ã‚Šæ?ã?¤‰æ•°ã«å—ã‘ã¦åˆ©ç”¨ã—ã¦ãã ã•ã„ã€? 467 * 呼ã³å‡ºã?PL/SQL ã§ã¯ã€æ¤œç´¢ç³»PL/SQL ã§ã™ã? 468 * 469 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 470 * @og.rev 4.3.4.3 (2008/12/22) (Oracle11gDriver対å¿?PL/SQLコールã®å ´åˆã«ã€?クãƒãƒ¼ã‚ºã•ã‚ŒãŸæ–‡ã§ã™ã?"ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹å•題ã«å¯¾å¿? 471 * @og.rev 5.3.0.0 (2010/12/01) executeCall メソãƒ?ƒ‰ã®å¼•数見直ã? 472 * @og.rev 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 473 * @og.rev 5.7.2.3 (2014/01/31) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対応ã?ã€Ver5 ã§ã¯è¡Œã‚ãªã?戻ã?ã€? 474 * 475 * @param conn コãƒã‚¯ã‚·ãƒ§ãƒ³ 476 * @param callStmt コーラブルスãƒ??トメンãƒ? 477 * @param args オブジェクトã?引数é…å? 478 * 479 * @return çµæžœã‚ªãƒ–ジェクãƒ? 480 */ 481 // private ResultSet executeCall( final Connection conn,final CallableStatement callStmt,final String sql,final String[] args ) throws SQLException { 482 private ResultSet executeCall( final Connection conn,final CallableStatement callStmt,final String[] args ) throws SQLException { 483 // CallableStatement callStmt = null ; // 4.3.4.3 (2008/12/22) 484 ResultSet resultSet = null; 485 // try { 486 // callStmt = conn.prepareCall( sql ); 487 callStmt.setQueryTimeout( DB_MAX_QUERY_TIMEOUT ); 488 if( fetchSize > 0 ) { callStmt.setFetchSize( fetchSize ); } 489 Map<String,Class<?>> map = conn.getTypeMap(); 490 try { 491 map.put( ERR_MSG,Class.forName( "org.opengion.hayabusa.db.DBErrMsg" ) ); 492 } 493 catch( ClassNotFoundException ex ) { 494 String errMsg = "org.opengion.hayabusa.db.DBErrMsg クラスãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€? + HybsSystem.CR 495 + ex.getMessage(); // // 5.1.8.0 (2010/07/01) errMsg ä¿®æ£ 496 throw new HybsSystemException( errMsg,ex ); // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´ 497 } 498 499 // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿?http://docs.oracle.com/cd/E28389_01/web.1111/b60995/thirdparty.htm 500 ArrayDescriptor sd = ArrayDescriptor.createDescriptor( ARG_ARRAY, conn ); 501 ARRAY newArray = new ARRAY( sd,conn,StringUtil.rTrims( args ) ); 502 // Array newArray = ((OracleConnection)conn).createOracleArray( ARG_ARRAY, StringUtil.rTrims( args )); // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 503 504 callStmt.registerOutParameter(1, Types.INTEGER); 505 callStmt.registerOutParameter(2, OracleTypes.ARRAY,ERR_MSG_ARRAY); // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 506 // callStmt.registerOutParameter(2, Types.ARRAY,ERR_MSG_ARRAY); // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 507 callStmt.registerOutParameter(3, OracleTypes.CURSOR); 508 ((OracleCallableStatement)callStmt).setARRAY( 4,newArray ); // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 509 // callStmt.setArray( 4,newArray ); // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 510 511 callStmt.execute(); 512 513 errCode = callStmt.getInt(1); 514 515 if( errCode < ErrorMessage.NG ) { // 異常以外ã?å ´å? 516 resultSet = ((OracleCallableStatement)callStmt).getCursor(3); 517 } 518 if( errCode > ErrorMessage.OK ) { // æ£å¸¸ä»¥å¤–ã?å ´å? 519 ARRAY rtn3 = ((OracleCallableStatement)callStmt).getARRAY(2); // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 520 // Array rtn3 = callStmt.getArray(2); // 5.7.2.2 (2014/01/24) Oracle11g(11.2.0.3ã®ãƒ‰ãƒ©ã‚¤ãƒ?対å¿? 521 Object[] rtnval3 = (Object[])rtn3.getArray(); 522 errMessage = new ErrorMessage( "Query_JDBCErrMsg Error!!" ); 523 for( int i=0; i<rtnval3.length; i++ ) { 524 DBErrMsg er = (DBErrMsg)rtnval3[i]; 525 if( er == null ) { break; } 526 errMessage.addMessage( er.getErrMsg() ); 527 } 528 } 529 // } 530 // finally { 531 // Closer.stmtClose( callStmt ); 532 // callStmt = null; 533 // } 534 return resultSet; 535 } 536 537 /** 538 * PrintWriter ã‚’å–å¾—ã—ã¾ã™ã? 539 * 540 * ã“ã“ã§ã¯ã€ä¸?ˆ¬çš?ªãƒ•ァイル出力をè€??ã—㟠PrintWriter を作æ?ã—ã¾ã™ã? 541 * 542 * @og.rev 3.7.1.1 (2005/05/23) フォルãƒ?Œãªã??åˆã?ã€è¤?•°éšŽå±¤åˆ??フォルãƒ?‚’自動ã§ä½œæ?ã—ã¾ã™ã? 543 * @og.rev 3.8.0.0 (2005/06/07) FileUtil#getPrintWriter を利用ã€? 544 * @og.rev 5.6.1.0 (2013/02/01) 3.7.1.1ã®ã‚³ãƒ¡ãƒ³ãƒˆã«å…¥ã£ã¦ã?‚‹ãŒå¯¾å¿œã•れã¦ã?ªã??ã§ãƒ•ォルãƒ?½œæ?追åŠ? 545 * 546 * @return 出力用PrintWriterオブジェクãƒ? 547 */ 548 private PrintWriter getPrintWriter() { 549 if( filename == null ) { 550 String errMsg = "ファイルåãŒã‚»ãƒ?ƒˆã•れã¦ã?¾ã›ã‚“ã€?; 551 throw new HybsSystemException( errMsg ); 552 } 553 String directory = HybsSystem.url2dir( fileURL ); 554 555 // 5.6.1.0 (2013/02/01) 556 File dir = new File(directory); 557 if( ! dir.exists() && ! dir.mkdirs() ) { 558 String errMsg = "ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä½œæ?ã«å¤±æ•—ã—ã¾ã—ãŸã€?" + directory + "]"; 559 throw new HybsSystemException( errMsg ); 560 } 561 562 563 // ※ 注æ„?StringUtil.urlAppend ã‚’çµ?¿è¾¼ã‚“ã§ã?‚‹æ„図ãŒä¸æ?。ä¸?—¦å‰Šé™¤ã—ã¦ã?¾ã™ãŒã€æ³¨æ„? 564 // 3.8.0.0 (2005/06/07) FileUtil#getPrintWriter を利用ã€? 565 // out = FileUtil.getPrintWriter( StringUtil.urlAppend( directory,filename ),fileAppend,encode); 566 567 // 処ç?‚’ç°¡ç´?Œ–ã—ã¾ã™ã? 568 // PrintWriter out = FileUtil.getPrintWriter( new File( directory,filename ),encode,fileAppend ); 569 // return out ; 570 return FileUtil.getPrintWriter( new File( directory,filename ),encode,fileAppend ); 571 } 572 573 /** 574 * åç§°é…å?ã‚’å?ã«ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®ãƒ??ã‚¿ã‚’å–å¾—ã—ã¾ã™ã? 575 * 576 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 577 * 578 * @param nameArray ã‚ーã¨ãªã‚‹åç§°ã®é…å? 579 * 580 * @return ãã?ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ± 581 */ 582 private String[] getRequest( final String[] nameArray ) { 583 String[] rtn = new String[nameArray.length]; 584 585 for( int i=0; i<rtn.length; i++ ) { 586 rtn[i] = getRequestValue( nameArray[i] ); 587 } 588 589 return rtn; 590 } 591 592 /** 593 * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)検索時ã?DB接続IDを指定ã—ã¾ã?åˆæœŸå€¤:DEFAULT)ã€? 594 * 595 * @og.tag 596 * 検索時ã?DB接続IDを指定ã—ã¾ã™ã?åˆæœŸå€¤ã¯ã€DEFAULT ã§ã™ã? 597 * 598 * @param id ãƒ??タベã?ス接続ID 599 */ 600 public void setDbid( final String id ) { 601 dbid = nval( getRequestParameter( id ),dbid ); 602 } 603 604 /** 605 * ã€TAG】å¯å¤‰é•·ãƒ•ァイルを作æ?ã™ã‚‹ã¨ãã?é ?›®åŒºåˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã? 606 * (åˆæœŸå€¤:TAB_SEPARATOR[={@og.value #TAB_SEPARATOR}])ã€? 607 * 608 * @og.tag å¯å¤‰é•·ãƒ•ァイルを作æ?ã™ã‚‹ã¨ãã?é ?›®åŒºåˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 609 * (åˆæœŸå€¤:ãƒãƒ¼ã‚«ãƒ«å®šç¾©ã®TAB_SEPARATOR[={@og.value #TAB_SEPARATOR}])ã€? 610 * 611 * @param sep é ?›®åŒºåˆ?‚Šæ–?? 612 * @see #TAB_SEPARATOR 613 */ 614 public void setSeparator( final String sep ) { 615 separator = nval( getRequestParameter( sep ),TAB_SEPARATOR ); 616 } 617 618 /** 619 * ã€TAG】ä¿å˜å?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªåã‚’æŒ?®šã—ã¾ã? 620 * (åˆæœŸå€¤:FILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€? 621 * 622 * @og.tag 623 * ã“ã?属æ?ã§æŒ?®šã•れるãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã€ãƒ•ァイルをセーブã—ã¾ã™ã? 624 * æŒ?®šæ–¹æ³•ã?ã€??常㮠fileURL 属æ?ã¨åŒæ§˜ã«ã€å?é ãŒã?'/' (UNIX) ã¾ãŸã?ã€?¼’æ–‡å—ç›®ãŒã? 625 * ":" (Windows)ã®å ´åˆã?ã€æŒ‡å®šã?URLãã?ã¾ã¾ã®ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã€ãã?§ãªã??åˆã?ã€? 626 * fileURL = "{@USER.ID}" ã¨æŒ?®šã™ã‚‹ã¨ã€FILE_URL 属æ?ã§æŒ?®šã?フォルãƒ??下ã«ã€? 627 * ã•らã«ã€å„個人ID別ã®ãƒ•ォルãƒ?‚’作æ?ã—ã¦ã€ãã“ã«ã‚»ãƒ¼ãƒ–ã—ã¾ã™ã? 628 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®FILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€? 629 * 630 * @og.rev 3.5.4.3 (2004/01/05) å†?ƒ¨å‡¦ç?‚’ã€makeFileURL ã«ç§»å‹•ã? 631 * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソãƒ?ƒ‰ã®åˆ©ç”¨ 632 * @og.rev 4.0.0.0 (2007/11/20) æŒ?®šã•れãŸãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªåã?æœ?¾ŒãŒ"\"or"/"ã§çµ‚ã‚ã£ã¦ã?ªã??åˆã«ã€?/"ã‚’ä»˜åŠ ã™ã‚‹ã€? 633 * 634 * @param url ä¿å˜å?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªå? 635 * @see org.opengion.hayabusa.common.SystemData#FILE_URL 636 */ 637 public void setFileURL( final String url ) { 638 String furl = nval( getRequestParameter( url ),null ); 639 if( furl != null ) { 640 char ch = furl.charAt( furl.length()-1 ); 641 if( ch != '/' && ch != '\\' ) { furl = furl + "/"; } 642 fileURL = StringUtil.urlAppend( fileURL,furl ); 643 } 644 } 645 646 /** 647 * ã€TAG】ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:シスãƒ?ƒ パラメータã®FILE_FILENAME)ã€? 648 * 649 * @og.tag ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 650 * 651 * @param fname ファイルå? 652 */ 653 public void setFilename( final String fname ) { 654 filename = nval( getRequestParameter( fname ),filename ); 655 } 656 657 /** 658 * ã€TAG】ZIPファイルを作æ?ã™ã‚‹ã¨ãã?ZIPファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:filename + ".zip")ã€? 659 * 660 * @og.tag 661 * zip 属æ?ã«ã€true を指定ã—ãŸå?åˆã«ã€ZIPファイル化ã—ã¾ã™ã?ãã?å ´åˆã?ファイルåã‚’æŒ?®šã—ã¾ã™ã? 662 * ãªã«ã‚‚指定ã—ãªã??åˆã?ã€filename + ".zip" ã«ãªã‚Šã¾ã™ã? 663 * 664 * @param zipFile ZIPファイルå? 665 * @see #setZip( String ) 666 */ 667 public void setZipFilename( final String zipFile ) { 668 zipFilename = nval( getRequestParameter( zipFile ),zipFilename ); 669 } 670 671 /** 672 * ã€TAG】ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルエンコーãƒ?‚£ãƒ³ã‚°åã‚’ã‚»ãƒ?ƒˆã—ã¾ã? 673 * (åˆæœŸå€¤:FILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])ã€? 674 * 675 * @og.tag 676 * "DEFAULT","JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS" 677 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®FILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])ã€? 678 * 679 * @og.rev 2.2.0.0 (2002/12/17) ä¸å›½èª?国際化)対å¿?エンコードã?å–得方法変更 680 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE ã‹ã‚‰ã€ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰æƒ…å ±ã‚’å–å¾—ã™ã‚‹ã? 681 * 682 * @param enc ファイルエンコーãƒ?‚£ãƒ³ã‚°å? 683 * @see <a href="http://www.iana.org/assignments/character-sets">IANA Charset Registry</a> 684 * @see org.opengion.hayabusa.common.SystemData#FILE_ENCODE 685 */ 686 public void setEncode( final String enc ) { 687 encode = nval( getRequestParameter( enc ),encode ); 688 } 689 690 /** 691 * ã€TAG】ã?ãƒ?ƒ€ãƒ¼ã‚’書ãè¾¼ã‚?‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€? 692 * 693 * @og.tag 694 * #Name ?¥?¥?¥?¥ ヘッãƒ??ã®æ›¸ãè¾¼ã¿ã‚’指定ã—ã¾ã™ã? 695 * 通常ã¯ã€æ›¸ãè¾¼ã¿(true)ã«ã—ã¦ãŠãã€ä½¿ç”¨å´ã§ã‚³ãƒ¡ãƒ³ãƒˆã¨è§£é‡ˆã™ã‚‹ã‚ˆã?« 696 * 処ç?‚’行ã†ã¹ãã§ã™ã?コメントã?ãŸã‚ã€append モードã§é€”ä¸ã«ç¾ã‚Œã¦ã‚? 697 * 無視ã§ãã¾ã™ã?ã¾ãŸã?エンジン標準ã§ãƒ??ã‚¿ã‚’å–り込ã‚??åˆã«ã€ãƒ‡ãƒ¼ã‚¿ã®é…ç½®ã? 698 * 変更ã•れã¦ã‚‚å–り込ã¿ãƒ—ãƒã‚°ãƒ©ãƒ??ãã?ã¾ã¾ä½¿ç”¨ã§ãã¾ã™ã? 699 * åˆæœŸå€¤ã¯ã€true(書ãè¾¼ã‚?ã§ã™ã? 700 * 701 * @param flag ヘッãƒ??を書ãè¾¼ã‚?‹ã©ã?‹ [true:書ãè¾¼ã‚?false:書ãè¾¼ã¾ãªã„] 702 */ 703 public void setUseHeader( final String flag ) { 704 useHeader = nval( getRequestParameter( flag ),useHeader ); 705 } 706 707 /** 708 * ã€TAG】追åŠ?ƒ¢ãƒ¼ãƒ‰ã§æ›¸ãè¾¼ã‚?‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false[通常モード])ã€? 709 * 710 * @og.tag 711 * ファイルを書ãè¾¼ã‚??åˆã?追åŠ?ƒ¢ãƒ¼ãƒ‰ã§æ›¸ãè¾¼ã‚?‹ã©ã?‹ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 712 * æ–°è¦ãƒ¢ãƒ¼ãƒ?true)ã®å ´åˆã?æ—¢å˜ã?ファイルãŒå˜åœ¨ã—ã?ã‹ã¤æ›¸ãè¾¼ã¿è¨±å¯ãŒã‚れã?ã€? 713 * 上書ãã§æ–°è¦ã«ä½œæ?ã—ã¾ã™ã? 714 * åˆæœŸå€¤ã¯ã€false(æ–°è¦ãƒ¢ãƒ¼ãƒ?ã§ã™ã? 715 * 716 * @param flag [true:追åŠ?ƒ¢ãƒ¼ãƒ?false:æ–°è¦ãƒ¢ãƒ¼ãƒ‰] 717 */ 718 public void setFileAppend( final String flag ) { 719 fileAppend = nval( getRequestParameter( flag ),fileAppend ); 720 } 721 722 /** 723 * ã€TAGã€‘çµæžœã‚’ファイルã«å‡ºåŠ›ã™ã‚‹ã¨ãã«ã€ZIPã§åœ§ç¸®ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€? 724 * 725 * @og.tag 726 * 大é‡ã«æŠœã出ã™å?åˆã?ãã?ã¾ã¾ã€ã‚µãƒ¼ãƒã?ã‹ã‚‰å–り出ã™ã ã‘ã§ã‚‚大変ã§ã™ã? 727 * zip 属æ?ã‚’ã?true ã«ã™ã‚‹ã¨ã€GZIP ã§åœ§ç¸®ã—ãŸãƒ•ァイルを作æ?ã—ã¾ã™ã? 728 * åˆæœŸå€¤ã¯ã€false(圧縮ã—ãªã?ã§ã™ã? 729 * 730 * @param flag ZIPã§åœ§ç¸® [true:ã™ã‚‹/ãれ以å¤?ã—ãªã„] 731 * @see #setZipFilename( String ) 732 */ 733 public void setZip( final String flag ) { 734 zip = nval( getRequestParameter( flag ),zip ); 735 } 736 737 /** 738 * ã€TAGã€‘æ¤œç´¢çµæžœã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0033[ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸ])ã€? 739 * 740 * @og.tag 741 * ã“ã“ã§ã¯ã€æ¤œç´¢çµæžœã®ä»¶æ•°ã‚?™»éŒ²ã•れãŸä»¶æ•°ã‚’ã¾ãšå?力ã—ã€? 742 * ãã?次ã«ã€ã“ã“ã§æŒ?®šã—ãŸãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’リソースã‹ã‚‰å–å¾—ã—㦠743 * 表示ã—ã¾ã™ã? 744 * 表示ã•ã›ãŸããªã??åˆã?, displayMsg = "" ã‚’ã‚»ãƒ?ƒˆã—ã¦ãã ã•ã„ã€? 745 * åˆæœŸå€¤ã¯ã€æ¤œç´¢ä»¶æ•°ã‚’表示ã—ã¾ã™ã? 746 * 747 * @param id ãƒ?‚£ã‚¹ãƒ—レイã«è¡¨ç¤ºã•ã›ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ ID 748 */ 749 public void setDisplayMsg( final String id ) { 750 String ids = getRequestParameter( id ); 751 if( ids != null ) { displayMsg = ids; } 752 } 753 754 /** 755 * ã€TAGã€‘æ¤œç´¢çµæžœãŒã‚¼ãƒä»¶ã®å ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ])ã€? 756 * 757 * @og.tag 758 * ã“ã“ã§ã¯ã€æ¤œç´¢çµæžœãŒã‚¼ãƒä»¶ã®å ´åˆã?ã¿ã€ç‰¹åˆ¥ãªãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’表示ã•ã›ã¾ã™ã? 759 * 従æ¥ã¯ã€displayMsg ã¨å…¼ç”¨ã§ã€ã?0ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸã€ã¨ã?†è¡¨ç¤ºã§ã—ãŸãŒã? 760 * displayMsg ã®åˆæœŸè¡¨ç¤ºã¯ã€OFF ã«ãªã‚Šã¾ã—ãŸã®ã§ã€ã‚¼ãƒä»¶ã®å ´åˆã?ã¿åˆ¥ã«è¡¨ç¤ºã•ã›ã¾ã™ã? 761 * 表示ã•ã›ãŸããªã??åˆã?, notfoundMsg = "" ã‚’ã‚»ãƒ?ƒˆã—ã¦ãã ã•ã„ã€? 762 * åˆæœŸå€¤ã¯ã€MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ]ã§ã™ã? 763 * 764 * @param id ãƒ?‚£ã‚¹ãƒ—レイã«è¡¨ç¤ºã•ã›ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ ID 765 */ 766 public void setNotfoundMsg( final String id ) { 767 String ids = getRequestParameter( id ); 768 if( ids != null ) { notfoundMsg = ids; } 769 } 770 771 /** 772 * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®ãƒ•ã‚§ãƒ?ƒã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã?åˆæœŸå€¤:100)ã€? 773 * 774 * @og.tag 775 * より多ãã®è¡ŒãŒå¿?¦ãªã¨ãã«ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?スã‹ã‚‰å–り出ã™å¿?¦ãŒã‚る行数㫠776 * ã¤ã?¦ã®ãƒ’ントを JDBC ドライãƒã«æä¾›ã—ã¾ã™ã? 777 * æŒ?®šã•れãŸè¡Œæ•°ã¯ã€ã“ã® Statement を使ã£ã¦ä½œæ?ã•れãŸçµæžœã‚»ãƒ?ƒˆã«ã?‘影響ã—ã¾ã™ã? 778 * æŒ?®šã•れãŸå€¤ã?0 ã®å ´åˆã?ヒントã?無視ã•れã¾ã™ã? 779 * åˆæœŸå€¤ã¯ã€?00 ã§ã™ã? 780 * 781 * @param size フェãƒ?ƒã™ã‚‹è¡Œæ•°(åˆæœŸå€¤:100) 782 */ 783 public void setFetchSize( final String size ) { 784 fetchSize = nval( getRequestParameter( size ),fetchSize ); 785 } 786 787 /** 788 * ã€TAG】PL/SQLを利用ã™ã‚‹å ´åˆã?引数ã«ã‚»ãƒ?ƒˆã™ã¹ã?ãƒ??ã‚¿ã®åç§°ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã? 789 * 790 * @og.tag 791 * è¤?•°ã‚ã‚‹å ´åˆã?ã€ã‚«ãƒ³ãƒžåŒºåˆ?‚Šæ–?—ã§æ¸¡ã—ã¾ã™ã? 792 * PL/SQL を使用ã—ãªã??åˆã?ã€ç„¡è¦–ã•れã¾ã™ã? 793 * 794 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 795 * 796 * @param nm 引数ã®åç§°(è¤?•°ã‚ã‚‹å ´åˆã?ã€ã‚«ãƒ³ãƒžåŒºåˆ?‚Šæ–?? 797 */ 798 public void setNames( final String nm ) { 799 names = nval( getRequestParameter( nm ),names ); 800 } 801 802 /** 803 * ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹ID(JDBC,JDBCErrMsg)を指定ã—ã¾ã?{@og.doc03Link queryType åˆæœŸå€¤:JDBC})ã€? 804 * 805 * @og.tag 806 * ストアドã?ãƒã‚·ãƒ¼ã‚¸ãƒ£ç‰ã‚’実行ã™ã‚‹å?åˆã«ã€queryType="JDBCErrMsg" ã‚? 807 * æŒ?®šã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?(ãれ以外ã?æŒ?®šã?ã€å?期å?ã® JDBC ã«ãªã‚Šã¾ã™ã?) 808 * åˆæœŸå€¤ã¯ã€?JDBC" ã§ã™ã? 809 * {@og.doc03Link queryType Query_**** クラス} 810 * 811 * @og.rev 3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg å½¢å¼?ã¸ã®å¯¾å¿? 812 * 813 * @param id Query を発行ã™ã‚‹ç‚ºã®å®Ÿã‚¯ãƒ©ã‚¹ ID 814 */ 815 public void setQueryType( final String id ) { 816 // å†?ƒ¨çš?«ã¯ã€JDBCErrMsg:false / ãれ以å¤?true ã§ç®¡ç?—ã¦ã?¾ã™ã? 817 queryType = ! "JDBCErrMsg".equalsIgnoreCase( getRequestParameter( id ) ); 818 } 819 820 /** 821 * ã€TAG】ファイルã«è¡Œç•ªå·ã‚’å?力ã™ã‚‹ã‹ã©ã?‹(åˆæœŸå€¤:true) 822 * 823 * @og.tag 824 * ファイルã«è¡Œç•ªå·ã‚’å?力ã™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã™ã? 825 * åˆæœŸå€¤ã¯ã€true(出力ã™ã‚?ã§ã™ã? 826 * 827 * @og.rev 5.5.7.1 (2012/10/05) æ–°è¦è¿½åŠ? 828 * @param flag 行番å·å‡ºåŠ?[true:ã™ã‚‹/ãれ以å¤?ã—ãªã„] 829 */ 830 public void setUseNumber( final String flag ) { 831 useNumber = nval( getRequestParameter( flag ),useNumber ); 832 } 833 834 /** 835 * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºæ›¸ãè¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰ 836 * 837 * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ? 838 * @serialData 839 * 840 * @param strm ObjectOutputStreamオブジェクãƒ? 841 */ 842 private void writeObject( final ObjectOutputStream strm ) throws IOException { 843 strm.defaultWriteObject(); 844 } 845 846 /** 847 * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºèªã¿è¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰ 848 * 849 * ã“ã“ã§ã¯ã€transient 宣è¨?•れãŸå†?ƒ¨å¤‰æ•°ã®å†??åˆæœŸåŒ–ãŒå¿?¦ãªãƒ•ィールドã?ã¿è¨å®šã—ã¾ã™ã? 850 * 851 * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ? 852 * @serialData 853 * 854 * @param strm ObjectInputStreamオブジェクãƒ? 855 * @see #release2() 856 */ 857 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException { 858 strm.defaultReadObject(); 859 } 860 861 /** 862 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 863 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 864 * 865 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 866 */ 867 @Override 868 public String toString() { 869 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 870 .println( "VERSION" ,VERSION ) 871 .println( "dbid" ,dbid ) 872 .println( "separator" ,separator ) 873 .println( "useHeader" ,useHeader ) 874 .println( "fileURL" ,fileURL ) 875 .println( "filename" ,filename ) 876 .println( "zipFilename" ,zipFilename) 877 .println( "sql" ,sql ) 878 .println( "encode" ,encode ) 879 .println( "fileAppend" ,fileAppend ) 880 .println( "zip" ,zip ) 881 .println( "displayMsg" ,displayMsg ) 882 .println( "dyStart" ,dyStart ) 883 .println( "fetchSize" ,fetchSize ) 884 .println( "queryType" ,queryType ) 885 .println( "names" ,names ) 886 .println( "errCode" ,errCode ) 887 .println( "Other..." ,getAttributes().getAttribute() ) 888 .fixForm().toString() ; 889 } 890 }