    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.fukurou.business;          // package変更 fukurou.util → fukurou.business
    017
    018// import org.opengion.fukurou.business.BizLogicHelper;
    019import org.opengion.fukurou.util.HybsLoader;
    020import org.opengion.fukurou.util.HybsLoaderFactory;
    021import org.opengion.fukurou.util.HybsLoaderConfig;
    022import org.opengion.fukurou.db.TransactionImpl;
    023
    024/**
    025 * bizLogicファイル共通クラス
    026 * bizLogicファイルを処理するための、
    027 * 共通クラスです。
    028 *
    029 * @og.rev 5.10.15.2 (2019/09/20) 新規作成
    030 *
    031 * @version 5
    032 * @author oota
    033 * @since JDK7
    034 */
    035public final class BizUtil {
    036
    037        /**
    038         * private コンスタクター
    039         * インスタンスは生成せずに、利用します。
    040         */
    041        private BizUtil() {     }
    042
    043        /**
    044         * bizLogicファイルの実行 bizLogicファイルをホットデプロイして、
    045         * 処理を実行します。
    046         *
    047         * @og.rev 7.0.6.4 (2019/11/29) setTransaction ﾒｿｯﾄﾞ内で、dbid を使っているので、先に設定します。
    048         *
    049         * @param srcDir ソースディレクトリ
    050         * @param classDir クラスディレクトリ
    051         * @param isAutoCompile オートコンプリートフラグ
    052         * @param isHotDeploy ホットデプロイフラグ
    053         * @param classPath クラスパス
    054         * @param systemId システムID
    055         * @param logicName ロジック名
    056         * @param keys キーリスト
    057         * @param vals 値リスト
    058         * @throws Throwable エラー情報
    059         */
    060        public static void actBizLogic(final String srcDir, final String classDir, final boolean isAutoCompile, final boolean isHotDeploy, final String classPath,
    061                        final String systemId, final String logicName, final String[] keys, final String[] vals) throws Throwable {
    062
    063                // bizクラスファイルのホットデプロイ
    064                final HybsLoader ldr = HybsLoaderFactory
    065                                .getLoader(new HybsLoaderConfig(srcDir, classDir, isAutoCompile, isHotDeploy, classPath));
    066
    067                final BizLogicHelper helper = new BizLogicHelper(logicName, ldr);
    068
    069                // 7.0.6.4 (2019/11/29) try-with-resources文
    070                final TransactionImpl tran = new TransactionImpl(null);
    071//              helper.setTransaction(tran);
    072//              helper.setTransaction(tran);
    073//              helper.setKeys(keys);
    074//              helper.setVals(vals);
    075
    076                try {
    077                        helper.setDbid(systemId);                               // 7.0.6.4 (2019/11/29) setTransaction ﾒｿｯﾄﾞ内で、dbid を使っているので、先に設定します。
    078                        helper.setTransaction(tran);
    079                        helper.setKeys(keys);
    080                        helper.setVals(vals);
    081
    082                        // bizLogic実行
    083                        helper.exec();
    084
    085                        // 正常に実行された場合
    086                        tran.commit();
    087                        tran.finish();
    088//              }catch(Throwable e) {
    089                } catch( final Throwable ex ) {
    090                        // エラー発生時
    091                        tran.rollback();
    092//                      throw  e;
    093                        throw  ex;
    094                } finally {
    095                        if (tran != null) {
    096                                tran.close();
    097//                              tran.realClose();
    098                        }
    099                }
    100        }
    101}