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.report; 017 018 import org.opengion.hayabusa.common.HybsSystem; 019 import org.opengion.hayabusa.db.DBTableModelUtil; 020 import org.opengion.hayabusa.db.DBTableModel; 021 import org.opengion.hayabusa.resource.ResourceFactory; 022 import org.opengion.hayabusa.resource.ResourceManager; 023 import org.opengion.fukurou.util.StringUtil; 024 import org.opengion.fukurou.util.FileUtil; 025 import org.opengion.fukurou.util.ApplicationInfo; 026 import org.opengion.fukurou.db.DBUtil; 027 028 import java.io.File; 029 030 /** 031 * ã€ãƒ¬ãƒã?トå?力ã?DBTableModelオブジェクトをレãƒã?ト形å¼ã«è¿”é‚„ã™ã‚‹ã‚¿ã‚°ãƒªãƒ–クラスã§ã™ã? 032 * ã“ã?オブジェクトã«ã€?ãƒ??ã‚¿(DBTableModel)ã¨ã€ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©(DBTableReport クラス)を与ãˆã¦ã€? 033 * 外部ã‹ã‚‰ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã§ã€å„種形å¼ã§ ãƒ??ã‚¿(DBTableModel)を表示ã•ã›ã‚‹ã“ã¨ã? 034 * å¯èƒ½ã§ã™ã? 035 * 036 * @og.group 帳票シスãƒ?ƒ 037 * 038 * @version 4.0 039 * @author Kazuhiko Hasegawa 040 * @since JDK5.0, 041 */ 042 public class ReportConverter { 043 044 private static final String CR = HybsSystem.CR ; 045 046 private final StringBuilder errMsg = new StringBuilder(); 047 048 // DBTableReport ã«å¯¾ã—ã¦è¨å®šã™ã‚‹æƒ…å ± 049 private String[] headerKeys = null; // 固定部㮠key 部åˆ?‚’æŒ?®šã™ã‚‹ã?カンマã§è¤?•°æŒ?®šã§ãã‚‹ã€? 050 private String[] headerVals = null; // 固定部㮠key ã«å¯¾å¿œã™ã‚‹å?を指定ã™ã‚‹ã? 051 private String[] footerKeys = null; // 繰り返ã—部ã®çµ‚äº?¾Œã«è¡¨ç¤ºã™ã‚‹ key 部åˆ?‚’æŒ?®šã™ã‚‹ã?カンマã§è¤?•°æŒ?®šã§ãã‚‹ã€? 052 private String[] footerVals = null; // 繰り返ã—部ã®çµ‚äº?¾Œã«è¡¨ç¤ºã™ã‚‹ key ã«å¯¾ã™ã‚‹å€¤ã‚’指定ã™ã‚‹ã? 053 private boolean pageEndCut = false; // ボディー部(繰り返ã—部)ãŒãªããªã£ãŸã¨ãã«ã€ãれ以é™ã?ペã?ジをå?力ã™ã‚‹ã‹æŒ?®šã™ã‚‹ã? 054 private File templateFile = null; // 3.8.0.0 (2005/06/07) 055 private File firstTemplateFile = null; // 3.8.0.0 (2005/06/07) 056 private DBTableModel table = null; 057 private ResourceManager resource = null; // 4.0.0 (2005/01/31) 058 059 // å—ã‘æ¸¡ã—変数 060 private final String SYSTEM_ID ; 061 private final String YKNO ; 062 private final String LISTID ; 063 private final String HTML_DIR ; 064 private final String LANG ; 065 private final boolean DEBUG ; // 3.8.5.0 (2006/03/06) ãƒ?ƒãƒ?‚°ç”¨ã®ãƒ•ラグを追åŠ? 066 067 // GE54 帳票定義マスタ 068 private String modelDIR = null; 069 private String modelFILE = null; 070 private String hSQL = null; 071 private String fSQL = null; 072 private String bSQL = null; 073 private boolean fgLOCAL = false; // 0:未使用 1:使用 4.0.0 (2005/01/31) 074 private boolean fgDIRECT = false; // 0:未使用 1:使用 4.0.0 (2005/01/31) 075 076 // GE54 ã®å¸³ç¥¨å®šç¾©æƒ??ã‚’å–å¾—ã™ã‚‹SQLæ–?§ã™ã? 077 // 4.0.0 (2005/01/31) å…±æœ?system_id ã‚’ã?è€?? 078 private static final String GE54_SELECT = 079 "SELECT MODELDIR,MODELFILE,FGCUT,HSQL,FSQL,BSQL,FGLOCAL,FGDIRECT,SYSTEM_ID" + // 4.0.0 (2005/01/31) 080 " FROM GE54" + 081 " WHERE FGJ = '1'" + 082 " AND SYSTEM_ID IN (?,'**')" + 083 " AND LISTID = ?" ; 084 085 private static final int GE54_MODELDIR = 0; 086 private static final int GE54_MODELFILE = 1; 087 private static final int GE54_FGCUT = 2; 088 private static final int GE54_HSQL = 3; 089 private static final int GE54_FSQL = 4; 090 private static final int GE54_BSQL = 5; 091 private static final int GE54_FGLOCAL = 6; 092 private static final int GE54_FGDIRECT = 7; 093 private static final int GE54_SYSTEM_ID = 8; 094 095 /** コãƒã‚¯ã‚·ãƒ§ãƒ³ã«ã‚¢ãƒ—リケーションæƒ??を追記ã™ã‚‹ã‹ã©ã?‹æŒ?®?*/ 096 public static final boolean USE_DB_APPLICATION_INFO = HybsSystem.sysBool( "USE_DB_APPLICATION_INFO" ) ; 097 098 // 3.8.7.0 (2006/12/15) アクセスãƒã‚°å–å¾—ã?為,ApplicationInfoオブジェクトをè¨å®? 099 private final ApplicationInfo appInfo; 100 private final String DBID = HybsSystem.sys( "RESOURCE_DBID" ); // 5.5.5.1 (2012/08/07) リソース系DBID 付ã‘忘れ対å¿? 101 102 /** 103 * コンストラクター 104 * 引数をå—ã‘ã¨ã£ã¦ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æ?ã—ã¾ã™ã? 105 * 106 * @og.rev 3.0.0.4 (2003/02/26) FGRUN ã?PRT ã®ã¿ã®ã¨ãã??ŒMODELFILE ã®ã¿ã‚»ãƒ?ƒˆã—ã¦çµ‚äº?™ã‚‹ã? 107 * @og.rev 3.8.0.0 (2005/06/07) FGRUNã¯?Œä½¿ç”¨ã—ãªã? 108 * @og.rev 3.8.7.0 (2006/12/15) アクセスãƒã‚°å–å¾—ã?為,ApplicationInfoオブジェクトをè¨å®? 109 * 110 * @param system_id シスãƒ?ƒ ID 111 * @param ykno è¦æ±‚ç•ªå· 112 * @param listId 帳票ID 113 * @param tempDir 出力ディレクトリ 114 * @param lang è¨?ª? 115 * @param debug ãƒ?ƒãƒ?‚°ãƒ•ラグè¨?ª? 116 */ 117 public ReportConverter( final String system_id, final String ykno, final String listId, 118 final String tempDir,final String lang,final boolean debug ) { 119 SYSTEM_ID = system_id; 120 YKNO = ykno; 121 LISTID = listId; 122 HTML_DIR = tempDir; 123 LANG = lang; 124 DEBUG = debug; 125 126 // 3.8.7.0 (2006/12/15) アクセスãƒã‚°å–å¾—ã?為,ApplicationInfoオブジェクトをè¨å®? 127 if( USE_DB_APPLICATION_INFO ) { 128 appInfo = new ApplicationInfo(); 129 // ユーザーID,IPアドレス,ホストå 130 appInfo.setClientInfo( SYSTEM_ID,HybsSystem.HOST_ADRS,HybsSystem.HOST_NAME ); 131 // ç”»é¢ID,æ“ä½?プãƒã‚°ãƒ©ãƒ?D 132 appInfo.setModuleInfo( "ReportConverter",YKNO,LISTID ); 133 } 134 else { 135 appInfo = null; 136 } 137 } 138 139 /** 140 * 変æ›å‡¦ç?‚’実行ã—ã¾ã™ã? 141 * 142 * @og.rev 3.0.0.4 (2003/02/26) FGRUN ã?PRT ã®ã¿ã®ã¨ãã??ŒMODELFILE ã®ã¿ã‚»ãƒ?ƒˆã—ã¦çµ‚äº?™ã‚‹ã? 143 * @og.rev 3.5.4.9 (2004/02/25) å˜åœ¨ãƒã‚§ãƒ?‚¯ã‚¨ãƒ©ãƒ¼(åŽŸå› ä¸æ?)ã®æš«å®šå¯¾å¿? 144 * @og.rev 3.8.0.0 (2005/06/07) initialDataSet() ã‚?ReportProcessing å´ã§å‘¼ã³å‡ºã—ã¾ã™ã? 145 * 146 * @return çµæžœ [true:æ£å¸¸/false:異常] 147 */ 148 public boolean execute() { 149 System.out.print( "ReportConverter Started ... " ); 150 boolean flag = true; 151 152 try { 153 // 雛形ファイルã®ãƒã‚§ãƒ?‚¯ 154 // 3.8.0.0 (2005/06/07) å˜åœ¨ãƒã‚§ãƒ?‚¯ã¯ã€FileUtil.checkFile ã§è¡Œã†ã€? 155 if( flag ) { 156 System.out.print( "MDL CK," ); 157 templateFile = FileUtil.checkFile( modelDIR, modelFILE + ".html" ); 158 flag = ( templateFile != null ) ; // ãƒã‚§ãƒ?‚¯ã®çµæžœã?null ãªã‚‰ã?見ã¤ã‹ã‚‰ãªã‹ã£ãŸã? 159 160 if( !flag ) { 161 errMsg.append( "ModelFile Not Found Error !" ).append( CR ); 162 errMsg.append( "MODELDIR=" ).append( modelDIR ).append( CR ); 163 errMsg.append( "MODELFILE=" ).append( modelFILE + ".html" ).append( CR ); 164 } 165 } 166 167 // ファーストã?ージ雛形ファイルã®ãƒã‚§ãƒ?‚¯(ãªãã¦ã‚‚良ã? 168 // 3.8.0.0 (2005/06/07) å˜åœ¨ãƒã‚§ãƒ?‚¯ã¯ã€FileUtil.checkFile ã§è¡Œã†ã€? 169 if( flag ) { 170 // ãƒã‚§ãƒ?‚¯ã¯ã€?¼‘回ã®ã¿è¡Œã†ã€? 171 firstTemplateFile = FileUtil.checkFile( modelDIR, modelFILE + "_FIRST.html",1 ); 172 } 173 174 // ヘッãƒ?¼Œãƒ•ãƒ?‚¿, ボディー部㮠SQL を実行ã—ã¾ã™ã? 175 if( flag ) { 176 // flag = getHeaderFooter(); 177 flag = isHeaderFooter(); 178 if( flag ) { System.out.print( "HF SQL," ); } 179 } 180 181 // 帳票変æ›å‡¦ç?‚’実行ã—ã¾ã™ã? 182 if( flag ) { 183 flag = reportRun(); 184 if( flag ) { System.out.print( "RPT RUN," ); } 185 } 186 } 187 catch ( RuntimeException ex ) { 188 errMsg.append( "ReportConverter Execute Exception Error!" ).append( CR ); 189 errMsg.append( "==============================" ).append( CR ); 190 errMsg.append( StringUtil.stringStackTrace( ex ) ) ; 191 errMsg.append( CR ) ; 192 flag = false; 193 } 194 195 System.out.println( "End." ); 196 return flag ; 197 } 198 199 /** 200 * åˆæœŸãƒ??ã‚¿ã‚»ãƒ?ƒˆã‚’行ã„ã¾ã™ã? 201 * ã“ã“ã§ã¯ã€GE54 ãƒ??ブルよりå¿?¦ãªæƒ??ã‚’å–å¾—ã—ã¾ã™ã? 202 * 203 * @og.rev 3.8.0.0 (2005/06/07) initialDataSet() ã‚?ReportProcessing å´ã§å‘¼ã³å‡ºã—ã¾ã™ã? 204 * @og.rev 3.8.7.0 (2006/12/15) アクセスãƒã‚°å–å¾—ã?為,ApplicationInfoオブジェクトをè¨å®? 205 * @og.rev 4.0.0.0 (2005/01/31) ãƒãƒ¼ã‚«ãƒ«ãƒªã‚½ãƒ¼ã‚¹ãƒ•ラグã¨ãƒ?‚¤ãƒ¬ã‚¯ãƒˆã‚¢ã‚¯ã‚»ã‚¹ãƒ•ラグを追åŠ? 206 * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付ã‘忘れ対ç? 207 * 208 * @return çµæžœ [true:æ£å¸¸/false:異常] 209 */ 210 public boolean initialDataSet() { 211 String[] args = new String[] { SYSTEM_ID,LISTID }; 212 // modeldir,modelfile,fgcut,hsql,fsql,bsql,fglocal,fgdirect,system_id 213 // String[][] vals = DBUtil.dbExecute( GE54_SELECT,args,appInfo ); // 3.8.7.0 (2006/12/15) 214 String[][] vals = DBUtil.dbExecute( GE54_SELECT,args,appInfo, DBID ); // 5.5.5.1 (2012/08/07) 215 if( vals == null || vals.length == 0 ) { 216 errMsg.append( "Data does not exist in GE54 table." ).append( CR ); 217 errMsg.append( "==============================" ).append( CR ); 218 errMsg.append( "SYSTEM_ID=[" ).append( SYSTEM_ID ).append( "] , " ); 219 errMsg.append( "LISTID=[" ).append( LISTID ).append( "]" ); 220 errMsg.append( CR ); 221 return false; 222 } 223 224 int row = 0; 225 // æ¤œç´¢çµæžœãŒè¤?•°å¸°ã£ãŸã¨ãã?SYSTEM_ID ã?æŒ?®šã•れã¦ã?‚‹æ–¹ã®ãƒ??ã‚¿(è¡?を採用ã™ã‚‹ã€? 226 for( int i=0; i<vals.length; i++ ) { 227 if( SYSTEM_ID.equalsIgnoreCase( vals[i][GE54_SYSTEM_ID] ) ) { row = i; break; } 228 } 229 230 modelDIR = StringUtil.nval( vals[row][GE54_MODELDIR],modelDIR ); 231 modelFILE = StringUtil.nval( vals[row][GE54_MODELFILE],modelFILE ); 232 pageEndCut = StringUtil.nval( vals[row][GE54_FGCUT],pageEndCut ); // boolean タイãƒ? 233 234 if( DEBUG ) { 235 System.out.println( "MODELDIR = [" + modelDIR + "]" ); 236 System.out.println( "MODELFILE = [" + modelFILE + "]" ); 237 System.out.println( "pageEndCut = [" + pageEndCut + "]" ); 238 } 239 240 hSQL = StringUtil.nval( vals[row][GE54_HSQL],hSQL ); 241 fSQL = StringUtil.nval( vals[row][GE54_FSQL],fSQL ); 242 bSQL = StringUtil.nval( vals[row][GE54_BSQL],bSQL ); 243 if( bSQL == null || bSQL.length() == 0 ) { 244 errMsg.append( "Body SQL Columns does not exist in GE54 table." ).append( CR ); 245 errMsg.append( "==============================" ).append( CR ); 246 errMsg.append( "SYSTEM_ID=[" ).append( SYSTEM_ID ).append( "] , " ); 247 errMsg.append( "LISTID=[" ).append( LISTID ).append( "] " ); 248 errMsg.append( CR ); 249 return false; 250 } 251 252 // 4.0.0 (2005/01/31) ãƒãƒ¼ã‚«ãƒ«ãƒªã‚½ãƒ¼ã‚¹ãƒ•ラグã¨ãƒ?‚¤ãƒ¬ã‚¯ãƒˆã‚¢ã‚¯ã‚»ã‚¹ãƒ•ラグを追åŠ? 253 fgLOCAL = ( vals[row][GE54_FGLOCAL] != null && vals[row][GE54_FGLOCAL].trim().equals( "1" ) ) ? true : false ; 254 fgDIRECT= ( vals[row][GE54_FGDIRECT] != null && vals[row][GE54_FGDIRECT].trim().equals( "1" ) ) ? true : false ; 255 256 return true; 257 } 258 259 /** 260 * ヘッãƒ??フッターæƒ??ã®å–得を行ã„ã¾ã™ã? 261 * GE54 ã® HSQL,FSQL,BSQL ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã—ã¾ã™ã? 262 * ヘッãƒ??æƒ??ã€ãƒ•ãƒ?‚¿ãƒ¼æƒ??ãŒãªãã¦ã‚‚異常ã¨ã¯åˆ¤æ–ã•れã¾ã›ã‚“ãŒã? 263 * ボディæƒ??ãŒå˜åœ¨ã—ãªã??åˆã?ã€ã‚¨ãƒ©ãƒ¼ã¨ãªã‚Šã¾ã™ã? 264 * 265 * @og.rev 3.0.0.1 (2003/02/14) ヘッãƒ??ã€ãƒ•ãƒ?‚¿ãƒ¼æƒ??ã?null ã®ã¨ãã?処ç?¿½åŠ?? 266 * @og.rev 3.0.1.3 (2003/03/11) 検索時ã?æœ?¤§ä»¶æ•°ã§ã®æ‰“ã¡åˆ?‚Šã‚’エラーã¨ã™ã‚‹ã€? 267 * @og.rev 3.8.7.0 (2006/12/15) アクセスãƒã‚°å–å¾—ã?為,ApplicationInfoオブジェクトをè¨å®? 268 * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager ã¸å¤‰æ›´ , メソãƒ?ƒ‰å変更 269 * 270 * @return çµæžœ [true:æ£å¸¸/false:異常] 271 */ 272 // private boolean getHeaderFooter() { 273 private boolean isHeaderFooter() { 274 // 4.0.0 (2005/01/31) FGLOCAL æŒ?®šæ™‚ã¯ã€SYSTEM_ID を指定ã—ã¦ãƒªã‚½ãƒ¼ã‚¹ä½œæ? 275 if( fgLOCAL ) { 276 // ãƒãƒ¼ã‚«ãƒ«ãƒªã‚½ãƒ¼ã‚¹æŒ?®šæ™‚ã¯ã€SYSTEM_ID,LANG を使用ã—ã¾ã™ã?å…ˆèªã¿ã¯ã€ä½¿ç”¨ã—ã¾ã›ã‚“ã€? 277 resource = ResourceFactory.newInstance( SYSTEM_ID,LANG,false ); // 4.0.0 (2005/01/31) 278 } 279 else { 280 // 従æ¥ã¨äº’æ›æ€§ã®ã‚るモーãƒ?ãƒãƒ¼ã‚«ãƒ«ãƒªã‚½ãƒ¼ã‚¹ã¯ä½¿ç”¨ã—ãªã?? 281 resource = ResourceFactory.newInstance( LANG ); // 4.0.0 (2005/01/31) 282 } 283 284 // 4.0.0 (2005/01/31) FGDIRECT æŒ?®šæ™‚ã¯ã€where æ¡ä»¶ã¯ã€null ã«ãªã‚Šã¾ã™ã? 285 String[] where = ( fgDIRECT ) ? null : new String[] { SYSTEM_ID , YKNO } ; 286 287 // ヘッãƒ??æƒ??ã®å–å¾? 288 DBTableModel header = DBTableModelUtil.makeDBTable( hSQL, where, resource, appInfo ); // 3.8.7.0 (2006/12/15) 289 if( header != null && header.getRowCount() > 0 ) { 290 headerKeys = header.getNames(); 291 Object[] obj = header.getValues(0); 292 headerVals = new String[obj.length]; 293 for( int i=0; i<obj.length; i++ ) { 294 headerVals[i] = obj[i].toString().trim(); 295 } 296 } 297 298 // フッターæƒ??ã®å–å¾? 299 DBTableModel footer = DBTableModelUtil.makeDBTable( fSQL, where, resource ,appInfo ); // 3.8.7.0 (2006/12/15) 300 if( footer != null && footer.getRowCount() > 0 ) { 301 footerKeys = footer.getNames(); 302 Object[] obj = footer.getValues(0); 303 footerVals = new String[obj.length]; 304 for( int i=0; i<obj.length; i++ ) { 305 footerVals[i] = obj[i].toString().trim(); 306 } 307 } 308 309 // ボディーæƒ??ã®å–å¾? 310 table = DBTableModelUtil.makeDBTable( bSQL, where, resource ,appInfo ); // 3.8.7.0 (2006/12/15) 311 if( table.getRowCount() <= 0 ) { 312 errMsg.append( "Database Body row count is Zero." ).append( CR ); 313 errMsg.append( "==============================" ).append( CR ); 314 errMsg.append( bSQL ); 315 errMsg.append( CR ); 316 return false; 317 } 318 // 3.0.1.3 (2003/03/11) 検索時ã?æœ?¤§ä»¶æ•°ã§ã®æ‰“ã¡åˆ?‚Šã‚’エラーã¨ã™ã‚‹ã€? 319 if( table.isOverflow() ) { 320 errMsg.append( "Database is Overflow. [" ); 321 errMsg.append( table.getRowCount() ); 322 errMsg.append( "]" ).append( CR ).append( CR ); 323 errMsg.append( "==============================" ).append( CR ); 324 errMsg.append( "Check SystemParameter Data in DB_MAX_ROW_COUNT Overflow" ); 325 errMsg.append( CR ); 326 return false; 327 } 328 329 return true; 330 } 331 332 /** 333 * 実際ã®ãƒ¬ãƒã?ト変æ›å‡¦ç?‚’行ã„ã¾ã™ã? 334 * 335 * @og.rev 3.5.4.3 (2004/01/05) HTMLDBTableReport ã®ã‚¯ãƒ©ã‚¹å変更ã€? 336 * @og.rev 3.6.0.0 (2004/09/17) メソãƒ?ƒ‰åã?変更。setInputFile â‡?setTemplateFile 337 * @og.rev 3.6.1.0 (2005/01/05) 帳票?©?¤(LISTID)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 338 * @og.rev 3.8.5.1 (2006/04/28) setOutputFileKey ã®ä»£ã‚りã«ã€setYkno を使用ã—ã¾ã™ã? 339 * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager ã¸å¤‰æ›´ 340 * 341 * @return çµæžœ [true:æ£å¸¸/false:異常] 342 */ 343 private boolean reportRun() { 344 DBTableReport report = new DBTableReport_HTML(); 345 346 report.setDBTableModel( table ); 347 report.setTemplateFile( templateFile ); // 3.6.0.0 (2004/09/17) 348 report.setFirstTemplateFile( firstTemplateFile ); // 3.6.0.0 (2004/09/17) 349 report.setOutputDir( HTML_DIR ); 350 report.setOutputFileKey( YKNO ); // è¦æ±‚番å·ã‚’ファイルåã¨ã—ã¦ä½¿ç”¨ã—ã¾ã™ã? 351 report.setYkno( YKNO ); // 3.8.5.1 (2006/04/28) 352 report.setHeaderKeys( headerKeys ); 353 report.setHeaderVals( headerVals ); 354 report.setFooterKeys( footerKeys ); 355 report.setFooterVals( footerVals ); 356 report.setPageEndCut( pageEndCut ); 357 report.setResourceManager( resource ); // 4.0.0 (2005/01/31) 358 report.setListId( LISTID ); // 3.6.1.0 (2005/01/05) 359 report.writeReport(); 360 361 return true; 362 } 363 364 /** 365 * modelFILE ã‚’è¿”ã—ã¾ã™ã? 366 * 367 * @return modelFILEå? 368 */ 369 public String modelFile() { 370 return modelFILE ; 371 } 372 373 /** 374 * エラーãŒå˜åœ¨ã—ãŸå ´åˆã«ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã? 375 * 376 * @return エラーメãƒ?‚»ãƒ¼ã‚¸ String 377 */ 378 public String getErrMsg() { 379 return errMsg.toString(); 380 } 381 }