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.plugin.daemon;
017    
018    import org.opengion.hayabusa.common.HybsSystem;
019    import org.opengion.hayabusa.common.HybsSystemException;
020    import org.opengion.hayabusa.report.GE50Access;
021    import org.opengion.hayabusa.report.ReportProcessing;
022    import org.opengion.fukurou.util.LogWriter;
023    import org.opengion.fukurou.util.StringUtil;
024    import org.opengion.fukurou.util.HybsTimerTask;
025    import org.opengion.fukurou.util.ApplicationInfo;
026    import org.opengion.fukurou.db.DBUtil;
027    
028    import java.util.Map;
029    import java.util.HashMap;
030    import java.util.Date;
031    
032    /**
033     * ã€ãƒ¬ãƒã?トå?力ã?å¸³ç¥¨è¦æ±‚テーブルを監視ã—ã¦ã€å¸³ç¥¨å‡¦ç??ログラãƒ?‚’呼ã³å‡ºã—ã¾ã™ã?
034     * ã“ã?クラスã¯ã€HybsTimerTask を継承ã—㟠タイマã?タスククラスã§ã™ã?
035     * startDaemon() ãŒã‚¿ã‚¤ãƒžã?タスクã«ã‚ˆã£ã¦ã€å‘¼ã³å‡ºã•れã¾ã™ã?
036     *
037     * @og.rev 4.3.4.4 (2009/01/01) プラグイン�
038     * @og.group �?モン
039     *
040     * @version  4.0
041     * @author   Kazuhiko Hasegawa
042     * @since    JDK5.0,
043     */
044    public class Daemon_Report extends HybsTimerTask {
045            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
046            private static final String VERSION = "5.7.0.4 (2013/11/29)" ;
047    
048            // 3.7.0.0 (2005/01/18) è¤?•°åŒæ™‚ãƒ??モン時ã?ã€åŒä¸?¸³ç¥¨IDã¯å‡¦ç?§ããªã??
049            // 実行中ã®å¸³ç¥¨ID ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã€static Map
050            private static final Map<String,String> USE_LISTID = new HashMap<String,String>();
051    
052            // 3.8.5.0 (2006/03/06) EXCELをオープンã™ã‚‹ãƒ•ァイルåã«è¦æ±‚番å·ã‚’使ã??åˆã?ã€true
053            private static final boolean EXCEL_NAME_USE_YKNO = HybsSystem.sysBool( "REPORT_EXCEL_NAME_USE_YKNO" );
054    
055            // 5.2.0.0 (2010/09/01) Ver4互æ›ãƒ¢ãƒ¼ãƒ‰å¯¾å¿?
056            private static final String OUT_FILE = HybsSystem.sysBool( "VER4_COMPATIBLE_MODE" ) ? "OUTFILE" : "OUT_FILE";
057            private static final String OUT_DIR = HybsSystem.sysBool( "VER4_COMPATIBLE_MODE" ) ? "OUTDIR" : "OUT_DIR";
058    
059            // 3.7.0.0 (2005/01/18) GE53 ã« DMN_GRP追åŠ?«ã‚ˆã‚‹ã€æ¤œç´¢æ¡ä»¶ã®å¤‰æ›´
060            // 5.1.0.0 (2009/11/04) OUTDIR �OUT_DIR , OUTFILE �OUT_FILE
061            // 5.2.0.0 (2010/09/01) Ver4互æ›ãƒ¢ãƒ¼ãƒ‰å¯¾å¿?
062            private static final String GE50_SELECT =
063    //              "SELECT A.SYSTEM_ID,A.YKNO,A.GROUPID,A.LISTID,A.JOKEN,A.OUT_DIR,A.OUT_FILE,A.USRSET" +
064                    "SELECT A.SYSTEM_ID,A.YKNO,A.GROUPID,A.LISTID,A.JOKEN,A."+OUT_DIR+",A."+OUT_FILE+",A.USRSET" +
065                    " FROM GE50 A,GE53 B" +
066                    " WHERE A.SYSTEM_ID = B.SYSTEM_ID" +
067                    " AND A.JOKEN = B.JOKEN" +
068                    " AND A.FGJ = '1'" +
069                    " AND B.FGJ = '1'" +
070                    " AND A.FGKAN = '1'" ;
071    
072            private ReportProcessing  rc    = null;
073    
074            //       3.5.4.9 (2004/02/25) メãƒ?‚»ãƒ¼ã‚¸å‡ºåŠ›æ™‚ã®ãƒ«ãƒ¼ãƒ—カウンãƒ?を追åŠ?
075            private int                     loopCnt         = 0;
076            private static final int LOOP_COUNTER = 24;             // カウンタã‚?4回ã«è¨­å®?
077    
078            // 3.7.0.0 (2005/01/18) GE53 ã« DMN_GRP追åŠ?«ã‚ˆã‚‹ã€æ¤œç´¢æ¡ä»¶ã®å¤‰æ›´
079            private String GE_SELECT = null;
080    
081            // 3.8.5.0 (2006/03/06) プリンタIDãŒã?引数ã‹ã‚‰æ¸¡ã•れるå?åˆã?対å¿?
082            private String PRTID    = null;
083            // 3.8.5.0 (2006/03/06) ãƒ??モンåを設定ã—ã¾ã™ã?
084            private String DMN_NAME = null;
085            // 3.8.5.0 (2006/03/06) ãƒ?ƒãƒ?‚°ç”¨ã®ãƒ•ラグを追åŠ?—ã¾ã™ã?
086            private boolean debug = false;          // å°æ–‡å­—ã«ä¿®æ­£
087    
088            // 3.8.5.3 (2006/06/30) タイマã?タスクãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れãŸå?åˆã?åœæ­¢ãƒ•ラグ
089            private boolean running = true;
090    
091            /** コãƒã‚¯ã‚·ãƒ§ãƒ³ã«ã‚¢ãƒ—リケーションæƒ??を追記ã™ã‚‹ã‹ã©ã?‹æŒ?®?*/
092            public static final boolean USE_DB_APPLICATION_INFO  = HybsSystem.sysBool( "USE_DB_APPLICATION_INFO" ) ;
093    
094            // 3.8.7.0 (2006/12/15) アクセスログå–å¾—ã?為,ApplicationInfoオブジェクトを設å®?
095            private ApplicationInfo appInfo;
096            private final String DBID = HybsSystem.sys( "RESOURCE_DBID" );          // 5.5.5.1 (2012/08/07) リソース系DBID 付ã‘忘れ対å¿?
097    
098            /**
099             * ã“ã?タイマã?タスクã«ã‚ˆã£ã¦åˆæœŸåŒ–ã•れるアクションã§ã™ã?
100             * パラメータを使用ã—ãŸåˆæœŸåŒ–を行ã„ã¾ã™ã?
101             *
102             * @og.rev 3.6.0.7 (2004/11/12) æ–°è¦è¿½åŠ?
103             * @og.rev 3.7.0.0 (2005/01/18) 帳票定義マスタ(GE54)ã‚’å‚ç…§ã™ã‚‹ã‚ˆã†ã«ä»•様変更
104             * @og.rev 3.8.7.0 (2006/12/15) アクセスログå–å¾—ã?為,ApplicationInfoオブジェクトを設å®?
105             * @og.rev 4.0.1.0 (2007/12/19) GE50ã®æ¤œç´¢é ?‚’シスãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã§è¨­å®šå¯èƒ½ã«ã™ã‚‹
106             */
107            @Override
108            public void initDaemon() {
109    
110                    // 3.7.0.0 (2005/01/18) GE50, GE54 ã® USRUPD ã«ã€ãƒ‡ãƒ¼ãƒ¢ãƒ³åã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
111                    // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
112    
113                    // 3.8.5.0 (2006/03/06) ãƒ??モンåを設定ã—ã¾ã™ã?
114                    DMN_NAME = getName();
115    
116                    StringBuilder buf = new StringBuilder();
117                    buf.append( GE50_SELECT );
118    
119                    // SYSTEM_ID ã¯ã€æŒ‡å®šãŒãªã‘れã°ã€å?件検索対象ã«ãªã‚Šã¾ã™ã?
120                    String systemId = getValue( "SYSTEM_ID" );
121                    if( ! StringUtil.isNull( systemId ) ) {
122    //              if( systemId != null && systemId.trim().length() > 0 ) {
123                            buf.append( " AND A.SYSTEM_ID='" ).append( systemId ).append( "'" );
124                    }
125    
126                    // 3.8.5.0 (2006/03/06) DMN_GRP ã¯ã€å¿??æŒ?®?
127                    // 5.1.9.0 (2010/08/01) Avoid if (x != y) ..; else ..;
128                    String dmnGroup = getValue( "DMN_GRP" );
129                    if( StringUtil.isNull( dmnGroup ) ) {
130                            String errMsg = "ãƒ??モングループã?å¿??æŒ?®šã§ã™ã?" ;
131                            throw new HybsSystemException( errMsg );
132                    }
133                    else {
134                            buf.append( " AND B.DMN_GRP='" ).append( dmnGroup ).append( "'" );
135                    }
136    
137                    // 3.8.5.0 (2006/03/06) GE50 ã®æ¤œç´¢æ¡ä»¶ã«ã€MODBASE 㨠MODNO を使用ã™ã‚‹ã€?
138                    // ãƒ??モン起動時㫠æœ?¤§æ•°(MODBASE)ã¨ä½™ã‚Šç•ªå·(MODNO)を渡ã—ã¾ã™ã?
139                    // æœ?¤§æ•°(MODBASE)ã‚’å?ã«ã€æ¤œç´¢æ™‚ã«ã€YKNOã®ä½™ã‚Šã‚’求ã‚ã€ã“れãŒã€?
140                    // 引数ã®ä½™ã‚Šç•ªå·(MODNO)ã¨ä¸??ã™ã‚‹å ´åˆã?ã¿ã€å?ç?‚’ã—ã¾ã™ã?
141                    String modBase  = StringUtil.nval( getValue( "MODBASE" ),null );
142                    String modNo    = StringUtil.nval( getValue( "MODNO" ),null );
143                    if( modBase != null && modNo != null ) {
144                            buf.append( " AND MOD(A.YKNO," ).append( modBase ).append( ")=" ).append( modNo );
145                    }
146    
147                    // 3.8.5.0 (2006/03/06) PRTID ãŒæŒ‡å®šã•れã¦ã?‚Œã°ã€ãã®å€¤ã‚’使用ã™ã‚‹ã€‚ãªã‘れ㰠NULL
148                    PRTID = StringUtil.nval( getValue( "PRTID" ), null );
149    
150                    // 3.8.5.0 (2006/03/06) PRT_GRP ãŒæŒ‡å®šã•れã¦ã?‚Œã°ã€æŒ¯åˆ?¡ä»¶æ¤œç´¢æ™‚ã«ä½¿ç”¨ã™ã‚‹ã€?
151                    String prtGgrp = getValue( "PRT_GRP" );
152                    if( ! StringUtil.isNull( prtGgrp ) ) {
153    //              if( prtGgrp != null && prtGgrp.trim().length() > 0 ) {
154                            buf.append( " AND B.PRT_GRP='" ).append( prtGgrp ).append( "'" );
155                    }
156    
157    //              buf.append( " ORDER BY A.SYSTEM_ID,A.LISTID,A.GROUPID,A.YKNO
158                    buf.append( " ORDER BY " ); // 4.0.1.0 (2007/12/19)
159                    buf.append( HybsSystem.sys( "REPORT_DAEMON_ORDER_BY" ) );
160    
161                    GE_SELECT = buf.toString() ;
162    
163                    // 3.8.5.0 (2006/03/06) ãƒ?ƒãƒ?‚°ç”¨ã®ãƒ•ラグを追åŠ?—ã¾ã™ã?
164                    debug = StringUtil.nval( getValue( "DEBUG" ),debug ) ;
165    
166                    if( debug ) {
167                            System.out.println( "DMN_NAME=[" + DMN_NAME + "]" );
168                            System.out.println( "MODNO=[" + modNo + "]" );
169                            System.out.println( "QUERY=[" + GE_SELECT + "]" );
170                            System.out.println( "EXCEL_NAME_USE_YKNO=[" + EXCEL_NAME_USE_YKNO + "]" );
171                    }
172    
173                    // 3.8.7.0 (2006/12/15) アクセスログå–å¾—ã?為,ApplicationInfoオブジェクトを設å®?
174                    if( USE_DB_APPLICATION_INFO ) {
175                            appInfo = new ApplicationInfo();
176                            // ユーザーID,IPアドレス,ホストå
177                            appInfo.setClientInfo( systemId,HybsSystem.HOST_ADRS,HybsSystem.HOST_NAME );
178                            // ç”»é¢ID,æ“ä½?プログラãƒ?D
179                            appInfo.setModuleInfo( "ReportDaemon",PRTID,DMN_NAME );
180                    }
181                    else {
182                            appInfo = null;
183                    }
184            }
185    
186            /**
187             * タイマã?タスクã®ãƒ??モン処ç??é–‹å§‹ã?イントã§ã™ã?
188             *
189             * @og.rev 3.5.2.0 (2003/10/20) vals 変数をã?ローカルã«ç§»å‹?
190             * @og.rev 3.5.4.8 (2004/02/23) タイãƒ?‚¹ã‚¿ãƒ³ãƒ—ã‚’ã€?¼‘ï¼å›žã«?‘回ã¨ã™ã‚‹ã€?
191             * @og.rev 3.6.0.0 (2004/09/17) タイãƒ?‚¹ã‚¿ãƒ³ãƒ—ã‚’ã€?¼’4回ã«?‘回ã¨ã™ã‚‹ã€?
192             * @og.rev 3.6.1.0 (2005/01/05) tyr ??catch ã‚?Exception ã‹ã‚‰ Throwable ã«å¤‰æ›´ã€?
193             * @og.rev 3.7.0.0 (2005/01/18) è¤?•°åŒæ™‚ãƒ??モンã§ã‚‚ã?åŒä¸?¸³ç¥¨IDã¯å‡¦ç?§ããªã?‚ºã€ã‚¹ã‚­ãƒ??ã—ã¾ã™ã?
194             * @og.rev 3.7.0.4 (2005/03/18) エラー発生時㫠vals ã?null ãªã‚‰ã?HybsSystemException ã‚?throw ã™ã‚‹ã€?
195             * @og.rev 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
196             * @og.rev 3.8.0.0 (2005/06/07) EXCEL å–込時ã?完æ?フラグã¯ã€FG_DBIN ã¨ã—ã¾ã™ã?
197             * @og.rev 3.8.0.0 (2005/06/07) rc.execute() å®Ÿè¡Œçµæžœã‚?boolean ã§ã¯ãªãã?æ–?­—å?(FGKAN_XX)ã§è¿”ã—ã¾ã™ã?
198             * @og.rev 3.8.5.0 (2006/03/06) EXCELファイルåã«è¦æ±‚番å·ã‚’使ã??åˆã?ã€å¸³ç¥¨IDã§ã®æŽ’他制御ã¯ä¸è¦ã?
199             * @og.rev 3.8.5.2 (2006/05/31) DEBUG æƒ??ã®å¼·åŒ?
200             * @og.rev 3.8.6.0 (2006/06/30) タイマã?タスクãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れãŸå?åˆã?処ç?‚’追åŠ?running フラグ)
201             * @og.rev 3.8.7.0 (2006/12/15) アクセスログå–å¾—ã?為,ApplicationInfoオブジェクトを設å®?
202             * @og.rev 5.3.0.0 (2010/12/01) エラーãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã‚’修正
203             * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付ã‘忘れ対ç­?
204             * @og.rev 5.7.0.4 (2013/11/29) listIdã‚’GE50Accessã«æ¸¡ã™ã‚ˆã?«ã™ã‚‹
205             */
206            @Override
207            protected void startDaemon() {
208                    if( loopCnt % LOOP_COUNTER == 0 ) {
209                            loopCnt = 1;
210                            System.out.println();
211                            System.out.print( toString() + " " + new Date()  + " " );
212                    }
213                    else {
214                            System.out.print( "." );
215                            loopCnt++ ;
216                    }
217    
218                    // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
219                    GE50Access ge50 = null ;
220    
221                    int row = 0;
222                    String[][] vals  = null;
223                    try {
224    //                      vals = DBUtil.dbExecute( GE_SELECT,null,appInfo );                      // 3.8.7.0 (2006/12/15)
225                            vals = DBUtil.dbExecute( GE_SELECT,null,appInfo, DBID );        // 5.5.5.1 (2012/08/07)
226                            if( vals != null && vals.length > 0 ) {
227    
228                                    // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
229                                    // 毎回 オブジェクトを構築ã—ã¾ã™ã?登録日付ãŒåˆæœŸåŒ–ã•れã¾ã™ã?
230                                    ge50 = new GE50Access( null,null,DMN_NAME ) ;           // 3.8.5.0 (2006/03/06)
231    
232                                    if( rc == null ) { rc = new ReportProcessing(); }
233                                    // 3.8.6.0 (2006/06/30) タイマã?タスクãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れãŸå?åˆã?処ç?‚’追åŠ?running フラグ)
234                                    for( row=0; running && row<vals.length; row++ ) {
235                                            // 3.7.0.0 (2005/01/18) 使用中ã®å¸³ç¥¨IDã®ãƒã‚§ãƒ?‚¯ã¨ã€ä½¿ç”¨æ™‚ã?登録
236                                            String systemId = vals[row][0] ;
237                                            String ykno     = vals[row][1] ;
238                                            String listId   = vals[row][3] ;
239                                            // 3.8.5.0 (2006/03/06) EXCELファイルåã«è¦æ±‚番å·ã‚’使ã??åˆã?ã€å¸³ç¥¨IDã§ã®æŽ’他制御ã¯ä¸è¦ã?
240                                            if( ! EXCEL_NAME_USE_YKNO ) {
241                                                    synchronized( USE_LISTID ) {
242                                                            if( USE_LISTID.get( listId ) != null ) {
243                                                                    continue;       // 使用中ãªã‚‰ã?飛ã?ã™ã?
244                                                            }
245                                                            else {
246                                                                    USE_LISTID.put( listId,"DUMMY" );
247                                                            }
248                                                    }
249                                            }
250    
251                                            // ãƒ?ƒãƒ?‚°æƒ??ã‚’å?力ã—ã¾ã™ã?
252                                            if( debug ) {
253                                                    System.out.println();
254                                                    System.out.print( "[" + DMN_NAME + "]:[" + ykno + "] START = " );
255                                                    System.out.println( new Date() );
256                                            }
257    
258                                            // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
259                                            ge50.setSystemId( systemId );
260                                            ge50.setYkno( ykno );
261                                            ge50.updateGE50( GE50Access.FG_RUN );
262                                            
263                                            ge50.setListId( listId ); // 5.7.0.4 (2013/11/29)
264    
265                                            // system_id,ykno,groupid,listid,joken,outdir,outfile,usrset
266                                            rc.setSystemId( systemId     );
267                                            rc.setYkno(     ykno         );
268                                            rc.setGroupId(  vals[row][2] );
269                                            rc.setListId(   listId       );
270                                            rc.setJoken(    vals[row][4] );
271    //                                      rc.setPrtid(    PRTID        ); // 3.8.5.0 (2006/03/06) PRTIDを使用ã™ã‚‹ã€?
272                                            rc.setPrtId(    PRTID        ); // 4.3.4.4 (2009/01/01) メソãƒ?ƒ‰å変更
273                                            rc.setOutDir(   vals[row][5] );
274                                            rc.setOutFile(  vals[row][6] );
275                                            rc.setDebug(    debug        ); // 3.8.5.0 (2006/03/06) DEBUGを追�?
276    
277                                            // 3.8.0.0 (2005/06/07) å®Ÿè¡Œçµæžœã‚?boolean ã§ã¯ãªãã?æ–?­—å?(FGKAN_XX)ã§è¿”ã—ã¾ã™ã?
278                                            String fgkan = rc.execute();
279                                            if( fgkan == null ) {
280                                                    fgkan = GE50Access.FG_ERR2 ;
281                                                    String errMsg = rc.getErrMsg();
282                                                    // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
283                                                    ge50.insertErrorGE56( errMsg );
284                                            }
285    
286                                            // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
287                                            ge50.updateGE50( fgkan );
288    
289                                            rc.clear();
290                                            // 3.8.5.0 (2006/03/06) EXCELファイルåã«è¦æ±‚番å·ã‚’使ã??åˆã?ã€å¸³ç¥¨IDã§ã®æŽ’他制御ã¯ä¸è¦ã?
291                                            if( ! EXCEL_NAME_USE_YKNO ) {
292                                                    // 3.7.0.0 (2005/01/18) 使用中ã®å¸³ç¥¨IDã®å‰Šé™¤
293                                                    synchronized( USE_LISTID ) {
294                                                            USE_LISTID.remove( listId );
295                                                    }
296                                            }
297    
298                                            // ãƒ?ƒãƒ?‚°æƒ??ã‚’å?力ã—ã¾ã™ã?
299                                            if( debug ) {
300                                                    System.out.println();
301                                                    System.out.print( "[" + DMN_NAME + "]:[" + ykno + "] END = " );
302                                                    System.out.println( new Date() );
303                                            }
304                                    }
305                            }
306                    }
307    //              catch( Throwable ex ) {         // 3.6.1.0 (2005/01/05)
308    //                      String errMsg = StringUtil.stringStackTrace( ex ) ;
309    //                      LogWriter.log( errMsg );
310    //
311    //                      // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
312    //                      if( ge50 != null ) {
313    //                              ge50.insertErrorGE56( errMsg );
314    //                              ge50.updateGE50( GE50Access.FG_ERR1 );
315    //                      }
316    //
317    //                      // 3.7.0.4 (2005/03/18) vals ã?null ãªã‚‰ã?DBæŽ¥ç¶šã‚¨ãƒ©ãƒ¼ãŒæ¿?Žš
318    //                      if( vals == null ) { throw new HybsSystemException( ex ); }
319    //
320    //                      if( ! EXCEL_NAME_USE_YKNO ) {
321    //                              // 3.7.0.0 (2005/01/18) エラー発生時ã®ã€ä½¿ç”¨ä¸­ã®å¸³ç¥¨IDã®å‰Šé™¤
322    //                              synchronized( USE_LISTID ) {
323    //                                      USE_LISTID.remove( vals[row][3] );              // listId
324    //                              }
325    //                      }
326    //
327    //                      rc = null;
328    //              }
329                    // 5.3.0.0 (2010/12/01) エラーãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã‚’修正
330                    catch( Throwable ex ) {         // 3.6.1.0 (2005/01/05)
331                            rc = null;
332    
333                            String errMsg = StringUtil.stringStackTrace( ex ) ;
334                            System.out.println( errMsg );
335                            LogWriter.log( errMsg );
336    
337                            if( ! EXCEL_NAME_USE_YKNO ) {
338                                    // 3.7.0.0 (2005/01/18) エラー発生時ã®ã€ä½¿ç”¨ä¸­ã®å¸³ç¥¨IDã®å‰Šé™¤
339                                    synchronized( USE_LISTID ) {
340                                            USE_LISTID.remove( vals[row][3] );              // listId
341                                    }
342                            }
343    
344                            // 3.7.1.1 (2005/05/31) GE50Access を使用ã—ã¦ã€DB登録を行ã„ã¾ã™ã?
345                            if( ge50 != null ) {
346                                    ge50.insertErrorGE56( errMsg );
347                                    ge50.updateGE50( GE50Access.FG_ERR1 );
348                            }
349    
350                            // 3.7.0.4 (2005/03/18) vals ã?null ãªã‚‰ã?DBæŽ¥ç¶šã‚¨ãƒ©ãƒ¼ãŒæ¿?Žš
351                            if( vals == null ) {
352                                    errMsg += "(vals == null)" ;
353                                    System.out.println( errMsg );
354                                    LogWriter.log( errMsg );
355                                    throw new HybsSystemException( ex );
356                            }
357                    }
358            }
359    
360            /**
361             * ã“ã?タイマã?タスクã®cancel() メソãƒ?ƒ‰ã‚’オーãƒã?ライドã—ã¾ã™ã?
362             * HybsTimerTaskManager#cancelTask( int ) を実行ã—ã¾ã™ã?
363             *
364             * @og.rev 3.8.5.3 (2006/06/30) æ–°è¦è¿½åŠ?
365             *
366             * @return      スケジュールã•れã¦ã?‚‹ 1 回以上実行ã•れãªã??åˆã« true
367             * @see java.util.TimerTask#cancel()
368             */
369            @Override
370            public boolean cancel() {
371                    running = false;
372                    return super.cancel();
373            }
374    }