#
#= 統一IF用
#
module Comm::Module::Controller::UnifiedIF
  # show 関連
  def show
    result = find_one_using_sqlsearch.ext_hashfy.first
    logger.debug(result.inspect)
    merge_h = {}
    arrange_result(merge_h, result)
    add_to_extra_table_columns(merge_h, result) if respond_to?(:add_to_extra_table_columns)
    
    respond_to do |format|
      format.ext_json do
        logger.debug(merge_h.inspect)
        render :json => {:success => true, :data => merge_h}.to_json
      end
    end
  rescue => e
    logger.error(e.message + "\n" + e.backtrace.join("\n"))
    render :json => Comm::Tool::Json.result_json(false, 'You might specify Undefiend ID.')
  end
  
  def find_one_using_sqlsearch
    str_cols, str_tab, str_vals = @search_cls.new.get_columns_and_tables(nil, nil, nil, nil)
    str_sql = ['SELECT']
    str_sql << str_cols
    str_sql << add_show_select_sentence if respond_to?(:add_show_select_sentence)
    str_sql << str_tab
    str_sql << get_show_where_clause
    result = @mcls.find_by_sql(str_sql.join(' '))
    return result
  end
  
  def arrange_result(merging_hash, org_hash, target_class=@mcls)
    main_columns = target_class.column_names
    underscored_class_name = target_class.name.underscore
    main_columns.each do |col|
      merging_hash["#{underscored_class_name}[#{col}]"] = org_hash[col]
    end
  end
  
  def count_all
    result = 0
    ret = @mcls.connection.execute('SELECT FOUND_ROWS()')
    ret.each {|x| result = x.first }
    return result
  end
  
  # override 
  # 付加情報（モデルのテーブル以外のテーブルの情報）がparamsにあるので
  # 継承先で分解しつつ保存などしないとダメです
  def get_table_params
    @table_params = params
  end
end
