class Veritrans::Tercerog::Mdk::MdkJsonQuery

MdkJsonQuery クラス

リクエストDTOから取得するJSON生成用ハッシュの生成を管理するクラス

Constants

DQUOTE_CHAR

ダブルクオート

DQUOTE_CHAR_ESCAPE

ダブルクオートエスケープ文字列

Attributes

name_array[R]

Public Class Methods

new(dto) click to toggle source

コンストラクタ

コンフィグファイルからデータを取得して当クラスを使用できる状態にする。

@param

dto 処理対象Dto

# File tgMdk/lib/tg_mdk/mdk_json_query.rb, line 36
def initialize(dto)
  # コンフィグクラス生成
  config = Veritrans::Tercerog::Mdk::MdkConfig.instance
  # DTOの文字エンコードを取得
  @encode = config[:DTO_ENCODE]
  # JSON生成用ハッシュ作成
  @name_array = to_json_hash(dto)
end

Private Instance Methods

get_attr_value(key, value) click to toggle source

属性値を取得する。

指定した属性値がDTOである場合はJSON形式に変換可能なハッシュに置き換える。

@param

key キー

@param

value 値

@return

属性値

# File tgMdk/lib/tg_mdk/mdk_json_query.rb, line 93
def get_attr_value(key, value)

  if value.nil?
    return nil
  end

  result = nil
  if value.is_a?(String)
    # 設定値が文字列
    if !value.empty?
      result = Veritrans::Tercerog::Mdk::MdkUtils::mdk_encode_from(@encode, value)
    end
  elsif value.is_a?(Array)
    # 設定値が配列
    result = []
    value.each do |element|
      attr_value = get_attr_value(key, element)
      if !attr_value.nil? && !attr_value.empty?
        result << attr_value
      end
    end
  elsif !value.instance_variables.empty?
    # 設定値がオブジェクト
    result = to_json_hash(value)
  else
    # 判定できない無効なクラスが指定されている
    msg = "#{key} is invalid type '#{value.class.name}'"
    Veritrans::Tercerog::Mdk::logger.error(msg)
    raise Veritrans::Tercerog::Mdk::MdkError.new(Veritrans::Tercerog::Mdk::MdkMessage::MA07_INVALID_DTO_VALUE_TYPE, key, value.class.name)
  end

  if result.nil? || result.empty?
    return nil
  end
  return result
end
to_json_hash(dto) click to toggle source

Dtoに設定されたパラメータを取得しJSON生成用ハッシュを生成する

@param

dto 処理対象Dto

@return

JSON生成用ハッシュ

# File tgMdk/lib/tg_mdk/mdk_json_query.rb, line 60
def to_json_hash(dto)

  if dto.nil?
    return {}
  end

  result_hash = {}

  # DTOのインスタンス変数を取得
  dto.instance_variables.each do |name|
    # インスタンス変数の値を取得
    name = name.to_s # for ruby 1.9
    value = dto.instance_variable_get(name)
    attr_name = name.mdk_camelize[1, name.length - 1]
    attr_value = get_attr_value(attr_name, value)

    if !attr_value.nil? && !attr_value.empty?
      result_hash.store(attr_name, attr_value)
    end
  end

  return result_hash
end
value_escape(value) click to toggle source

設定値のエスケープ処理を行う

@param

value 設定値

@return

エスケープ処理後の設定値

# File tgMdk/lib/tg_mdk/mdk_json_query.rb, line 50
def value_escape(value)
  value = value.gsub(DQUOTE_CHAR, DQUOTE_CHAR_ESCAPE)
end