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.DBTableModel;
021 import org.opengion.hayabusa.db.DBColumn;
022 import org.opengion.hayabusa.io.TableReader;
023 import org.opengion.fukurou.util.ErrorMessage;
024 import org.opengion.fukurou.util.FileUtil;
025 import org.opengion.fukurou.util.Closer ;
026 import org.opengion.fukurou.util.StringUtil ;
027 import static org.opengion.fukurou.util.StringUtil.nval ;
028
029 import java.io.File;
030 import java.io.BufferedReader;
031 import java.util.Locale ;
032 import java.io.ObjectOutputStream;
033 import java.io.ObjectInputStream;
034 import java.io.IOException;
035
036 /**
037 * æŒ?®šã?ファイルã‚?DBTableModelオブジェクトに読み取るファイル入力タグですã?
038 *
039 * ãƒ??タ(DBTableModel)と、コントローラ(ReadTableタグ)を与えて、外部からコントロールすることでã€?
040 * å�?¨®形式で ãƒ??タ(DBTableModel)を表示させることã�?できますã?
041 * ReadTableタグ に対して、コマンドを与えることにより、å?部のコントローラの実è£?�«対応しã�?
042 * 形式でãƒ??タを作æ?しますã?
043 * すべての読取ã?初期クラス名を リソースファイルの TABLE_READER_DEFAULT_CLASS でæŒ?®š可能ですã?
044 * そã?場合ã?AutoReader を指定すると、Excel と Default(ãƒ?‚スãƒ? をé?番に試しますã?
045 *
046 * 入力件数ã‚?DB.COUNT" キーでリクエストにセãƒ?ƒˆしてã�?�¾すã?
047 *
048 * @og.formSample
049 * ●形式ï¼?
050 * <og:readTable
051 * command = "NEW"
052 * fileURL = "{@USER.ID}" 読み取りå…?ƒ‡ィレクトリå�?
053 * filename = "{@filename}" 読み取りå…?ƒ•ァイルå�?
054 * encode = "UnicodeLittle" 読み取りå…?ƒ•ァイルエンコード名
055 * maxRowCount = "10000" 読取最大件数(0:[無制限])
056 * />
057 * ●body?šなã�?
058 *
059 * ●Tag定義??
060 * <og:readTable
061 * readerClass 【TAG】実際に読み出すクラス名ã?略称(TableReader_**** の ****)をセãƒ?ƒˆしまã�?{@og.doc03Link readerClass 初期値:Default})
062 * fileURL 【TAG】読み取りå…?ƒ‡ィレクトリ名をæŒ?®šしまã�?初期値:FILE_URL)
063 * filename 【TAG】ファイルを作æ?するときã?ファイル名をセãƒ?ƒˆしまã�?(初期値:FILE_FILENAME[=file.xls])
064 * encode 【TAG】ファイルを作æ?するときã?ファイルエンコーãƒ?‚£ング名をセãƒ?ƒˆしまã�?初期値:FILE_ENCODE)
065 * maxRowCount 【TAG】読取時のæœ?¤§取り込み件数をセãƒ?ƒˆしまã�?(初期値:DB_MAX_ROW_COUNT[=1000])(0:[無制限])
066 * separator 【TAG】可変長ファイルを作æ?するときã?é ?›®区åˆ?‚Šæ–?—をセãƒ?ƒˆしまã�?
067 * tableId 【TAGã€?通常使ã�?�¾せん)sessionからæ‰?¾—すã‚?DBTableModelオブジェクトã? ID
068 * command 【TAG】コマンãƒ?NEW,RENEW)をセãƒ?ƒˆしまã�?初期値:NEW)
069 * modifyType 【TAG】ファイル取り込み時ã? モãƒ?‚£ファイタイãƒ?A(追åŠ?,C(更新),D(削除))を指定しまã�?
070 * displayMsg 【TAG】query の結果を画面上に表示するメãƒ?‚»ージIDを指定しまã�?初期値:MSG0033[ã€?»¶検索しました])
071 * notfoundMsg 【TAG】検索結果がゼロ件の場合に表示するメãƒ?‚»ージリソースIDを指定しまã�?初期値:MSG0077[対象ãƒ??タはありませんでした])
072 * sheetName 【TAG】EXCELファイルを読み込ã‚?�¨きã?シート名を設定しまã�?初期値:æŒ?®šなã�?
073 * sheetNos 【TAG】EXCELファイルを読み込ã‚?�¨きã?シート番号をè¤?•°設定できまã�?初期値:0)
074 * sheetConstKeys 【TAG】EXCELファイルを読み込ã‚?�¨きã?固定å?となるカラãƒ?��(CSV形å¼?
075 * sheetConstAdrs 【TAG】EXCELファイルを読み込ã‚?�¨きã?固定å?となるアドレス(è¡?åˆ?è¡?åˆ?・・・)
076 * nullBreakClm 【TAG】カラãƒ??に NULL が現れた時点で読み取りを中止しますã?è¤?•°Sheetの場合ã?、次のSheetを読みますã?
077 * columns 【TAG】読み取りå…?ƒ•ァイルのカラãƒ??をã?外部(タグ)よりæŒ?®šしまã�?
078 * useNumber 【TAG】行番号æƒ??をã?使用してã�?‚‹/してã�?�ªい[true/false]を指定しまã�?初期値:true)
079 * adjustColumns 【TAG】読み取りå…?ƒ•ァイルのãƒ??タ変換を行うカラãƒ??をカンマ指定しまã�?
080 * checkColumns 【TAG】読み取りå…?ƒ•ァイルの整合æ?チェãƒ?‚¯を行うカラãƒ??をカンマ指定しまã�?
081 * nullCheck 【TAG】NULL チェãƒ?‚¯すべきカラãƒ??をカンマ区åˆ?‚Š(CVS形å¼?でæŒ?®šしまã�?
082 * language 【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
083 * stopZero 【TAG】読込件数が0件のときå?ç�?‚’続行するかどã�?�‹[true/false]を指定しまã�?初期値:false[続行する])
084 * scope 【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
085 * mainTrans 【TAGã€?通常使ã�?�¾せん)タグで処ç�?�•れる処ç�?�Œメインとなるトランザクション処ç�?�‹どã�?�‹を指定しまã�?初期値:false)
086 * skipRowCount 【TAGã€?通常は使ã�?�¾せん)ãƒ??タの読み飛ã?し件数を設定しまã�?
087 * useRenderer 【TAG】読取å?ç�?�§ラベルをコードリソースにé€?¤‰換を行うかどã�?�‹を指定しまã�?(初期値:USE_TABLE_READER_RENDERER[=false])
088 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
089 * />
090 *
091 * ●使用ä¾?
092 *
093 * <og:readTable
094 * command = "NEW"
095 * readerClass = "Fixed" 固定長ãƒ??タの読み取り
096 * modifyType = "{@modifyType}" 読取時のモãƒ?‚£ファイタイãƒ?A,Cç?
097 * fileURL = "{@USER.ID}" 読み取りå…?ƒ‡ィレクトリå�?
098 * filename = "{@filename}" 読み取りå…?ƒ•ァイルå�?
099 * encode = "Shift_JIS" 読み取りå…?ƒ•ァイルエンコード名
100 * maxRowCount = "10000" 読取最大件数(0:[無制限])
101 * columns = "OYA,KO,HJO,SU,DYSTR,DYEND" #NAME に対応するカラãƒ??
102 * useNumber = "false" 行番号の存在しなã�?ƒ‡ータを読み取りますã?
103 * adjustColumns = "OYA,KO,HJO,SU" ãƒ??タ変換するカラãƒ??("*" で全カラãƒ?
104 * checkColumns = "OYA,KO,HJO,SU" 整合æ?チェãƒ?‚¯するカラãƒ??("*" で全カラãƒ?
105 * nullCheck = "OYA,KO,SU" NULLチェãƒ?‚¯を実行しまã�?"*" で全カラãƒ?
106 * stopZero = "true" 取å¾?件の場合に以降ã?処ç�?‚’停止しまã�?
107 * skipRowCount = "4" ãƒ??タの読み飛ã?し件数(読み込み開始ã?、この数字+1行目から)
108 * />
109 *
110 * @og.group ファイル入åŠ?
111 *
112 * @version 4.0
113 * @author Kazuhiko Hasegawa
114 * @since JDK5.0,
115 */
116 public class ReadTableTag extends CommonTagSupport {
117 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
118 private static final String VERSION = "5.5.8.5 (2012/11/27)" ;
119
120 private static final long serialVersionUID = 558520121127L ;
121
122 private static final int ERROR_ROW_COUNT = 200 ; // 4.0.0 (2007/05/25)
123
124 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? 新規作æ? {@value} */
125 public static final String CMD_NEW = "NEW" ;
126 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? 再検索 {@value} */
127 public static final String CMD_RENEW = "RENEW" ;
128
129 private static final String[] COMMAND_LIST = new String[] { CMD_NEW , CMD_RENEW };
130
131 private String separator = TableReader.TAB_SEPARATOR; // é ?›®区åˆ?‚Šæ–??
132 private String fileURL = HybsSystem.sys( "FILE_URL" );
133 private String filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイルå�?
134 private String encode = HybsSystem.sys( "FILE_ENCODE" ); // ファイルエンコーãƒ?‚£ング "JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS"
135 private String readerClass = HybsSystem.sys( "TABLE_READER_DEFAULT_CLASS" ); // 3.8.5.3 (2006/08/07)
136 private int maxRowCount = -1;
137 // private String displayMsg = "MSG0033"; // ã€?»¶検索しましたã€?
138 private String displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" );
139 private String notfoundMsg = "MSG0077"; // 対象ãƒ??タはありませんでしたã€?
140 private int executeCount = -1; // 検索/実行件数
141 private String modifyType = null;
142 // private String[] checkColumns = null; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
143 // private String[] adjustColumns = null; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
144 // private String[] nullCheck = null; // 3.8.0.2 (2005/06/30) nullチェãƒ?‚¯確èª?
145 private String adjustColumns = null; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
146 private String checkColumns = null; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
147 private String nullCheck = null; // 3.8.0.2 (2005/06/30) nullチェãƒ?‚¯確èª?
148 // private boolean allColumnCheck = false; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
149
150 private transient DBTableModel table = null;
151 private String command = CMD_NEW;
152 private String tableId = HybsSystem.TBL_MDL_KEY ;
153 private String sheetName = null ; // 3.5.4.2 (2003/12/15)
154 private String sheetNos = null ; // 5.5.7.2 (2012/10/09) è¤?•°シートをæŒ?®šできるようにシート番号を指定できるようにするã€?
155 private String sheetConstKeys = null ; // 5.5.8.2 (2012/11/09) 固定å?となるカラãƒ?��(CSV形å¼?
156 private String sheetConstAdrs = null ; // 5.5.8.2 (2012/11/09) 固定å?となるアドレス(è¡?åˆ?è¡?åˆ?・・・)
157 private String nullBreakClm = null; // 5.5.8.2 (2012/11/09) 取込み条件/Sheet BREAK条件
158
159 // 3.5.4.5 (2004/01/23) 外部よりカラãƒ??(カンマ区åˆ?‚Š)を指定できるようにするã€?
160 private String columns = null;
161 private boolean useNumber = true; // 3.7.0.5 (2005/04/11)
162
163 private boolean stopZero = false; // 4.3.7.0 (2009/06/01) stopZero属æ?追åŠ?
164
165 // 5.1.8.0 (2010/07/01) AutoReaderのCalc対å¿?
166 // private static final String[] AUTO_READER_CLASS = new String[] { "Excel","Default" ,"Default" };
167 // private static final String[] AUTO_READER_ENCODE = new String[] { null ,"UnicodeLittle","Windows-31J" };
168 private static final String[] AUTO_READER_CLASS = new String[] { "Excel","Calc","Default" ,"Default" };
169 private static final String[] AUTO_READER_ENCODE = new String[] { null ,null ,"UnicodeLittle","Windows-31J" };
170
171 private boolean isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
172 private int skipRowCount = 0; // 5.1.6.0 (2010/05/01) ãƒ??タの読み飛ã?し設å®?
173
174 // 5.2.1.0 (2010/10/01) 読取å?ç�?�§コードリソースのラベル変換を行うかどã�?�‹
175 private boolean useRenderer = HybsSystem.sysBool( "USE_TABLE_READER_RENDERER" ); // 5.2.1.0 (2010/10/01)
176
177 /**
178 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
179 *
180 * @og.rev 3.0.1.4 (2003/03/17) displayMsg ã�??�Byteの場合ã?、件数も表示しなã�?‚ˆã�?�«変更ã€?
181 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
182 * @og.rev 3.5.4.1 (2003/12/01) 引数の BufferedReader をã?InputStream に変更ã€?
183 * @og.rev 3.5.4.3 (2004/01/05) 引数の InputStream をã? BufferedReader に戻すã?
184 * @og.rev 3.5.6.5 (2004/08/09) 暫定的に、DBTableModelをå?行削除しますã?
185 * @og.rev 3.6.0.0 (2004/09/24) DBTableModel の先行削除は、scope="session" の場合ã?みã€?
186 * @og.rev 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯用に、checkColumns,adjustColumns 属æ?追åŠ?
187 * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェãƒ?‚¯を行いますã?
188 * @og.rev 3.8.5.3 (2006/08/07) readerClassã�?"Excel"でエラーが発生したときã?もうä¸?º¦Defaultで再読取を行いますã?
189 * @og.rev 4.0.0.0 (2007/10/12) checkTableColumn 前に、modifyType 設定を行いますã?
190 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ージリソース統å�? getResource().getMessage > getResource().getLabel )
191 * @og.rev 4.3.1.1 (2008/10/08) columnsが指定されてã�?‚‹場合ã?、AutoReader禁止
192 * @og.rev 4.3.7.0 (2009/06/01) stopZero機è?,DB.COUNTリクエストキーへ読込件数セãƒ?ƒˆを追åŠ?
193 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??、DBTableModelが新規作æ?されたå?ç�?�§のみ行うã€?
194 * @og.rev 5.1.8.0 (2010/07/01) AutoReaderのCalc対å¿?
195 * @og.rev 5.1.9.0 (2010/08/01) AutoReaderでのExceptionの判定をThrowableに変更
196 *
197 * @return 後続å?ç�??æŒ?¤º
198 */
199 @Override
200 public int doEndTag() {
201 debugPrint(); // 4.0.0 (2005/02/28)
202 if( check( command, COMMAND_LIST ) ) {
203 useMainTrans( isMainTrans ); // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
204 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19)
205
206 // 3.5.6.5 (2004/08/09) 削除するのは、セãƒ?‚·ョンのオブジェクトでよいã€?
207 // 3.6.0.0 (2004/09/24) 削除するのは、scope="session" の場合ã?みã€?
208 if( "session".equals( getScope() ) ) {
209 removeSessionAttribute( tableId );
210 removeSessionAttribute( HybsSystem.VIEWFORM_KEY );
211 }
212
213 if( maxRowCount < 0 ) {
214 maxRowCount = sysInt( "DB_MAX_ROW_COUNT" );
215 }
216
217 // ファイル の読み込み?šAutoReader 処ç�?
218 BufferedReader pw = null;
219 final String[] READER_CLASS ;
220 final String[] READER_ENCODE ;
221 if( "AutoReader".equalsIgnoreCase( readerClass ) ) {
222 // 4.3.1.1 (2008/10/08)
223 if( columns != null && columns.length() > 0 ) {
224 String errMsg = "columnsが指定されてã�?‚‹場合ã?、readerClass=\"AutoReader\"は使えません";
225 throw new HybsSystemException( errMsg ); // 4.3.4.4 (2009/01/01)
226 }
227 READER_CLASS = AUTO_READER_CLASS ;
228 READER_ENCODE = AUTO_READER_ENCODE;
229 }
230 else {
231 READER_CLASS = new String[] { readerClass };
232 READER_ENCODE = new String[] { encode };
233 }
234
235 StringBuilder tempMsg = new StringBuilder();
236 for( int i=0; i<READER_CLASS.length; i++ ) {
237 readerClass = READER_CLASS[i];
238 encode = READER_ENCODE[i];
239
240 try {
241 // 5.1.8.0 (2010/07/01) AutoReaderのCalc対å¿?
242 // if( "Excel".equalsIgnoreCase( readerClass ) ) {
243 if( "Excel".equalsIgnoreCase( readerClass ) || "Calc".equalsIgnoreCase( readerClass ) ) {
244 create( null );
245 }
246 else {
247 pw = getBufferedReader();
248 create( pw );
249 }
250 // 成功すれば、エラーメãƒ?‚»ージをクリアして、その場で抜けるã?
251 tempMsg = null;
252 break;
253 }
254 // 3.8.5.3 (2006/08/07) readerClassã�?"Excel"でエラーが発生したときã?もうä¸?º¦Defaultで再読取を行いますã?
255 // 5.1.9.0 (2010/08/01) RuntimeException系のExceptionがキャãƒ?ƒ�できなã�?�Ÿめã?Throwableで受けã‚?
256 // catch( HybsSystemException ex ) { catch( HybsSystemException ex ) {
257 catch( Throwable th ) {
258 tempMsg.append( "readerClass=[" ).append( readerClass )
259 .append( "],encode=[" ).append( encode )
260 .append( "] Error!" ).append( HybsSystem.CR )
261 .append( th.getMessage() ).append( HybsSystem.CR ) ;
262
263 // String tmp = "readerClass=[" + readerClass + "],encode=[" + encode + "] Error!"
264 // + HybsSystem.CR
265 // + ex.getMessage()
266 // + HybsSystem.CR ;
267 // System.err.print( tmp );
268 // tempMsg += tmp ;
269 }
270 finally {
271 Closer.ioClose( pw ); // 4.0.0 (2006/01/31) close 処ç�?™‚の IOException を無è¦?
272 }
273 }
274
275 if( tempMsg != null ) { // æœ?¾Œまでエラーがあれã?、例外å?ç�?‚’発行しますã?
276 System.err.print( tempMsg.toString() );
277 throw new HybsSystemException( tempMsg.toString() );
278 }
279
280 if( table != null ) {
281 // 3.6.0.2 (2004/10/04)
282 // table = setAdjustTable( table );
283
284 // 4.0.0.0 (2007/10/12) checkTableColumn 前に、modifyType 設定を行いますã?
285 executeCount = table.getRowCount();
286 if( modifyType != null ) {
287 for( int row=0; row<executeCount; row++ ) {
288 table.setModifyType( row,modifyType );
289 }
290 }
291
292 ErrorMessage errMsg = checkTableColumn( table );
293 if( errMsg != null && ! errMsg.isOK()) {
294 jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg,getResource() ) );
295 return SKIP_PAGE ;
296 }
297
298 }
299 // 3.6.0.8 (2004/11/19) トランザクションチェãƒ?‚¯を行いますã?
300 if( ! commitTableObject( tableId, table ) ) {
301 jspPrint( "ReadTableTag Query処ç�?�Œ割り込まれましたã€?BTableModel は登録しませんã€? );
302 return (SKIP_PAGE);
303 }
304
305 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL );
306
307 // 実行件数の表示 command="NEW" のときã?み、displayMsg を表示させますã?
308 // 4.0.0 (2005/11/30) 出力é?の変更。ä¸?•ªæœ??に出力しますã?
309 // boolean useStatusBar = HybsSystem.sysBool( "VIEW_USE_DISPLAY_MSG" );
310 if( CMD_NEW.equals( command ) ) {
311 // if( useStatusBar && executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) {
312 if( executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) {
313 buf.append( executeCount );
314 // buf.append( getResource().getMessage( displayMsg ) );
315 buf.append( getResource().getLabel( displayMsg ) );
316 buf.append( HybsSystem.BR );
317 }
318 else if( executeCount == 0 && notfoundMsg != null && notfoundMsg.length() > 0 ) {
319 // buf.append( getResource().getMessage( notfoundMsg ) );
320 buf.append( getResource().getLabel( notfoundMsg ) );
321 buf.append( HybsSystem.BR );
322 }
323 }
324
325 // 4.3.7.0 (2009/06/01) 読込件数をã?"DB.COUNT" キーでリクエストにセãƒ?ƒˆするã€?
326 setRequestAttribute( "DB.COUNT" , String.valueOf( executeCount ) );
327
328 jspPrint( buf.toString() );
329 }
330
331 // 4.3.7.0 (2009/06/01) stopZero機è?を追åŠ?
332 final int rtnCode ;
333 if( executeCount == 0 && stopZero ) {
334 rtnCode = SKIP_PAGE;
335 }
336 else {
337 rtnCode = EVAL_PAGE;
338 }
339
340 // return(EVAL_PAGE);
341 return ( rtnCode );
342 }
343
344 /**
345 * タグリブオブジェクトをリリースしますã?
346 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
347 *
348 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
349 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
350 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得するã?
351 * @og.rev 3.1.4.0 (2003/04/18) command 属æ?に、å?期å?(NEW)を設定するã?
352 * @og.rev 3.5.4.2 (2003/12/15) EXCELのシート名を指定できるように変更ã€?
353 * @og.rev 3.5.4.5 (2004/01/23) 外部よりカラãƒ??(カンマ区åˆ?‚Š)を指定できるようにするã€?
354 * @og.rev 3.6.0.2 (2004/10/04) checkColumns,adjustColumns,allColumnCheck 属æ?追åŠ?
355 * @og.rev 3.7.0.5 (2005/04/11) useNumber 属æ?を追åŠ?�—ますã?
356 * @og.rev 3.8.0.2 (2005/06/30) nullCheck 属æ?追åŠ?
357 * @og.rev 3.8.5.3 (2006/08/07) readerClass 属æ?の初期値をシスãƒ?ƒ リソースより取得しますã?
358 * @og.rev 4.3.7.0 (2009/06/01) stopZero属æ?追åŠ?
359 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??、DBTableModelが新規作æ?されたå?ç�?�§のみ行うã€?
360 * @og.rev 5.1.6.0 (2010/05/01) ãƒ??タの読み飛ã?し設å®?skipRowCount 属æ?追åŠ?
361 * @og.rev 5.2.1.0 (2010/10/01) 読取å?ç�?�§コードリソースのラベル変換を行うかどã�?�‹ useRenderer 属æ?追åŠ?
362 * @og.rev 5.5.7.2 (2012/10/09) è¤?•°シートをæŒ?®šできるようにシート番号を指定できるように、sheetNos属æ?追åŠ?
363 * @og.rev 5.5.8.2 (2012/11/09) 固定å?となるカラãƒ?��、アドレスのæŒ?®šã?ための、sheetConstKeys、sheetConstAdrs属æ?追åŠ?
364 * @og.rev 5.5.8.2 (2012/11/09) カラãƒ??に NULL が現れた時点で読み取りを中止する、nullBreakClm属æ?追åŠ?
365 */
366 @Override
367 protected void release2() {
368 super.release2();
369 separator = TableReader.TAB_SEPARATOR; // é ?›®区åˆ?‚Šæ–??
370 fileURL = HybsSystem.sys( "FILE_URL" );
371 filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイルå�?
372 encode = HybsSystem.sys( "FILE_ENCODE" ); // ファイルエンコーãƒ?‚£ング "JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS"
373 readerClass = HybsSystem.sys( "TABLE_READER_DEFAULT_CLASS" ); // 3.8.5.3 (2006/08/07)
374 maxRowCount = -1;
375 // displayMsg = "MSG0033"; // ã€?»¶検索しましたã€?
376 displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" );
377 notfoundMsg = "MSG0077"; // 対象ãƒ??タはありませんでしたã€?
378 executeCount = -1; // 検索/実行件数
379 modifyType = null;
380 command = CMD_NEW;
381 table = null;
382 tableId = HybsSystem.TBL_MDL_KEY ;
383 sheetName = null; // 3.5.4.2 (2003/12/15)
384 sheetNos = null ; // 5.5.7.2 (2012/10/09) è¤?•°シートをæŒ?®šできるようにシート番号を指定できるようにするã€?
385 sheetConstKeys = null ; // 5.5.8.2 (2012/11/09) 固定å?となるカラãƒ?��(CSV形å¼?
386 sheetConstAdrs = null ; // 5.5.8.2 (2012/11/09) 固定å?となるアドレス(è¡?åˆ?è¡?åˆ?・・・)
387 nullBreakClm = null; // 5.5.8.2 (2012/11/09) 取込み条件/Sheet BREAK条件
388 columns = null; // 3.5.4.5 (2004/01/23)
389 useNumber = true; // 3.7.0.5 (2005/04/11)
390 adjustColumns = null; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
391 checkColumns = null; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
392 nullCheck = null; // 3.8.0.2 (2005/06/30)
393 // allColumnCheck = false; // 3.6.0.2 (2004/10/04) 取り込み時チェãƒ?‚¯
394 stopZero = false; // 4.3.7.0 (2009/06/01) soptZero追åŠ?
395 isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
396 skipRowCount = 0; // 5.1.6.0 (2010/05/01) ãƒ??タの読み飛ã?し設å®?
397 useRenderer = HybsSystem.sysBool( "USE_TABLE_READER_RENDERER" ); // 5.2.1.0 (2010/10/01)
398 }
399
400 /**
401 * TableReader の実オブジェクトを生æ?して?ŒBufferedReader に書き込みますã?
402 *
403 * @og.rev 3.5.4.1 (2003/12/01) 引数の BufferedReader をã?InputStream に変更ã€?
404 * @og.rev 3.5.4.2 (2003/12/15) TableReader のサブクラス名変更ã€?
405 * @og.rev 3.5.4.2 (2003/12/15) EXCELのシート名を指定できるように変更ã€?
406 * @og.rev 3.5.4.3 (2004/01/05) 引数の InputStream をã? BufferedReader に戻すã?
407 * @og.rev 3.5.4.5 (2004/01/23) TableReader に、encode を渡すよã�?�«変更ã€?
408 * @og.rev 3.5.6.0 (2004/06/18) å�?¨®プラグイン関連付け設定を、シスãƒ?ƒ パラメータ に記述しますã?
409 * @og.rev 3.7.0.5 (2005/04/11) useNumber 属æ?を追åŠ?�—ますã?
410 * @og.rev 4.0.0.0 (2005/01/31) キーのæŒ?®šを、TableReader. から、TableReader_ に変更しますã?
411 * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager へ変更
412 * @og.rev 5.1.6.0 (2010/05/01) ãƒ??タの読み飛ã?し設å®?skipRowCount 属æ?追åŠ?
413 * @og.rev 5.2.1.0 (2010/10/01) 読取å?ç�?�§コードリソースのラベル変換を行うかどã�?�‹設å®?useRenderer 属æ?追åŠ?
414 * @og.rev 5.5.7.2 (2012/10/09) è¤?•°シートをæŒ?®šできるようにシート番号を指定できるように、sheetNos属æ?追åŠ?
415 * @og.rev 5.5.8.2 (2012/11/09) 固定å?となるカラãƒ?��、アドレスのæŒ?®šã?ための、sheetConstKeys、sheetConstAdrs属æ?追åŠ?
416 * @og.rev 5.5.8.2 (2012/11/09) カラãƒ??に NULL が現れた時点で読み取りを中止する、nullBreakClm属æ?追åŠ?
417 *
418 * @param out 出力するBufferedReaderオブジェクãƒ?
419 */
420 protected void create( final BufferedReader out ) {
421
422 String className = HybsSystem.sys( "TableReader_" + readerClass ) ; // 4.0.0 (2005/01/31)
423 TableReader reader = (TableReader)HybsSystem.newInstance( className ); // 3.5.5.3 (2004/04/09)
424
425 reader.setResourceManager( getResource() ); // 4.0.0 (2005/01/31)
426 reader.setSeparator( separator );
427 reader.setEncode( encode ); // 3.5.4.5 (2004/01/23)
428 reader.setColumns( columns ); // 3.5.4.5 (2004/01/23)
429 reader.setUseNumber( useNumber ); // 3.7.0.5 (2005/04/11)
430 reader.setMaxRowCount( maxRowCount );
431 reader.setSkipRowCount( skipRowCount ); // 5.1.6.0 (2010/05/01)
432 reader.setUseRenderer( useRenderer ); // 5.2.1.0 (2010/10/01)
433 reader.setDebug( isDebug() ); // 5.5.7.2 (2012/10/09) ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するかどã�?�‹を指å®?
434 if( reader.isExcel() ) { // 3.5.4.3 (2004/01/05)
435 reader.setFilename( HybsSystem.url2dir( StringUtil.urlAppend( fileURL,filename )));
436 reader.setSheetName( sheetName ); // 3.5.4.2 (2003/12/15)
437 reader.setSheetNos( sheetNos ); // 5.5.7.2 (2012/10/09) è¤?•°シートをæŒ?®šできるようにシート番号を指定できるようにするã€?
438 reader.setSheetConstData( sheetConstKeys,sheetConstAdrs ) ; // 5.5.8.2 (2012/11/09) 固定å?となるカラãƒ?��、アドレスのæŒ?®?
439 reader.setNullBreakClm( nullBreakClm ) ; // 5.5.8.2 (2012/11/09) 取込み条件/Sheet BREAK条件
440 reader.readDBTable();
441 }
442 else {
443 reader.readDBTable( out );
444 }
445 table = reader.getDBTableModel();
446 }
447
448 /**
449 * BufferedReader を取得しますã?
450 *
451 * ここでは、ä¸?ˆ¬çš?�ªファイル出力をè€??した BufferedReader を作æ?しますã?
452 *
453 * @og.rev 2.2.0.0 (2002/12/17) 中国èª?国際化)対å¿?エンコードã?取得方法変更
454 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得するã?
455 * @og.rev 3.5.4.1 (2003/12/01) 引数の BufferedReader をã?InputStream に変更ã€?
456 * @og.rev 3.5.4.3 (2004/01/05) 引数の InputStream をã? BufferedReader に戻すã?
457 * @og.rev 3.5.5.9 (2004/06/07) FileUtil.getBufferedReader を使用
458 *
459 * @return ファイル読取BufferedReaderオブジェクãƒ?
460 */
461 private BufferedReader getBufferedReader() {
462 if( filename == null ) {
463 String errMsg = "ファイル名がセãƒ?ƒˆされてã�?�¾せんã€?;
464 throw new HybsSystemException( errMsg );
465 }
466 String directory = HybsSystem.url2dir( fileURL );
467 File file = new File( StringUtil.urlAppend( directory,filename ) );
468
469 BufferedReader out = FileUtil.getBufferedReader( file,encode );
470
471 return out ;
472 }
473
474 /**
475 * adjustColumns にæŒ?®šされたカラãƒ?‚’再登録しますã?
476 * カラãƒ?‚ªブジェクトã?DBType属æ?に対応した変換を行い、å?設定しますã?
477 *
478 * @og.rev 3.6.0.2 (2004/10/04) 新規作æ?
479 *
480 * @param table DBTableModel 登録前ã?DBTableModel
481 *
482 * @return DBTableModel 登録後ã?DBTableModel
483 */
484 // private DBTableModel setAdjustTable( final DBTableModel table ) {
485 // if( adjustColumns != null && adjustColumns.length > 0 ) {
486 // int rowCnt = table.getRowCount();
487 // int[] clmNo = new int[adjustColumns.length];
488 // for( int i=0; i<clmNo.length; i++ ) {
489 // clmNo[i] = table.getColumnNo( adjustColumns[i] );
490 // }
491 //
492 // for( int row=0; row<rowCnt; row++ ) {
493 // String[] vals = table.getValues( row );
494 // for( int i=0; i<clmNo.length; i++ ) {
495 // int clm = clmNo[i];
496 // DBColumn dbClm = table.getDBColumn( clm );
497 // vals[clm] = dbClm.valueSet( vals[clm] );
498 // }
499 // table.setValues( vals,row );
500 // }
501 // }
502 // return table ;
503 // }
504
505 /**
506 * カラãƒ?–‡字å?(CSV形å¼?から、カラãƒ?•ª号配å?を作æ?しますã?
507 * 簡易メソãƒ?ƒ‰ですã?
508 * 引数がã?"*" の場合ã?、å?カラãƒ?‚’æŒ?®šしたことになりますã?
509 * null の場合ã?、サイズã�???の配å?を返しますã?
510 *
511 * @og.rev 4.0.0.0 (2007/05/25) 新規作æ?
512 *
513 * @param clms カラãƒ?–‡字å?(CSV形å¼?
514 * @param table DBTableModelオブジェクãƒ?
515 *
516 * @return カラãƒ?•ª号配å?(無ã�??合ã?ã€?•·さ0ã?配å?)
517 */
518 private int[] makeClmNos( final String clms,final DBTableModel table ) {
519 final int[] clmNo;
520
521 if( clms == null ) {
522 clmNo = new int[0];
523 }
524 else if( "*".equals( clms ) ) {
525 int size = table.getColumnCount();
526 clmNo = new int[size];
527 for( int i=0; i<size; i++ ) {
528 clmNo[i] = i;
529 }
530 }
531 else {
532 String[] clmStr = StringUtil.csv2Array( clms );
533 int size = clmStr.length;
534 clmNo = new int[size];
535 for( int i=0; i<size; i++ ) {
536 clmNo[i] = table.getColumnNo( clmStr[i] );
537 }
538 }
539
540 return clmNo;
541 }
542
543 /**
544 * checkColumns にæŒ?®šされたカラãƒ?‚’チェãƒ?‚¯しますã?
545 * カラãƒ?‚ªブジェクトã?DBType属æ?に対応したチェãƒ?‚¯を行いますã?
546 * チェãƒ?‚¯結果で、エラーが発生したå?合ã?、ErrorMessage オブジェクトを
547 * 返しますã?
548 * DBColumn#valueCheck( String ) の結果のErrorMessageをすべて append
549 * してã�?��ますã?
550 * useAdjust==true で、かつ、エラーがなã�??合ã?、adjustColumns 処ç�?µ�果ã‚?
551 * DBTableModel に反映させますã?
552 * debug=true で、エラー時ã?詳細なãƒ??タをå?力しますã?
553 *
554 * @og.rev 3.6.0.2 (2004/10/04) 新規作æ?
555 * @og.rev 3.8.0.2 (2005/06/30) nullチェãƒ?‚¯確èª?
556 * @og.rev 4.0.0.0 (2007/05/25) 処ç�??序書き換ã�?
557 *
558 * @param table DBTableModelオブジェクãƒ?
559 *
560 * @return カラãƒ?‚ー ??値 のエラーメãƒ?‚»ージオブジェクãƒ?
561 */
562 private ErrorMessage checkTableColumn( final DBTableModel table ) {
563 ErrorMessage errMsg = new ErrorMessage( "Check Columns Error!" );
564
565 int rowCnt = table.getRowCount();
566 int[] adjClmNo = makeClmNos( adjustColumns,table );
567 int[] chkClmNo = makeClmNos( checkColumns,table );
568 int[] nllclmNo = makeClmNos( nullCheck,table );
569
570 boolean useAdjust = (adjClmNo.length > 0) ;
571
572 for( int row=0; row<rowCnt; row++ ) {
573 String[] vals = table.getValues( row );
574 DBColumn[] dbClms = table.getDBColumns();
575 boolean isError = false; // 5.5.7.2 (2012/10/09) エラー時ã?フラグ。ループでクリアするã€?
576
577 // adjustColumns 処ç�?
578 for( int i=0; i<adjClmNo.length; i++ ) {
579 int no = adjClmNo[i];
580 vals[no] = dbClms[no].valueSet( vals[no] );
581 }
582
583 // checkColumns 処ç�?
584 for( int i=0; i<chkClmNo.length; i++ ) {
585 int no = chkClmNo[i];
586 // errMsg.append( row+1,dbClms[no].valueCheck( vals[no] ) );
587 ErrorMessage msg = dbClms[no].valueCheck( vals[no] );
588 if( msg.getKekka() > ErrorMessage.OK ) {
589 isError = true;
590 errMsg.append( row+1,dbClms[no].valueCheck( vals[no] ) );
591 }
592 }
593
594 // nullCheck 処ç�?
595 for( int i=0; i<nllclmNo.length; i++ ) {
596 int no = nllclmNo[i];
597 if( vals[no] == null || vals[no].length() == 0 ) {
598 isError = true;
599 String label = dbClms[no].getLabel();
600 // ERR0012 : æŒ?®šã?ãƒ??タがセãƒ?ƒˆされてã�?�¾せんã€?NULLエラー)。key={0}
601 errMsg.addMessage( row+1,ErrorMessage.NG,"ERR0012",label );
602 }
603 }
604
605 // 5.5.7.2 (2012/10/09) エラー時ã?ãƒ?ƒ�ãƒ?‚°出åŠ?
606 if( isDebug() && isError ) {
607 errMsg.addMessage( row+1,ErrorMessage.OK,"Debug Info",java.util.Arrays.toString(table.getValues(row) ) );
608 }
609
610 // adjustColumns 処ç�?µ�果を反æ˜?�•せますã?
611 // if( useAdjust && errMsg.isOK() ) { table.setValues( vals,row ); }
612 if( useAdjust && !isError ) { table.setValues( vals,row ); }
613 if( errMsg.size() > ERROR_ROW_COUNT ) { break; }
614 }
615
616 return errMsg;
617 }
618
619 // private ErrorMessage checkTableColumn( final DBTableModel table ) {
620 // ErrorMessage errMsg = new ErrorMessage( "Check Columns Error!" );
621 //
622 // if( allColumnCheck ) {
623 // checkColumns = table.getNames();
624 // }
625 //
626 // int rowCnt = table.getRowCount();
627 // if( checkColumns != null && checkColumns.length > 0 ) {
628 // int[] clmNo = new int[checkColumns.length];
629 // for( int i=0; i<clmNo.length; i++ ) {
630 // clmNo[i] = table.getColumnNo( checkColumns[i] );
631 // }
632 //
633 // for( int row=0; row<rowCnt; row++ ) {
634 // String[] vals = table.getValues( row );
635 // for( int i=0; i<clmNo.length; i++ ) {
636 // int clm = clmNo[i];
637 // DBColumn dbClm = table.getDBColumn( clm );
638 // errMsg.append( row+1,dbClm.valueCheck( vals[clm] ) );
639 // }
640 // }
641 // }
642 //
643 // // 3.8.0.2 (2005/06/30) nullチェãƒ?‚¯確èª?
644 // if( nullCheck != null && nullCheck.length > 0 ) {
645 // int[] clmNo = new int[nullCheck.length];
646 // for( int i=0; i<clmNo.length; i++ ) {
647 // clmNo[i] = table.getColumnNo( nullCheck[i] );
648 // }
649 //
650 // for( int row=0; row<rowCnt; row++ ) {
651 // String[] vals = table.getValues( row );
652 // for( int i=0; i<clmNo.length; i++ ) {
653 // int clm = clmNo[i];
654 // if( vals[clm] == null || vals[clm].length() == 0 ) {
655 // String label = getResource().getLabel( nullCheck[i] );
656 // // ERR0012 : æŒ?®šã?ãƒ??タがセãƒ?ƒˆされてã�?�¾せんã€?NULLエラー)。key={0}
657 // errMsg.addMessage( row+1,ErrorMessage.NG,"ERR0012",label );
658 // }
659 // }
660 // }
661 // }
662 //
663 // return errMsg;
664 // }
665
666 /**
667 * 【TAGã€?通常使ã�?�¾せん)sessionからæ‰?¾—すã‚?DBTableModelオブジェクトã? IDã€?
668 *
669 * @og.tag
670 * 表示処ç�?¾Œに??å†?ƒ¨ポインタを書き換えた)DBTableModelオブジェクトを
671 * 同じキーで、sessionに登録しますã?
672 * 初期値は、HybsSystem.TBL_MDL_KEY ですã?
673 *
674 * @param tableId sessionに登録する時ã? ID
675 */
676 public void setTableId( final String tableId ) {
677 this.tableId = nval( getRequestParameter( tableId ), this.tableId );
678 }
679
680 /**
681 * 【TAG】可変長ファイルを作æ?するときã?é ?›®区åˆ?‚Šæ–?—をセãƒ?ƒˆしますã?
682 *
683 * @og.tag 可変長ファイルを作æ?するときã?é ?›®区åˆ?‚Šæ–?—をセãƒ?ƒˆしますã?
684 *
685 * @param separator é ?›®区åˆ?‚Šæ–??
686 */
687 public void setSeparator( final String separator ) {
688 this.separator = nval( getRequestParameter( separator ),this.separator );
689 }
690
691 /**
692 * 【TAG】読み取りå…?ƒ‡ィレクトリ名をæŒ?®šしまã�?
693 * (初期値:FILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
694 *
695 * @og.tag
696 * こã?属æ?でæŒ?®šされるãƒ?‚£レクトリより、ファイルを読み取りますã?
697 * æŒ?®š方法ã?ã€??常の fileURL 属æ?と同様に、å?頭がã?'/' (UNIX) またã?ã€?¼’文字目がã?
698 * ":" (Windows)の場合ã?、指定ã?URLそã?ままのãƒ?‚£レクトリに、そã�?�§なã�??合ã?ã€?
699 * fileURL = "{@USER.ID}" とæŒ?®šすると、FILE_URL 属æ?でæŒ?®šã?フォルãƒ??下にã€?
700 * さらに、各個人ID別のフォルãƒ?‚’作æ?して、そこを操作しますã?
701 * (初期値:シスãƒ?ƒ 定数のFILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
702 *
703 * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソãƒ?ƒ‰の利用
704 * @og.rev 4.0.0.0 (2007/11/20) æŒ?®šされたãƒ?‚£レクトリ名ã?æœ?¾Œが"\"or"/"で終わってã�?�ªã�??合にã€?/"を付加するã€?
705 *
706 * @param url 読み取りå…?ƒ‡ィレクトリå�?
707 * @see org.opengion.hayabusa.common.SystemData#FILE_URL
708 */
709 public void setFileURL( final String url ) {
710 String furl = nval( getRequestParameter( url ),null );
711 if( furl != null ) {
712 char ch = furl.charAt( furl.length()-1 );
713 if( ch != '/' && ch != '\\' ) { furl = furl + "/"; }
714 fileURL = StringUtil.urlAppend( fileURL,furl );
715 }
716 }
717
718 /**
719 * 【TAG】ファイルを作æ?するときã?ファイル名をセãƒ?ƒˆしまã�?
720 * (初期値:FILE_FILENAME[={@og.value org.opengion.hayabusa.common.SystemData#FILE_FILENAME}])ã€?
721 *
722 * @og.tag ファイルを作æ?するときã?ファイル名をセãƒ?ƒˆしますã?
723 * (初期値:シスãƒ?ƒ 定数のFILE_FILENAME[={@og.value org.opengion.hayabusa.common.SystemData#FILE_FILENAME}])ã€?
724 *
725 * @param filename ファイルå�?
726 * @see org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK
727 */
728 public void setFilename( final String filename ) {
729 this.filename = nval( getRequestParameter( filename ),this.filename );
730 }
731
732 /**
733 * 【TAG】ファイルを作æ?するときã?ファイルエンコーãƒ?‚£ング名をセãƒ?ƒˆしまã�?
734 * (初期値:FILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])ã€?
735 *
736 * @og.tag
737 * Shift_JIS,MS932,Windows-31J,UTF-8,ISO-8859-1,UnicodeLittle
738 * (初期値:シスãƒ?ƒ 定数のFILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])ã€?
739 *
740 * @og.rev 2.2.0.0 (2002/12/17) 中国èª?国際化)対å¿?エンコードã?取得方法変更
741 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得するã?
742 *
743 * @param enc ファイルエンコーãƒ?‚£ングå�?
744 * @see <a href="http://www.iana.org/assignments/character-sets">IANA Charset Registry</a>
745 * @see org.opengion.hayabusa.common.SystemData#FILE_ENCODE
746 */
747 public void setEncode( final String enc ) {
748 encode = nval( getRequestParameter( enc ),encode );
749 }
750
751 /**
752 * 【TAG】実際に読み出すクラス名ã?略称(TableReader_**** の ****)をセãƒ?ƒˆしまã�?{@og.doc03Link readerClass 初期値:Default})ã€?
753 *
754 * @og.tag
755 * 実際に読み出すクラスå�?の略称)をセãƒ?ƒˆしますã?
756 * これは、org.opengion.hayabusa.io 以下ã? TableReader_**** クラスの **** ã‚?
757 * 与えますã?これらã?、TableReader インターフェースを継承したサブクラスですã?
758 * 属æ?クラス定義の {@link org.opengion.hayabusa.io.TableReader TableReader} を参照願いますã?
759 * {@og.doc03Link readerClass TableReader_**** クラス}
760 *
761 * @param readerClass クラスå�?の略称)
762 * @see org.opengion.hayabusa.io.TableReader TableReaderのサブクラス
763 */
764 public void setReaderClass( final String readerClass ) {
765 this.readerClass = nval( getRequestParameter( readerClass ),this.readerClass );
766 }
767
768 /**
769 * 【TAG】読取時のæœ?¤§取り込み件数をセãƒ?ƒˆしまã�?
770 * (初期値:DB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])ã€?
771 *
772 * @og.tag
773 * DBTableModelのãƒ??タとして登録するæœ?¤§件数をこの値に設定しますã?
774 * サーバã?のメモリè³?º�と応答時間ã?確保ã?為ですã?
775 * 0 をセãƒ?ƒˆすると、無制é™?Integer.MAX_VALUE)になりますã?
776 * (初期値:ユーザー定数のDB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])ã€?
777 *
778 * @og.rev 5.5.8.5 (2012/11/27) 0を無制限として処ç�?�—ますã?
779 *
780 * @param count 読取時のæœ?¤§取り込み件数
781 * @see org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT
782 */
783 public void setMaxRowCount( final String count ) {
784 maxRowCount = nval( getRequestParameter( count ),maxRowCount );
785 if( maxRowCount == 0 ) { maxRowCount = Integer.MAX_VALUE ; } // 5.5.8.5 (2012/11/27)
786 }
787
788 /**
789 * 【TAG】コマンãƒ?NEW,RENEW)をセãƒ?ƒˆしまã�?初期値:NEW)ã€?
790 *
791 * @og.tag
792 * コマンドã?,HTMLから(get/post)æŒ?®šされますã?で,CMD_xxx で設定される
793 * フィールド定数値のã�?�¥れかをã?æŒ?®šできますã?
794 * 何も設定されなã�??またã?、null の場合ã?ã€?NEW" がå?期å?にセãƒ?ƒˆされますã?
795 *
796 * @param cmd コマンãƒ?public static final 宣è¨?�•れてã�?‚‹æ–?—å?)
797 * @see <a href="{@docRoot}/constant-values.html#org.opengion.hayabusa.taglib.ReadTableTag.CMD_NEW">コマンド定数</a>
798 */
799 public void setCommand( final String cmd ) {
800 String cmd2 = getRequestParameter( cmd );
801 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); }
802 }
803
804 /**
805 * 【TAG】query の結果を画面上に表示するメãƒ?‚»ージIDを指定しまã�?初期値:MSG0033[ã€?»¶検索しました])ã€?
806 *
807 * @og.tag
808 * ここでは、検索結果の件数ã‚?™»録された件数をまずå?力しã€?
809 * そã?次に、ここでæŒ?®šしたメãƒ?‚»ージをリソースから取得して
810 * 表示しますã?
811 * 表示させたくなã�??合ã?, displayMsg = "" をセãƒ?ƒˆしてくださいã€?
812 * 初期値は、検索件数を表示しますã?
813 *
814 * @param id ãƒ?‚£スプレイに表示させるメãƒ?‚»ージ ID
815 */
816 public void setDisplayMsg( final String id ) {
817 if( id != null ) { displayMsg = id; }
818 }
819
820 /**
821 * 【TAG】検索結果がゼロ件の場合に表示するメãƒ?‚»ージリソースIDを指定しまã�?初期値:MSG0077[対象ãƒ??タはありませんでした])ã€?
822 *
823 * @og.tag
824 * ここでは、検索結果がゼロ件の場合ã?み、特別なメãƒ?‚»ージを表示させますã?
825 * 従来は、displayMsg と兼用で、ã?0ã€?»¶検索しました』とã�?�†表示でしたがã?
826 * displayMsg の初期表示は、OFF になりましたので、ゼロ件の場合ã?み別に表示させますã?
827 * 表示させたくなã�??合ã?, notfoundMsg = "" をセãƒ?ƒˆしてくださいã€?
828 * 初期値は、MSG0077[対象ãƒ??タはありませんでした]ですã?
829 *
830 * @param id ãƒ?‚£スプレイに表示させるメãƒ?‚»ージ ID
831 */
832 public void setNotfoundMsg( final String id ) {
833 String ids = getRequestParameter( id );
834 if( ids != null ) { notfoundMsg = ids; }
835 }
836
837 /**
838 * 【TAG】ファイル取り込み時ã? モãƒ?‚£ファイタイãƒ?A(追åŠ?,C(更新),D(削除))を指定しますã?
839 *
840 * @og.tag
841 * ファイル読み込み時に、そのãƒ??タをA(追åŠ?、C(更新)、D(削除)の
842 * モãƒ?‚£ファイタイプをつけた状態にしますã?
843 * そã?状態で、そのまま、update する事が可能になりますã?
844 *
845 * @param type ファイル取り込み時ã? モãƒ?‚£ファイタイãƒ?A,C,D属æ?)
846 */
847 public void setModifyType( final String type ) {
848 modifyType = getRequestParameter( type );
849 }
850
851 /**
852 * 【TAG】EXCELファイルを読み込ã‚?�¨きã?シート名を設定しまã�?初期値:æŒ?®šなã�?ã€?
853 *
854 * @og.tag
855 * EXCELファイルを読み込ã‚?™‚に、シート名を指定しますã?これにより、è¤?•°の形式ã?
856 * 異なるデータをé?次読み込ã‚?�“とã‚??シートをæŒ?®šして読み取ることが可能になりますã?
857 * sheetNos と sheetName が同時にæŒ?®šされた場合ã?、sheetNos が優先されますã?エラーにはならなã�??でご注意くã�?�•ã�??
858 * <del>初期値は、第ä¸?‚·ートですã?</del>
859 * 初期値は、指定なしですã?
860 *
861 * @og.rev 3.5.4.2 (2003/12/15) 新規追åŠ?
862 *
863 * @param sheet EXCELファイルのシート名
864 * @see #setSheetNos( String )
865 */
866 public void setSheetName( final String sheet ) {
867 sheetName = nval( getRequestParameter( sheet ),sheetName );
868 }
869
870 /**
871 * 【TAG】EXCELファイルを読み込ã‚?�¨きã?シート番号を指定しまã�?初期値:0)ã€?
872 *
873 * @og.tag
874 * EXCEL読み込み時にè¤?•°シートをマã?ジして取り込みますã?
875 * シート番号はã€? から始まる数字で表しますã?
876 * ヘッãƒ??は、最初ã?シートã?カラãƒ?½�置に合わせますã??ˆã?ãƒ?ƒ€ータイトルの自動認識ã?ありません。ï¼?
877 * よって、指定するシートã?、すべて同ä¸?ƒ¬イアウトでなã�?�¨取り込み時にカラãƒ??ずれが発生しますã?
878 *
879 * シート番号のæŒ?®šã?、カンマ区åˆ?‚Šで、è¤?•°æŒ?®šできますã?またã?N-M の様にハイフンで繋げることでã€?
880 * N 番から、M 番のシートç¯?›²をä¸?‹¬æŒ?®š可能ですã?またã?"*" による、å?シート指定が可能ですã?
881 * これらã?çµ?�¿合わせも可能ですã???0,1,3,5-8,10-* ??
882 * ただしã?"*" に関しては例外的に、ä¸?–‡字だけで、すべてのシートを表すか、N-* を最後にæŒ?®šするかの
883 * どちらかですã?途中にはã€?*" は、現れませんã€?
884 * シート番号はã€?‡�è¤?1,1,2,2)ã€??転(3,2,1) でのæŒ?®šが可能ですã?これは、そのæŒ?®šé?で、読み込まれますã?
885 * sheetNos と sheetName が同時にæŒ?®šされた場合ã?、sheetNos が優先されますã?エラーにはならなã�??でご注意くã�?�•ã�??
886 *
887 * 初期値はã€??ˆ第ä¸?‚·ートï¼?ですã?
888 *
889 * @og.rev 5.5.7.2 (2012/10/09) 新規追åŠ?
890 *
891 * @param sheet EXCELファイルのシート番号??から始まるï¼?
892 * @see #setSheetName( String )
893 */
894 public void setSheetNos( final String sheet ) {
895 sheetNos = nval( getRequestParameter( sheet ),sheetNos );
896 if( sheetNos != null && sheetNos.length() > 0 ) {
897 boolean errFlag = false;
898 for( int i=0; i<sheetNos.length(); i++ ) {
899 char ch = sheetNos.charAt(i);
900 if( ch == '-' || ch == ',' ) { continue; }
901 if( ch == '*' && ( i==0 || i==sheetNos.length()-1 ) ) { continue; }
902 if( ch < '0' || ch > '9' ) { errFlag = true; break; }
903 }
904 if( errFlag ) {
905 String errMsg = "sheetNos のæŒ?®šを見直してください。sheetNos=[" + sheetNos + "]";
906 throw new HybsSystemException( errMsg );
907 }
908 }
909 }
910
911 /**
912 * 【TAG】EXCELファイルを読み込ã‚?�¨きã?シート単位ã?固定å?を設定するためã?カラãƒ?��を指定しますã?
913 *
914 * @og.tag
915 * カラãƒ?��は、カンマ区åˆ?‚ŠでæŒ?®šしますã?
916 * これにより、シートã?ä¸?�‹æ‰?�«書かれてã�?‚‹æƒ??をã?DBTableModel のカラãƒ?�«固定å?として
917 * 設定することができますã?
918 * 例として、DB定義書で、テーブル名をシートã?全レコードに設定したい場合などに使ã�?�¾すã?
919 * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
920 *
921 * @og.rev 5.5.8.2 (2012/11/09) 新規追åŠ?
922 *
923 * @param constKeys 固定å?となるカラãƒ?��(CSV形å¼?
924 * @see #setSheetConstAdrs( String )
925 */
926 public void setSheetConstKeys( final String constKeys ) {
927 sheetConstKeys = nval( getRequestParameter( constKeys ),null );
928 }
929
930 /**
931 * 【TAG】EXCELファイルを読み込ã‚?�¨きã?シート単位ã?固定å?を設定するためã?カラãƒ?��に対応するアドレスを指定しますã?
932 *
933 * @og.tag
934 * アドレスは、EXCEL上ã?è¡?列をカンマ区åˆ?‚ŠでæŒ?®šしますã?
935 * 行å?は、EXCELオブジェクトに準拠するためã€?¼�から始まる整数ですã?
936 * これにより、シートã?ä¸?�‹æ‰?�«書かれてã�?‚‹æƒ??をã?DBTableModel のカラãƒ?�«固定å?として
937 * 設定することができますã?
938 * 例として、DB定義書で、テーブル名をシートã?全レコードに設定したい場合などに使ã�?�¾すã?
939 * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
940 *
941 * @og.rev 5.5.8.2 (2012/11/09) 新規追åŠ?
942 *
943 * @param constAdrs 固定å?となるアドレス(è¡?åˆ?è¡?åˆ?・・・)
944 * @see #setSheetConstKeys( String )
945 */
946 public void setSheetConstAdrs( final String constAdrs ) {
947 sheetConstAdrs = nval( getRequestParameter( constAdrs ),null );
948 }
949
950 /**
951 * 【TAG】ここにæŒ?®šされたカラãƒ??に NULL が現れた時点で読み取りを中止しますã?
952 *
953 * @og.tag
954 * これは、指定ã?カラãƒ??å¿??とã�?�†事を条件に、そのレコードだけを読み取る処ç�?‚’行いますã?
955 * è¤?•°Sheetの場合ã?、次のSheetを読みますã?
956 * 現時点では、Excel の場合ã?み有効ですã?
957 *
958 * @og.rev 5.5.8.2 (2012/11/09) 新規追åŠ?
959 *
960 * @param clm カラãƒ??
961 */
962 public void setNullBreakClm( final String clm ) {
963 nullBreakClm = nval( getRequestParameter( clm ),null );
964 }
965
966 /**
967 * 【TAG】読み取りå…?ƒ•ァイルのカラãƒ??をã?外部(タグ)よりæŒ?®šしますã?
968 *
969 * @og.tag
970 * 読み取りå…?ƒ•ァイルのカラãƒ??をã?外部(タグ)よりæŒ?®šしますã?
971 * ファイルに記述されã�?#NAME より優先して使用されますã?
972 * これは、å?ファイルのカラãƒ?‚’é ?•ªにæŒ?®šã?カラãƒ?��に割り当てる機è?で
973 * ファイルの特定ã?カラãƒ??を抜きå?して取り込ã‚?©Ÿè?ではありませんã€?
974 *
975 * @og.rev 3.5.4.5 (2004/01/23) 新規作æ?
976 *
977 * @param clms 読み取りå…?ƒ•ァイルのカラãƒ??(カンマ区åˆ?‚Šæ–??
978 */
979 public void setColumns( final String clms ) {
980 columns = nval( getRequestParameter( clms ),columns );
981 }
982
983 /**
984 * 【TAG】読み取りå…?ƒ•ァイルの整合æ?チェãƒ?‚¯を行うカラãƒ??をカンマ指定しますã?
985 *
986 * @og.tag
987 * カラãƒ?‚ªブジェクトã?DBType属æ?に対応したチェãƒ?‚¯を行いますã?
988 * æŒ?®šã?カラãƒ?��をカンマ区åˆ?‚Š(CSV)でè¤?•°æŒ?®šできますã?
989 * 全てのカラãƒ??チェãƒ?‚¯を行う場合ã?、allColumnCheck = "true" ã‚?
990 * æŒ?®šして下さã�??
991 * åˆ?§£方法ã?ã€??常のパラメータ取得後に、CSVåˆ?§£しますã?
992 *
993 * @og.rev 3.6.0.2 (2004/10/04) 新規追åŠ?取り込み時チェãƒ?‚¯用
994 * @og.rev 3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSVåˆ?§£に戻しますã?
995 *
996 * @param clms 整合æ?チェãƒ?‚¯を行うカラãƒ??(カンマ区åˆ?‚Šæ–??
997 */
998 public void setCheckColumns( final String clms ) {
999 checkColumns = nval( getRequestParameter( clms ),checkColumns );
1000
1001 // checkColumns = StringUtil.csv2Array( getRequestParameter( clms ) );
1002 // if( checkColumns.length == 0 ) { checkColumns = null; }
1003 }
1004
1005 /**
1006 * 【TAG】読み取りå…?ƒ•ァイルのãƒ??タ変換を行うカラãƒ??をカンマ指定しますã?
1007 *
1008 * @og.tag
1009 * カラãƒ?‚ªブジェクトã?DBType属æ?に対応したデータ変換を行いますã?
1010 * æŒ?®šã?カラãƒ?��をカンマ区åˆ?‚Š(CSV)でè¤?•°æŒ?®šできますã?
1011 * åˆ?§£方法ã?ã€??常のパラメータ取得後に、CSVåˆ?§£しますã?
1012 *
1013 * @og.rev 3.6.0.2 (2004/10/04) 新規追åŠ?取り込み時データ変換
1014 * @og.rev 3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSVåˆ?§£に戻しますã?
1015 *
1016 * @param clms ãƒ??タ変換を行うカラãƒ??(カンマ区åˆ?‚Šæ–??
1017 */
1018 public void setAdjustColumns( final String clms ) {
1019 adjustColumns = nval( getRequestParameter( clms ),adjustColumns );
1020
1021 // adjustColumns = StringUtil.csv2Array( getRequestParameter( clms ) );
1022 // if( adjustColumns.length == 0 ) { adjustColumns = null; }
1023 }
1024
1025 /**
1026 * 【TAG】å?カラãƒ?ƒ�ェãƒ?‚¯を行うかどã�?�‹を設定しまã�?初期値:false)ã€?
1027 *
1028 * @og.tag
1029 * カラãƒ??整合æ?チェãƒ?‚¯を行う場合ã?カラãƒ?��を指定せずã?全カラãƒ??
1030 * チェãƒ?‚¯を実施することがå?来ますã?(allColumnCheck="true")
1031 * 初期値は、行わなã�?false)ですã?
1032 * 全カラãƒ?ƒ�ェãƒ?‚¯を行う場合ã?、checkColumns のæŒ?®šã?、無視されますã?
1033 *
1034 * @og.rev 3.6.0.2 (2004/10/04) 新規追åŠ?取り込み時å?チェãƒ?‚¯
1035 *
1036 * @param flag 全チェãƒ?‚¯を行うかどã�?�‹(true:行う/false:行わなã�?
1037 * @see #setCheckColumns( String )
1038 */
1039 // public void setAllColumnCheck( final String flag ) {
1040 // allColumnCheck = nval( getRequestParameter( flag ),allColumnCheck );
1041 // }
1042
1043 /**
1044 * 【TAG】NULL チェãƒ?‚¯すべきカラãƒ??をカンマ区åˆ?‚Š(CVS形å¼?でæŒ?®šしますã?
1045 *
1046 * @og.tag nullCheck="AAA,BBB,CCC,DDD"
1047 * <del>先に配å?にåˆ?§£してからリクエスト変数の値を取得するよã�?�«しますã?
1048 * こうする事で、リクエストにカンマ区åˆ?‚Šの値を設定できるようになりますã?</del>
1049 * åˆ?§£方法ã?ã€??常のパラメータ取得後に、CSVåˆ?§£しますã?
1050 *
1051 * @og.rev 3.8.0.2 (2005/06/30) 新規追åŠ?
1052 * @og.rev 3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSVåˆ?§£に戻しますã?
1053 *
1054 * @param clms カラãƒ??(CVS形å¼?
1055 */
1056 public void setNullCheck( final String clms ) {
1057 nullCheck = nval( getRequestParameter( clms ),nullCheck );
1058
1059 // nullCheck = StringUtil.csv2Array( getRequestParameter( clms ) );
1060 // if( nullCheck.length == 0 ) { nullCheck = null; }
1061 }
1062
1063 /**
1064 * 【TAG】行番号æƒ??をã?使用してã�?‚‹/してã�?�ªい[true/false]を指定しまã�?初期値:true)ã€?
1065 *
1066 * @og.tag
1067 * 通常のフォーマットでは、各行ã?先é?に行番号がå?力されてã�?�¾すã?
1068 * 読み取り時にã€?NAME 属æ?を使用する場合ã?、この行番号を無視してã�?�¾すã?
1069 * #NAME 属æ?を使用せず、columns 属æ?でカラãƒ?��を指定するå?å�?他シスãƒ?ƒ の
1070 * 出力ファイルを読み取るケースç?では、行番号も存在しなã�?‚±ースがありã?
1071 * そã?様な場合に、useNumber="false" を指定すれã?、データのæœ??から読み取り始めますã?
1072 * こã?場合ã?出力データのカラãƒ??並びé ?�Œ変更されたå?合ã?columns 属æ?ã‚?
1073 * æŒ?®šしなおすå¿?¦�がありますã?で、できるã�?�‘ã€?NAME 属æ?を使用するように
1074 * してくださいã€?
1075 * なおã?EXCEL 入力には、この設定ã?適用されませんã€?暫定対å¿?
1076 * 初期値は、true(使用する) ですã?
1077 *
1078 * @og.rev 3.7.0.5 (2005/04/11) 新規追åŠ?
1079 *
1080 * @param useNo 行番号æƒ?? [true:使用する/false:使用しない]
1081 */
1082 public void setUseNumber( final String useNo ) {
1083 useNumber = nval( getRequestParameter( useNo ),useNumber );
1084 }
1085
1086 /**
1087 * 【TAG】読込件数が0件のときå?ç�?‚’続行するかどã�?�‹[true/false]を指定しまã�?初期値:false[続行する])ã€?
1088 *
1089 * @og.tag
1090 * 初期値は、false(続行すã‚?ですã?
1091 *
1092 * @og.rev 4.3.7.0 (2009/06/01) 新規追åŠ?
1093 *
1094 * @param cmd 読込件数が0件のときã?処ç�?‚’ [true:中止する/false:続行する]
1095 */
1096 public void setStopZero( final String cmd ) {
1097 stopZero = nval( getRequestParameter( cmd ), stopZero );
1098 }
1099
1100 /**
1101 * 【TAGã€?通常使ã�?�¾せん)タグで処ç�?�•れる処ç�?�Œメインとなるトランザクション処ç�?�‹どã�?�‹を指定しまã�?初期値:false)ã€?
1102 *
1103 * @og.tag
1104 * こã?値は、ファイルãƒ?‚¦ンロードå?ç�?�«影響しますã?こã?値がtrueにæŒ?®šされた時にcommitされたDBTableModelã�?
1105 * ファイルãƒ?‚¦ンロードã?対象の表になりますã?
1106 *
1107 * こã?パラメーターはã€??常、各タグにより実è£?�•れã?ユーザーが指定するå¿?¦�ã?ありませんã€?
1108 * ä½?�—ã€?つのJSPå†?�§DBTableModelがè¤?•°生æ?されるå?合に、前に処ç�?�—たDBTableModelにつã�?�¦ファイルãƒ?‚¦ンロードをさせたい
1109 * 場合ã?、後ろでDBTableModelを生成するタグで、æ?示çš?�«こã?値をfalseにæŒ?®šすることで、ファイルãƒ?‚¦ンロードå?ç�??対象から
1110 * 除外することができますã?
1111 *
1112 * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
1113 *
1114 * @param flag メイントランザクションかどã�?�‹
1115 */
1116 public void setMainTrans( final String flag ) {
1117 isMainTrans = nval( getRequestParameter( flag ),isMainTrans );
1118 }
1119
1120 /**
1121 * 【TAGã€?通常は使ã�?�¾せん)ãƒ??タの読み飛ã?し件数を設定しますã?
1122 *
1123 * @og.tag
1124 * TAB区åˆ?‚Šãƒ?‚ストやEXCEL等ã?ãƒ??タの読み始めの初期値を指定しますã?
1125 * ファイルの先é?行がã€?¼�行としてカウントしますã?で、設定å?は、読み飛ã?ã�?
1126 * 件数になりますã?(?‘とæŒ?®šするとã€?¼‘件読み飛ã?しã??’行目から読み込みますã?)
1127 * 読み飛ã?しã?、コメント行などは、無視しますã?で、実際の行数åˆ?ªみ飛ã?しますã?
1128 * ?ƒNAME属æ?ã‚??columns 属æ?は、有効ですã?
1129 *
1130 * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
1131 *
1132 * @param count 読み始めの初期値
1133 */
1134 public void setSkipRowCount( final String count ) {
1135 skipRowCount = nval( getRequestParameter( count ),skipRowCount );
1136 }
1137
1138 /**
1139 * 【TAG】読取å?ç�?�§ラベルをコードリソースにé€?¤‰換を行うかどã�?�‹を指定しまã�?
1140 * (初期値:USE_TABLE_READER_RENDERER[={@og.value org.opengion.hayabusa.common.SystemData#USE_TABLE_READER_RENDERER}])ã€?
1141 *
1142 * @og.tag
1143 * TableWriter_Renderer 系のクラスで出力したå?合ã?、コードリソースがラベルで出力されますã?
1144 * そã?ファイルを読み取ると、当然、エラーになりますã?
1145 * ここでは、コードリソースのカラãƒ?�«対して、ラベルからコードを求めるé?変換を行うことでã€?
1146 * Renderer 系で出力したファイルを取り込ã‚?�“とができるようにしますã?
1147 *
1148 * ここでは、TableWriter 系と同様に、TableReader_Renderer 系のクラスを作るのではなくã?
1149 * 属æ?値のフラグで、制御しますã?
1150 * å°?�¥çš?�«は、TableWriter 系もå»?¢して、同様ã?フラグで制御するように変更する予定ですã?
1151 * (初期値:シスãƒ?ƒ 定数のUSE_TABLE_READER_RENDERER[={@og.value org.opengion.hayabusa.common.SystemData#USE_TABLE_READER_RENDERER}])ã€?
1152 *
1153 * @og.rev 5.2.1.0 (2010/10/01) 新規作æ?
1154 *
1155 * @param flag コードリソースのラベルé€?¤‰換を行うかどã�?�‹
1156 * @see org.opengion.hayabusa.common.SystemData#USE_TABLE_READER_RENDERER
1157 */
1158 public void setUseRenderer( final String flag ) {
1159 useRenderer = nval( getRequestParameter( flag ),useRenderer );
1160 }
1161
1162 /**
1163 * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
1164 *
1165 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
1166 * @serialData
1167 *
1168 * @param strm ObjectOutputStreamオブジェクãƒ?
1169 */
1170 private void writeObject( final ObjectOutputStream strm ) throws IOException {
1171 strm.defaultWriteObject();
1172 }
1173
1174 /**
1175 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
1176 *
1177 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
1178 *
1179 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
1180 * @serialData
1181 *
1182 * @param strm ObjectInputStreamオブジェクãƒ?
1183 * @see #release2()
1184 */
1185 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
1186 strm.defaultReadObject();
1187 }
1188
1189 /**
1190 * こã?オブジェクトã?æ–?—å?表現を返しますã?
1191 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
1192 *
1193 * @return こã?クラスのæ–?—å?表現
1194 */
1195 @Override
1196 public String toString() {
1197 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
1198 .println( "VERSION" ,VERSION )
1199 .println( "separator" ,separator )
1200 .println( "fileURL" ,fileURL )
1201 .println( "filename" ,filename )
1202 .println( "encode" ,encode )
1203 .println( "readerClass" ,readerClass )
1204 .println( "maxRowCount" ,maxRowCount )
1205 .println( "displayMsg" ,displayMsg )
1206 .println( "executeCount" ,executeCount )
1207 .println( "modifyType" ,modifyType )
1208 .println( "checkColumns" ,checkColumns )
1209 .println( "adjustColumns" ,adjustColumns )
1210 .println( "nullCheck" ,nullCheck )
1211 // .println( "allColumnCheck" ,allColumnCheck )
1212 .println( "command" ,command )
1213 .println( "tableId" ,tableId )
1214 .println( "sheetName" ,sheetName )
1215 .println( "sheetNos" ,sheetNos ) // 5.5.7.2 (2012/10/09)
1216 .println( "columns" ,columns )
1217 .println( "useNumber" ,useNumber )
1218 .println( "Other..." ,getAttributes().getAttribute() )
1219 .fixForm().toString() ;
1220 }
1221 }