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 */ 016package org.opengion.plugin.io; 017 018import java.io.File; // 6.2.0.0 (2015/02/27) 019import java.util.Arrays; // 6.2.0.0 (2015/02/27) 020 021import org.opengion.fukurou.model.TableModelHelper; // 6.2.0.0 (2015/02/27) クラスå変更 022import org.opengion.fukurou.model.EventReader_TEXT; // 6.2.0.0 (2015/02/27) 023 024import org.opengion.hayabusa.common.HybsSystemException; 025import org.opengion.hayabusa.io.AbstractTableReader; // 6.2.0.0 (2015/02/27) 026 027import static org.opengion.fukurou.system.HybsConst.CR ; // 6.2.2.0 (2015/03/27) 028 029/** 030 * POI ã«ã‚ˆã‚‹ã€EXCELãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«ã‚’èªã¿å–る実装クラスã§ã™ã€‚ 031 * 032 * ファイルåã€ã‚·ãƒ¼ãƒˆåを指定ã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ã‚’èªã¿å–ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ 033 * 第一カラム㌠# ã§å§‹ã¾ã‚‹è¡Œã¯ã€ã‚³ãƒ¡ãƒ³ãƒˆè¡Œãªã®ã§ã€èªã¿é£›ã°ã—ã¾ã™ã€‚ 034 * カラムåã®æŒ‡å®šè¡Œã§ã€ã‚«ãƒ©ãƒ å㌠null ã®å ´åˆã¯ã€ãã®åˆ—ã¯èªã¿é£›ã°ã—ã¾ã™ã€‚ 035 * 036 * 入力形å¼ã¯ã€openXMLå½¢å¼ã«ã‚‚対応ã—ã¦ã„ã¾ã™ã€‚ 037 * ファイルã®å†…容ã«å¿œã˜ã¦ã€.xlsã¨.xlsxã®ã©ã¡ã‚‰ã§èªã¿å–ã‚‹ã‹ã¯ã€å†…部的㫠038 * 自動判定ã•ã‚Œã¾ã™ã€‚ 039 * 040 * @og.rev 3.5.4.8 (2004/02/23) æ–°è¦ä½œæˆ 041 * @og.rev 4.3.6.7 (2009/05/22) ooxmlå½¢å¼å¯¾å¿œ 042 * @og.rev 6.2.0.0 (2015/02/27) TableReader クラスã®å‘¼ã³å‡ºã—元メソッドã®å…±é€šåŒ–(EXCEL,TEXT)ã€‚æ–°è¦ 043 * @og.group ファイル入力 044 * 045 * @version 4.0 046 * @author Kazuhiko Hasegawa 047 * @since JDK5.0, 048 */ 049public class TableReader_Text extends AbstractTableReader { 050 /** ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®VERSIONæ–‡å—列をè¨å®šã—ã¾ã™ã€‚ {@value} */ 051 private static final String VERSION = "6.4.2.0 (2016/01/29)" ; 052 053 /** 054 * デフォルトコンストラクター 055 * 056 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 057 */ 058 public TableReader_Text() { super(); } // ã“れもã€è‡ªå‹•çš„ã«å‘¼ã°ã‚Œã‚‹ãŒã€ç©ºã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’作æˆã™ã‚‹ã¨è¦å‘Šã•ã‚Œã‚‹ã®ã§ã€æ˜Žç¤ºçš„ã«ã—ã¦ãŠãã¾ã™ã€‚ 059 060 /** 061 * DBTableModel ã‹ã‚‰ å„å½¢å¼ã®ãƒ‡ãƒ¼ã‚¿ã‚’作æˆã—ã¦ã€BufferedReader よりèªã¿å–ã‚Šã¾ã™ã€‚ 062 * コメント/空行を除ãã€æœ€åˆã®è¡Œã¯ã€å¿…ãšé …ç›®åãŒå¿…è¦ã§ã™ã€‚ 063 * ãれ以é™ã¯ã€ã‚³ãƒ¡ãƒ³ãƒˆ/空行を除ãã€ãƒ‡ãƒ¼ã‚¿ã¨ã—ã¦èªã¿è¾¼ã‚“ã§ã„ãã¾ã™ã€‚ 064 * ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€EXCEL èªã¿è¾¼ã¿æ™‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚ 065 * 066 * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ 067 * @og.rev 5.1.6.0 (2010/05/01) columns å‡¦ç† è¿½åŠ 068 * @og.rev 5.1.6.0 (2010/05/01) skipRowCountã®è¿½åŠ 069 * @og.rev 5.1.8.0 (2010/07/01) Exception ã‚’ãã¡ã£ã¨è¨˜è¿°(InvalidFormatException) 070 * @og.rev 5.2.1.0 (2010/10/01) setTableColumnValues メソッドを経由ã—ã¦ã€ãƒ†ãƒ¼ãƒ–ルã«ãƒ‡ãƒ¼ã‚¿ã‚’セットã™ã‚‹ã€‚ 071 * @og.rev 5.5.1.2 (2012/04/06) HeaderData ã‚’ try ã®ä¸Šã«ã ã—ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å–å¾—ã§ãるよã†ã«ã™ã‚‹ã€‚ 072 * @og.rev 5.5.7.2 (2012/10/09) sheetNos è¿½åŠ ã«ã‚ˆã‚‹è¤‡æ•°ã‚·ãƒ¼ãƒˆã®ãƒžãƒ¼ã‚¸èªã¿å–りサãƒãƒ¼ãƒˆ 073 * @og.rev 5.5.8.2 (2012/11/09) HeaderData 㫠デãƒãƒƒã‚°ãƒ•ãƒ©ã‚°ã‚’渡ã—ã¾ã™ã€‚ 074 * @og.rev 6.0.2.5 (2014/10/31) debug=true 時ã«ã€é€²æ—ãŒè¦‹ãˆã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚ 075 * @og.rev 6.1.0.0 (2014/12/26) Excel関係改善 076 * @og.rev 6.2.0.0 (2015/02/27) TableReader クラスã®å‘¼ã³å‡ºã—元メソッドã®å…±é€šåŒ–(EXCEL,TEXT)ã€‚æ–°è¦ 077 * @og.rev 6.2.1.0 (2015/03/13) TableReaderModel を外部ã‹ã‚‰ã‚»ãƒƒãƒˆã—ã¾ã™ã€‚ 078 * @og.rev 6.2.3.0 (2015/05/01) è¡Œèªã¿é£›ã°ã— nullSkipClmè¿½åŠ 079 * 080 * @param file èªã¿å–り元ファイル 081 * @param enc ファイルã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰æ–‡å—列(未使用) 082 */ 083 @Override 084 public void readDBTable( final File file , final String enc ) { 085 final boolean isDebug = isDebug(); // 5.5.7.2 (2012/10/09) デãƒãƒƒã‚°æƒ…å ± 086 087 if( isDebug ) { System.out.println( " Filename=" + file ) ; } 088 089 final TableModelHelper helper = new TableModelHelper() { 090 091 /** 092 * カラムåé…列ãŒãã‚ã£ãŸæ®µéšŽã§ã€ã‚¤ãƒ™ãƒ³ãƒˆãŒç™ºç”Ÿã—ã¾ã™ã€‚ 093 * 094 * openGion ã§ã®æ¨™æº–çš„ãªå‡¦ç†ã¯ã€colNo==0 ã®æ™‚ã«ã€val ã®å…ˆé ãŒã€#NAME 095 * ã§å§‹ã¾ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’ã€åå‰é…列ã¨ã—ã¦èªè˜ã—ã¾ã™ã€‚ 096 * #value( String,int,int ) ã§ã€ã“ã® #NAME ã ã‘ã¯ã€ç¶™ç¶šå‡¦ç†ã•ã‚Œã¾ã™ã€‚ 097 * ãã®ä¸Šã§ã€#NAME レコードãŒçµ‚了ã—ãŸæ™‚点ã§ã€ã‚«ãƒ©ãƒ åé…列ãŒå®Œæˆã™ã‚‹ã®ã§ 098 * ãã“ã§åˆã‚ã¦ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã°ã‚Œã¾ã™ã€‚ 099 * 100 * @og.rev 6.0.3.0 (2014/11/13) æ–°è¦ä½œæˆ 101 * @og.rev 6.1.0.0 (2014/12/26) omitNames å±žæ€§ã‚’è¿½åŠ 102 * 103 * @param names カラムåé…列 104 * @see #value( String,int,int ) 105 */ 106 @Override 107 public void columnNames( final String[] names ) { 108 setTableDBColumn( names ) ; 109 } 110 111 /** 112 * #NAME ã®ã‚ªãƒªã‚¸ãƒŠãƒ«ã‚«ãƒ©ãƒ åé…列ãŒãã‚ã£ãŸæ®µéšŽã§ã€ã‚¤ãƒ™ãƒ³ãƒˆãŒç™ºç”Ÿã—ã¾ã™ã€‚ 113 * 114 * @og.rev 7.3.1.3 (2021/03/09) #NAMEã®ã‚ªãƒªã‚¸ãƒŠãƒ«ã‚’å–å¾—ã§ãるよã†ã«ã—ã¾ã™ã€‚ 115 * 116 * @param names カラムåé…列 117 */ 118 @Override 119 public void originalNames( final String[] names ) { 120 setOriginalNames( names ) ; 121 } 122 123 /** 124 * row ã«ã‚るセルã®ã‚ªãƒ–ジェクト値ãŒãã‚ã£ãŸæ®µéšŽã§ã€ã‚¤ãƒ™ãƒ³ãƒˆãŒç™ºç”Ÿã—ã¾ã™ã€‚ 125 * 126 * @og.rev 6.0.3.0 (2014/11/13) æ–°è¦ä½œæˆ 127 * @og.rev 6.2.1.0 (2015/03/13) setTableColumnValuesã«ã€è¡Œç•ªå·ã‚’引数ã«è¿½åŠ 128 * 129 * @param vals æ–‡å—列値ã®ï¼‘行分ã®é…列 130 * @param rowNo 行番å·(0~) 131 */ 132 @Override 133 public void values( final String[] vals,final int rowNo ) { 134 if( isDebug && rowNo % 100 == 0 ) { 135 System.out.println( " No.[" + rowNo + "]=" + Arrays.toString( vals ) ) ; 136 } 137 setTableColumnValues( vals,rowNo ); // 6.2.1.0 (2015/03/13) 138 } 139 }; 140 141 helper.setDebug( isDebug ); // 6.2.0.0 (2015/02/27) 142 helper.setConstData( constKeys , constAdrs ); // 6.1.0.0 (2014/12/26) 外部ã‹ã‚‰å›ºå®šå€¤æƒ…å ±ã‚’æŒ‡å®šã€‚ 143 helper.setNames( columns , isUseNumber() ); // 6.1.0.0 (2014/12/26) 外部ã‹ã‚‰ã‚«ãƒ©ãƒ åé…列を指定。 144 helper.setSkipRowCount( getSkipRowCount() ); // 6.1.0.0 (2014/12/26) 外部ã‹ã‚‰ã‚¹ã‚ップ行数を指定。 145 helper.setNullBreakClm( nullBreakClm ); // 6.2.0.0 (2015/02/27) 外部ã‹ã‚‰nullBreakClmを指定。 146 helper.setNullSkipClm( nullSkipClm ); // 6.2.3.0 (2015/05/01) 外部ã‹ã‚‰nullSkipClmを指定。 147 148 final EventReader_TEXT reader = new EventReader_TEXT(); 149 reader.setSeparator( separator ); // 6.2.0.0 (2015/02/27) 外部ã‹ã‚‰ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã‚’指定。 150 reader.setEncode( enc ); // 6.2.0.0 (2015/02/27) 外部ã‹ã‚‰ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã‚’指定。 151 152 reader.eventReader( file , helper ); 153 154 // 最後ã¾ã§ã€#NAME ãŒè¦‹ã¤ã‹ã‚‰ç„¡ã‹ã£ãŸå ´åˆ 155 if( !helper.isNameSet() ) { 156 final String errMsg = "最後ã¾ã§ã€#NAME ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" 157 + CR 158 + "ファイル形å¼ãŒç•°ãªã‚‹ã‹ã€ã‚‚ã—ãã¯æå‚·ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚" 159 + "Class=[Text], File=[" + file + "], Encode=[" + enc + "], Separator=[" + separator + "]" 160 + CR ; 161 throw new HybsSystemException( errMsg ); 162 } 163 164 if( isDebug ) { System.out.println( " TableReader End." ) ; } 165 } 166}