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.io;
017    
018    import java.io.BufferedReader;
019    import java.util.Map;
020    
021    import org.opengion.fukurou.util.CSVTokenizer;
022    import org.opengion.fukurou.util.StringUtil;
023    import org.opengion.hayabusa.common.HybsSystem;
024    import org.opengion.hayabusa.db.DBColumn;
025    import org.opengion.hayabusa.db.DBTableModel;
026    import org.opengion.hayabusa.resource.ResourceManager;
027    import org.opengion.hayabusa.resource.CodeData;
028    
029    /**
030     * æŒ?®šã?区åˆ?‚Š記号(初期値:タブ区åˆ?‚Š)ファイルの読み取りクラスですã?
031     *
032     * 名前?Œデータの入力部のみオーバã?ライドすれã??Œ各種入力フォーマットに合わせた
033     * サブクラスを実現する事が可能ですã?
034     *
035     * @og.group ファイル入åŠ?
036     *
037     * @version  4.0
038     * @author   Kazuhiko Hasegawa
039     * @since    JDK5.0,
040     */
041    public abstract class AbstractTableReader implements TableReader {
042            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
043            private static final String VERSION = "5.5.8.5 (2012/11/27)" ;
044    
045            private String  separator       = TAB_SEPARATOR;                // é ?›®区åˆ?‚Šæ–?­?
046            private ResourceManager resource = null;                        // 4.0.0 (2005/01/31)
047            private int             maxRowCount     = HybsSystem.sysInt( "DB_MAX_ROW_COUNT" ) ;
048    
049            protected DBTableModel  table           = null;
050            protected DBColumn[]    dbColumn        = null;
051    
052            // 3.5.4.5 (2004/01/23) カラãƒ?��の外部æŒ?®šを出来る様にするã€?
053    //      private String    columns       = null;  // 外部æŒ?®šã?カラãƒ?��
054            protected String  columns       = null;  // 外部æŒ?®šã?カラãƒ?�� ( 4.3.4.7 (2009/01/22) protectedに変更 )
055            private String    encode        = null;
056            private boolean   useNumber     = true;                 // 3.7.0.5 (2005/04/11)
057    
058            private int               skipRowCount  = 0;            // 5.1.6.0 (2010/05/01) ãƒ??タの読み飛ã?し設å®?
059            private boolean   useRenderer   = false;        // 5.2.1.0 (2010/10/01)
060    
061            // 5.2.1.0 (2010/10/01) コードリソース毎ã?ラベルé€?¼•きマッãƒ?
062            private Map<?,?>[] maps = null;                           // 5.5.1.7 (2012/04/16) ワイルドカードをæŒ?®?
063    
064            private boolean   useDebug      = false;                // 5.5.7.2 (2012/10/09) ãƒ?ƒ�ãƒ?‚°æƒ??の出力するかどã�?�‹
065    
066            /**
067             * DBTableModel から å�?½¢式ã?ãƒ??タを作æ?して,BufferedReader より読み取りますã?
068             * コメンãƒ?空行を除きã?æœ??の行ã?、å¿?�šé ?›®名がå¿?¦�ですã?
069             * それ以降ã?、コメンãƒ?空行を除きã?ãƒ??タとして読み込んでã�?��ますã?
070             * こã?メソãƒ?ƒ‰は、EXCEL 読み込み時に使用しますã?
071             *
072             * @see #isExcel()
073             */
074            abstract public void readDBTable();
075    
076            /**
077             * DBTableModel から å�?½¢式ã?ãƒ??タを作æ?して,BufferedReader より読み取りますã?
078             * コメンãƒ?空行を除きã?æœ??の行ã?、å¿?�šé ?›®名がå¿?¦�ですã?
079             * それ以降ã?、コメンãƒ?空行を除きã?ãƒ??タとして読み込んでã�?��ますã?
080             *
081             * @param   reader BufferedReaderオブジェクãƒ?
082             */
083            abstract public void readDBTable( final BufferedReader reader );
084    
085            /**
086             * リソースマネージャーをセãƒ?ƒˆしますã?
087             * これは、è¨?ª?ロケール)に応じã�?DBColumn をあらかじめ設定しておく為に
088             * å¿?¦�ですã?
089             * リソースマネージャーが設定されてã�?�ªã�??またã?、所定ã?キーの DBColumn ã�?
090             * リソースに存在しなã�??合ã?、å?部で DBColumn オブジェクトを作æ?しますã?
091             *
092             * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager へ変更
093             *
094             * @param  resource リソースマネージャー
095             */
096            public void setResourceManager( final ResourceManager resource ) {
097                    this.resource = resource;
098            }
099    
100            /**
101             * DBColumn オブジェクトをDBTable に設定しますã?
102             *
103             * @og.rev 3.5.4.2 (2003/12/15) private ã‚?protected に変更ã€?
104             * @og.rev 3.5.4.5 (2004/01/23) DBColumn 配å?に値をセãƒ?ƒˆしますã?
105             * @og.rev 5.2.1.0 (2010/10/01) useRenderer対å¿?コードリソース毎ã?ラベルé€?¼•き)
106             *
107             * @param names カラãƒ?��配å?
108             */
109            protected void setTableDBColumn( final String[] names ) {
110                    dbColumn = new DBColumn[names.length] ;  // 3.5.4.5 追åŠ?
111                    for( int i=0; i<names.length; i++ ) {
112                            DBColumn clm = resource.makeDBColumn( names[i] );
113                            table.setDBColumn( i,clm );
114                            dbColumn[i] = clm;                // 3.5.4.5 追åŠ?
115                    }
116    
117                    if( useRenderer ) {
118                            maps = new Map<?,?>[names.length];                // 5.5.1.7 (2012/04/16) ワイルドカードをæŒ?®?
119                            for( int i=0; i<names.length; i++ ) {
120                                    CodeData cd = dbColumn[i].getCodeData();
121                                    if( cd != null ) { maps[i] = cd.makeLabelMap(); }
122                                    else             { maps[i] = null; }
123                            }
124                    }
125            }
126    
127            /**
128             * DBTableModelオブジェクトにã€?¼‘行å?のãƒ??タを追åŠ?�—ますã?
129             * これ自体ã?、メソãƒ?ƒ‰の共通化による 拡張をしã‚?�™くするために用意しましたã€?
130             *
131             * @og.rev 5.2.1.0 (2010/10/01) 新規作æ?
132             *
133             * @param values ?‘行å?のãƒ??タ配å?
134             */
135            protected void setTableColumnValues( final String[] values ) {
136                    if( useRenderer ) {
137                            int clmSize = values.length;
138                            for( int clmNo=0; clmNo<clmSize; clmNo++ ) {
139                                    if( maps[clmNo] != null ) {
140                                            String val = values[clmNo];
141                                            if( val == null ) { val = ""; }
142                                            else {
143                                                    String tmp = (String)maps[clmNo].get( val );
144                                                    if( tmp != null ) { values[clmNo] = tmp; }
145                                                    else {
146                                                            int sp = val.indexOf( ':' );
147                                                            if( sp >= 0 ) {
148                                                                    values[clmNo] = val.substring( 0,sp );
149                                                            }
150                                                    }
151                                            }
152                                    }
153                            }
154                    }
155    
156                    table.addColumnValues( values );
157            }
158    
159            /**
160             * ?‘行ã?ãƒ??タã‚?ãƒ??ブルモãƒ?ƒ«にセãƒ?ƒˆするようにåˆ?‰²しますã?
161             *
162             * なおã?読込みは?ŒNAMEé ?›®åˆ?‚’読み込みますã?ãƒ??タ件数が少なã�??合ã?ã€?
163             * "" をセãƒ?ƒˆしておきますã?
164             * ãƒ??タのåˆ?‰²は、separatoræ–?­—を使用しますã?
165             *
166             * @og.rev 3.3.3.1 (2003/07/18) ファイルリーãƒ?ライト時に後ろスペã?スの除去を行いますã?
167             * @og.rev 3.7.0.5 (2005/04/11) useNumber 属æ?をè?慮しますã?
168             *
169             * @param       data    ?‘行ã?ãƒ??タ
170             * @param       clmSize カラãƒ?•°
171             *
172             * @return      åˆ?‰²された文字å?配å?
173             */
174            protected String[] readData( final String data,final int clmSize ) {
175                    String[] rtnData = new String[ clmSize ];
176                    CSVTokenizer token = new CSVTokenizer( data,separator.charAt(0) );
177                    // è¶?‚¤レギュラー処ç�?æœ??の separator 以前ã?æ–?­—ã?無視するã?
178                    // 3.7.0.5 (2005/04/11)
179                    if( useNumber ) { token.nextToken(); }    // 先é?は行番号のため無視するã?
180    
181                    int clmNo = 0;
182                    while( token.hasMoreTokens() ) {
183                            String val = StringUtil.csvOutQuote( token.nextToken() );
184                            if( val != null && val.startsWith( "'0" ) ) {
185                                    rtnData[clmNo++] = StringUtil.rTrim( val.substring( 1 ) );
186                            }
187                            else {
188                                    rtnData[clmNo++] = StringUtil.rTrim( val );
189                            }
190                            if( clmNo >= clmSize ) { break; }    // 3.7.0.5 (2005/04/11) 多い場合ã?、以降を無視するã?
191                    }
192                    // EXCEL がã?終端TABを削除してしまã�?�Ÿめã?少なã�??合ã?埋めるã?
193                    for( int i=clmNo; i<clmSize; i++ ) {
194                            rtnData[i] = "";
195                    }
196    
197                    return rtnData;
198            }
199    
200            /**
201             * å†?ƒ¨の DBTableModel を返しますã?
202             *
203             * @return      ãƒ??ブルモãƒ?ƒ«
204             */
205            public DBTableModel getDBTableModel() {
206                    return table;
207            }
208    
209            /**
210             * ãƒ??タを読み込ã‚??合ã?,区åˆ?‚Šæ–?­—をセãƒ?ƒˆしますã?
211             *
212             * なお,このメソãƒ?ƒ‰は,サブクラスによっては,使用しなã�??合がありますã?
213             * もし?Œ使用しなã�?‚µブクラスを作æ?する場合ã?, UnsupportedOperationException
214             * ã‚?throw するように,サブクラスで実è£?�—て下さã�??
215             *
216             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
217             *
218             * @param   sep 区åˆ?‚Šæ–?­?
219             */
220            public void setSeparator( final String sep ) {
221                    if( sep != null ) { this.separator = sep; }
222            }
223    
224            /**
225             * ãƒ??タを書き込ã‚??合ã?,区åˆ?‚Šæ–?­—を返しますã?
226             *
227             * @return      区åˆ?‚Šæ–?­?
228             */
229            public String getSeparator() {
230                    return separator;
231            }
232    
233            /**
234             * DBTableModelのãƒ??タとして登録するæœ?¤§件数をこの値に設定しまã�?
235             *              (初期値:DB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])ã€?
236             * サーバã?のメモリè³?º�と応答時間ã?確保ã?為ですã?
237             *
238             * @return  æœ?¤§検索件数
239             */
240            public int getMaxRowCount() {
241                    return maxRowCount;
242            }
243    
244            /**
245             * DBTableModelのãƒ??タとして登録するæœ?¤§件数をこの値に設定しまã�?
246             *              (初期値:DB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])ã€?
247             * サーバã?のメモリè³?º�と応答時間ã?確保ã?為ですã?
248             *
249             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
250             * @og.rev 5.5.8.5 (2012/11/27) 0を無制限として処ç�?�—ますã?
251             *
252             * @param   maxRowCount æœ?¤§検索件数
253             */
254            public void setMaxRowCount( final int maxRowCount ) {
255    //              this.maxRowCount = maxRowCount;
256                    this.maxRowCount = ( maxRowCount > 0 ) ? maxRowCount : Integer.MAX_VALUE ;
257            }
258    
259            /**
260             * DBTableModelのãƒ??タとしてEXCELファイルを読み込ã‚?�¨きã?シート名を設定しますã?
261             * これにより、è¤?•°の形式ã?異なるデータをé?次読み込ã‚?�“とã‚??シートをæŒ?®šして
262             * 読み取ることが可能になりますã?
263             * sheetNos と sheetName が同時にæŒ?®šされた場合ã?、sheetNos が優先されますã?エラーにはならなã�??でご注意くã�?�•ã�??
264             * のでご注意くã�?�•ã�??
265             * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
266             *
267             * ※ こã?クラスでは実è£?�•れてã�?�¾せんã€?
268             *
269             * @og.rev 3.5.4.2 (2003/12/15) 新規追åŠ?
270             *
271             * @param   sheetName シート名
272             */
273            public void setSheetName( final String sheetName ) {
274                    String errMsg = "こã?メソãƒ?ƒ‰は、EXCEL追åŠ?©Ÿè?ですã?で、使用できませんã€?;
275                    throw new UnsupportedOperationException( errMsg );
276            }
277    
278            /**
279             * EXCELファイルを読み込ã‚?�¨きã?シート番号を指定しまã�?初期値:0)ã€?
280             *
281             * EXCEL読み込み時にè¤?•°シートをマã?ジして取り込みますã?
282             * シート番号はã€? から始まる数字で表しますã?
283             * ヘッãƒ??は、最初ã?シートã?カラãƒ?½�置に合わせますã??ˆã?ãƒ?ƒ€ータイトルの自動認識ã?ありません。ï¼?
284             * よって、指定するシートã?、すべて同ä¸?ƒ¬イアウトでなã�?�¨取り込み時にカラãƒ??ずれが発生しますã?
285             * 
286             * シート番号のæŒ?®šã?、カンマ区åˆ?‚Šで、è¤?•°æŒ?®šできますã?またã?N-M の様にハイフンで繋げることでã€?
287             * N 番から、M 番のシートç¯?›²をä¸?‹¬æŒ?®š可能ですã?またã?"*" による、å?シート指定が可能ですã?
288             * これらã?çµ?�¿合わせも可能ですã???0,1,3,5-8,10-* ??
289             * ただしã?"*" に関しては例外的に、ä¸?–‡字だけで、すべてのシートを表すか、N-* を最後にæŒ?®šするかの
290             * どちらかですã?途中にはã€?*" は、現れませんã€?
291             * シート番号はã€?‡�è¤?1,1,2,2)ã€??転(3,2,1) でのæŒ?®šが可能ですã?これは、そのæŒ?®šé?で、読み込まれますã?
292             * sheetNos と sheetName が同時にæŒ?®šされた場合ã?、sheetNos が優先されますã?エラーにはならなã�??でご注意くã�?�•ã�??
293             * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
294             * 
295             * 初期値はã€??ˆ第ä¸?‚·ートï¼?ですã?
296             *
297             * ※ こã?クラスでは実è£?�•れてã�?�¾せんã€?
298             *
299             * @og.rev 5.5.7.2 (2012/10/09) 新規追åŠ?
300             *
301             * @param   sheetNos EXCELファイルのシート番号??から始まるï¼?
302             * @see         #setSheetName( String ) 
303             */
304            public void setSheetNos( final String sheetNos ) {
305                    String errMsg = "こã?メソãƒ?ƒ‰は、EXCEL追åŠ?©Ÿè?ですã?で、使用できませんã€?;
306                    throw new UnsupportedOperationException( errMsg );
307            }
308    
309            /**
310             * EXCELファイルを読み込ã‚?�¨きã?シート単位ã?固定å?を設定するためã?カラãƒ?��とアドレスを指定しますã?
311             * カラãƒ?��は、カンマ区åˆ?‚ŠでæŒ?®šしますã?
312             * 対応するアドレスをã?EXCEL上ã?è¡?列を?�から始まる整数でカンマ区åˆ?‚ŠでæŒ?®šしますã?
313             * これにより、シートã?ä¸?�‹æ‰?�«書かれてã�?‚‹æƒ??をã?DBTableModel のカラãƒ?�«固定å?として
314             * 設定することができますã?
315             * 例として、DB定義書で、テーブル名をシートã?全レコードに設定したい場合などに使ã�?�¾すã?
316             * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
317             *
318             * @og.rev 5.5.8.2 (2012/11/09) 新規追åŠ?
319             *
320             * @param   constKeys 固定å?となるカラãƒ?��(CSV形å¼?
321             * @param   constAdrs 固定å?となるアドレス(è¡?åˆ?è¡?åˆ?・・・)
322             */
323            public void setSheetConstData( final String constKeys,final String constAdrs ) {
324                    String errMsg = "こã?メソãƒ?ƒ‰は、EXCEL追åŠ?©Ÿè?ですã?で、使用できませんã€?;
325                    throw new UnsupportedOperationException( errMsg );
326            }
327    
328            /**
329             * ここにæŒ?®šされたカラãƒ??に NULL が現れた時点で読み取りを中止しますã?
330             *
331             * これは、指定ã?カラãƒ??å¿??とã�?�†事を条件に、そのレコードだけを読み取る処ç�?‚’行いますã?
332             * è¤?•°Sheetの場合ã?、次のSheetを読みますã?
333             * 現時点では、Excel の場合ã?み有効ですã?
334             *
335             * @og.rev 5.5.8.2 (2012/11/09) 新規追åŠ?
336             *
337             * @param   clm カラãƒ??
338             */
339            public void setNullBreakClm( final String clm ) {
340                    String errMsg = "こã?メソãƒ?ƒ‰は、EXCEL追åŠ?©Ÿè?ですã?で、使用できませんã€?;
341                    throw new UnsupportedOperationException( errMsg );
342            }
343    
344            /**
345             * こã?クラスがã?EXCEL対応機è?を持ってã�?‚‹かどã�?�‹を返しますã?
346             *
347             * EXCEL対応機è?とは、シート名のセãƒ?ƒˆ、読み込みå…?ƒ•ァイルの
348             * Fileオブジェクト取得などの、特殊機è?ですã?
349             * 本来は、インターフェースをå?けるべきとè€?�ˆますが、taglib クラス等ã?
350             * 関係があり、問ã�?�ˆわせによる条件åˆ?²�で対応しますã?
351             *
352             * @og.rev 3.5.4.3 (2004/01/05) 新規追åŠ?
353             *
354             * @return      EXCEL対応機è?を持ってã�?‚‹かどã�?�‹
355             */
356            public boolean isExcel() {
357                    return false;
358            }
359    
360            /**
361             * 読み取りå…?ƒ•ァイル名をセãƒ?ƒˆしますã?(DIR + Filename)
362             * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
363             * ※ こã?クラスでは実è£?�•れてã�?�¾せんã€?
364             *
365             * @og.rev 3.5.4.3 (2004/01/05) 新規作æ?
366             *
367             * @param   filename 読み取りå…?ƒ•ァイルå�?
368             */
369            public void setFilename( final String filename ) {
370                    String errMsg = "こã?メソãƒ?ƒ‰は、EXCEL追åŠ?©Ÿè?ですã?で、使用できませんã€?;
371                    throw new UnsupportedOperationException( errMsg );
372            }
373    
374            /**
375             * 読み取りå…?ƒ•ァイルのカラãƒ??をã?外部(タグ)よりæŒ?®šしますã?
376             * ファイルに記述されã�?#NAME より優先して使用されますã?
377             *
378             * @og.rev 3.5.4.5 (2004/01/23) 新規作æ?
379             *
380             * @param   clms 読み取りå…?ƒ•ァイルのカラãƒ??(カンマ区åˆ?‚Šæ–?­?
381             */
382            public void setColumns( final String clms ) {
383                    columns = clms ;
384            }
385    
386            /**
387             * 読み取りå…?ƒ•ァイルのエンコード文字å?を指定しますã?
388             * ファイルは、BufferedReader で受け取る為、本来は、エンコードã?不要ですがã€?
389             * 固定長ファイルの読み取り時ã?バイトコードå?割時に、指定ã?エンコードで
390             * åˆ?‰²するå¿?¦�がありますã?(例えば、半角文字ã?、Shift_JIS ではã€?¼‘バイãƒ?
391             *
392             * @og.rev 3.5.4.5 (2004/01/23) 新規作æ?
393             *
394             * @param   enc ファイルのエンコード文字å?
395             */
396            public void setEncode( final String enc ) {
397                    encode = enc;
398            }
399    
400            /**
401             * 読み取りå…?ƒ•ァイルのエンコード文字å?を取得しますã?
402             * ファイルは、BufferedReader で受け取る為、本来は、エンコードã?不要ですがã€?
403             * 固定長ファイルの読み取り時ã?バイトコードå?割時に、指定ã?エンコードで
404             * åˆ?‰²するå¿?¦�がありますã?(例えば、半角文字ã?、Shift_JIS ではã€?¼‘バイãƒ?
405             *
406             * @og.rev 3.5.4.5 (2004/01/23) 新規作æ?
407             *
408             * @return      ファイルのエンコード文字å?
409             */
410            protected String getEncode() {
411                    return encode;
412            }
413    
414            /**
415             * 行番号æƒ??を指定[true:使用してã�?‚‹/false:してã�?�ªい]しまã�?初期値:true)ã€?
416             *
417             * 通常のフォーマットでは、各行ã?先é?に行番号がå?力されてã�?�¾すã?
418             * 読み取り時にã€?NAME 属æ?を使用する場合ã?、この行番号を無視してã�?�¾すã?
419             * #NAME 属æ?を使用せず、columns 属æ?でカラãƒ?��を指定するå?å�?他シスãƒ?ƒ の
420             * 出力ファイルを読み取るケースç­?では、行番号も存在しなã�?‚±ースがありã?
421             * そã?様な場合に、useNumber="false" を指定すれã?、データのæœ??から読み取り始めますã?
422             * こã?場合ã?出力データのカラãƒ??並びé ?�Œ変更されたå?合ã?columns 属æ?ã‚?
423             * æŒ?®šしなおすå¿?¦�がありますã?で、できるã�?�‘ã€?NAME 属æ?を使用するように
424             * してくださいã€?
425             * なおã?EXCEL 入力には、この設定ã?適用されませんã€?暫定対å¿?
426             * 初期値は、true(使用する) ですã?
427             *
428             * @og.rev 3.7.0.5 (2005/04/11) 新規追åŠ?
429             *
430             * @param       useNumber       行番号æƒ??  [true:使用する/false:使用しない]
431             */
432            public void setUseNumber( final boolean useNumber ) {
433                    this.useNumber = useNumber ;
434            }
435    
436            /**
437             * ãƒ??タの読み始めの初期値を取得しますã?
438             *
439             * TAB区åˆ?‚Šãƒ?‚­ストやEXCEL等ã?ãƒ??タの読み始めの初期値を指定しますã?
440             * ファイルの先é?行がã€?¼�行としてカウントしますã?で、設定å?は、読み飛ã?ã�?
441             * 件数になりますã?(?‘とæŒ?®šするとã€?¼‘件読み飛ã?しã??’行目から読み込みますã?)
442             * 読み飛ã?しã?、コメント行などは、無視しますã?で、実際の行数åˆ?ª­み飛ã?しますã?
443             * ?ƒNAME属æ?ã‚??columns 属æ?は、有効ですã?
444             *
445             * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
446             *
447             * @return      読み始めの初期値
448             */
449            public int getSkipRowCount() {
450                    return skipRowCount ;
451            }
452    
453            /**
454             * ãƒ??タの読み飛ã?し件数を設定しますã?
455             *
456             * TAB区åˆ?‚Šãƒ?‚­ストやEXCEL等ã?ãƒ??タの読み始めの初期値を指定しますã?
457             * ファイルの先é?行がã€?¼�行としてカウントしますã?で、設定å?は、読み飛ã?ã�?
458             * 件数になりますã?(?‘とæŒ?®šするとã€?¼‘件読み飛ã?しã??’行目から読み込みますã?)
459             * 読み飛ã?しã?、コメント行などは、無視しますã?で、実際の行数åˆ?ª­み飛ã?しますã?
460             * ?ƒNAME属æ?ã‚??columns 属æ?は、有効ですã?
461             *
462             * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
463             *
464             * @param       count 読み始めの初期値
465             */
466            public void setSkipRowCount( final int count ) {
467                    skipRowCount = count;
468            }
469    
470            /**
471             * 読取å?ç�?�§ラベルをコードリソースにé€?¤‰換を行うかどã�?�‹を指定しますã?
472             *
473             * TableWriter_Renderer 系のクラスで出力したå?合ã?、コードリソースがラベルで出力されますã?
474             * そã?ファイルを読み取ると、当然、エラーになりますã?
475             * ここでは、コードリソースのカラãƒ?�«対して、ラベルからコードを求めるé?変換を行うことでã€?
476             * Renderer 系で出力したファイルを取り込ã‚?�“とができるようにしますã?
477             *
478             * ここでは、TableWriter 系と同様に、TableReader_Renderer 系のクラスを作るのではなくã?
479             * 属æ?値のフラグで、制御しますã?
480             * å°?�¥çš?�«は、TableWriter 系もå»?­¢して、同様ã?フラグで制御するように変更する予定ですã?
481             *
482             * @og.rev 5.2.1.0 (2010/10/01) 新規作æ?
483             *
484             * @param       useRenderer     コードリソースのラベル変換を行うかどã�?�‹を指å®?
485             */
486            public void setUseRenderer( final boolean useRenderer ) {
487                    this.useRenderer = useRenderer;
488            }
489    
490            /**
491             * 行番号æƒ??をã?使用してã�?‚‹(true)/してã�?�ªã�?false)を返しますã?
492             *
493             * 通常のフォーマットでは、各行ã?先é?に行番号がå?力されてã�?�¾すã?
494             * 読み取り時にã€?NAME 属æ?を使用する場合ã?、この行番号を無視してã�?�¾すã?
495             * #NAME 属æ?を使用せず、columns 属æ?でカラãƒ?��を指定するå?å�?他シスãƒ?ƒ の
496             * 出力ファイルを読み取るケースç­?では、行番号も存在しなã�?‚±ースがありã?
497             * そã?様な場合に、useNumber="false" を指定すれã?、データのæœ??から読み取り始めますã?
498             * こã?場合ã?出力データのカラãƒ??並びé ?�Œ変更されたå?合ã?columns 属æ?ã‚?
499             * æŒ?®šしなおすå¿?¦�がありますã?で、できるã�?�‘ã€?NAME 属æ?を使用するように
500             * してくださいã€?
501             * なおã?EXCEL 入力には、この設定ã?適用されませんã€?暫定対å¿?
502             * 初期値は、true(使用する) ですã?
503             *
504             * @og.rev 3.7.0.5 (2005/04/11) 新規追åŠ?
505             * @og.rev 4.0.0.0 (2007/07/20) メソãƒ?ƒ‰名変更(getUseNumber() â‡? isUseNumber())
506             *
507             * @return      行番号æƒ??をã?使用してã�?‚‹(true)/してã�?�ªã�?false)を指å®?
508             */
509            protected boolean isUseNumber() {
510                    return useNumber ;
511            }
512    
513            /**
514             * ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するかどã�?�‹を指定しますã?
515             *
516             * EXCELなどを読み取る場合ã?シートã?ージで読み取ると、エラー時ã?行番号がã?連番になるためã?
517             * どのシートなのかã?判らなくなりますã?
518             * そこで、どã�?�—てもわからなくなったå?合に備えて、デバッグæƒ??をå?力できるようにしますã?
519             * 通常は使用しませんので、設定を無視しますã?
520             * 初期値は、false:ãƒ?ƒ�ãƒ?‚°æƒ??をå?力しなã�?ですã?
521             *
522             * @og.rev 5.5.7.2 (2012/10/09) 新規作æ?
523             *
524             * @param       useDebug        ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するかどã�?�‹を指å®?
525             */
526            public void setDebug( final boolean useDebug ) {
527                    this.useDebug = useDebug;
528            }
529    
530            /**
531             * ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するかどã�?�‹を取得しますã?
532             *
533             * EXCELなどを読み取る場合ã?シートã?ージで読み取ると、エラー時ã?行番号がã?連番になるためã?
534             * どのシートなのかã?判らなくなりますã?
535             * そこで、どã�?�—てもわからなくなったå?合に備えて、デバッグæƒ??をå?力できるようにしますã?
536             *
537             * @og.rev 5.5.7.2 (2012/10/09) 新規作æ?
538             *
539             * @return      ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するかどã�?�‹(true:する/false:しなã�?
540             */
541            protected boolean isDebug() {
542                    return useDebug ;
543            }
544    }