    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 final 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(final String storage, final String container, final HttpSession hsession){
    032                StorageAPI storageapi;
    033                try{
    034                        // StorageAPIの実装ｸﾗｽをstorage別に生成する
    035                        final 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( final Exception ex ) {
    040                        final StringBuilder sbErrMsg = new StringBuilder()
    041                                .append("ｸﾗｳﾄﾞｽﾄﾚｰｼﾞ用のｸﾗｽ生成に失敗しました。storage:").append(storage)
    042                                .append(" container:").append(container)
    043                                .append(" errInfo:"  ).append(ex)
    044                                .append(" errCause:" ).append(ex.getCause());
    045                        throw new HybsSystemException(sbErrMsg.toString());
    046                }
    047                return storageapi;
    048        }
    049}