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