001package org.opengion.fukurou.queue;
002
003import java.util.Locale;
004
005// import org.opengion.fukurou.util.StringUtil;
006
007/**
008 * キュータイプ別の受信クラス生成
009 * 指定されたキュータイプの受信クラスを生成します。
010 *
011 * 下記のキュータイプを指定可能です。
012 * MQ:Active MQ or Amazon MQ
013 * SQS:Amazon SQS。
014 *
015 * @og.group メッセージ連携
016 *
017 * @og.rev 5.10.15.2 (2019/09/20) 新規作成
018 * @og.rev 7.2.9.4 (2020/11/20) コーディングのみ修正
019 *
020 * @version 5
021 * @author oota
022 * @since JDK7
023 *
024 */
025final public class QueueReceiveFactory {
026//      private static final int BUFFER_MIDDLE = 200;
027
028        private static final String QUEUE_CLS = "org.opengion.fukurou.queue.QueueReceive_" ;
029
030        /**
031         * デフォルトコンストラクター
032         * static用クラスのため、クラス生成は不可にします。
033         */
034        private QueueReceiveFactory() {
035        }
036
037        /**
038         * キュー受信クラス生成
039         *
040         * 引数のキュータイプのキュー受信クラスを生成します。
041         * MQ:Apache ActiveMq、amazonMQの場合に設定します。
042         * SQS:Amazon SQSの場合に設定します。
043         *
044         * @param queueType キュータイプ
045         * @return キュータイプのキュー受信クラス
046         */
047        public static QueueReceive newQueueReceive(final String queueType) {
048                try {
049                        // 1. 前処理 大文字変換。queueType が null なら、当然エラーになる。
050                        // 2. 生成クラスの文字列生成
051                        final String cls = QUEUE_CLS + queueType.toUpperCase(Locale.JAPAN);
052
053                        // 3. 対象クラスの生成
054                        return (QueueReceive) Class.forName( cls ).getDeclaredConstructor().newInstance();
055
056                } catch (final Throwable th) {
057                        final String errMsg = "キュー受信クラス生成に失敗しました。"
058                                                        + " queueType =" + queueType ;
059                        throw new RuntimeException( errMsg ,th );
060                }
061
062//              QueueReceive queueReceive = null;
063//              String setQueueType = null;
064//
065//              final StringBuilder path = new StringBuilder(BUFFER_MIDDLE);
066//
067//              // 1. 前処理
068//              // 大文字変換
069//              if (!StringUtil.isNull(queueType)) {
070//                      setQueueType = queueType.toUpperCase(Locale.JAPAN);
071//              }
072//
073//              // 2. 生成クラスの文字列生成
074//              path.append("org.opengion.fukurou.queue.")
075//                      .append("QueueReceive_")
076//                      .append(setQueueType);
077//
078//              try {
079//                      // 3. 対象クラスの生成
080//                      queueReceive = (QueueReceive) Class.forName(path.toString()).newInstance();
081//              } catch (final Throwable th) {
082//                      // キャッチしたエラー情報をスロー
083//                      throw new RuntimeException(th);
084//              }
085//
086//              return queueReceive;
087        }
088}