    001package org.opengion.hayabusa.io;
    002
    003import javax.servlet.http.HttpSession;
    004
    005import org.opengion.hayabusa.common.HybsSystemException;
    006
    007/**
    008 * クラウド別のクラス生成
    009 *
    010 * @og.rev 5.9.25.0 (2017/10/06) 新規作成
    011 * @og.group
    012 *
    013 * @version 5.0
    014 * @author T.OTA
    015 * @sinse JDK7.0
    016 */
    017public class StorageAPIFactory {
    018        /**
    019         * デフォルトコンストラクタを private 化しておきます。
    020         */
    021        private StorageAPIFactory(){};
    022
    023        /**
    024         * 指定されたクラウド対象クラスを生成する
    025         *
    026         * @param storage クラウド種別
    027         * @param container コンテナ
    028         * @param hsession セッション
    029         * @return StorageAPIを継承したクラス
    030         */
    031        public static StorageAPI newStorageAPI(String storage, String container, HttpSession hsession){
    032                StorageAPI storageapi;
    033                try{
    034                        // StorageAPIの実装ｸﾗｽをstorage別に生成する
    035                        Object[] args = new Object[]{container, hsession};
    036                        storageapi = (StorageAPI)Class.forName( "org.opengion.plugin.cloud.StorageAPI_" + storage )
    037                                        .getConstructor(String.class, HttpSession.class)
    038                                        .newInstance(args);
    039                }catch(Exception e){
    040                        StringBuilder sbErrMsg = new StringBuilder();
    041                        sbErrMsg.append("ｸﾗｳﾄﾞｽﾄﾚｰｼﾞ用のｸﾗｽ生成に失敗しました。storage:");
    042                        sbErrMsg.append(storage);
    043                        sbErrMsg.append(" container:");
    044                        sbErrMsg.append(container);
    045                        sbErrMsg.append(" errInfo:");
    046                        sbErrMsg.append(e);
    047                        sbErrMsg.append(" errCause:");
    048                        sbErrMsg.append(e.getCause());
    049                        throw new HybsSystemException(sbErrMsg.toString());
    050                }
    051                return storageapi;
    052        }
    053}