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    }