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