class GoodData::LCM2::BaseAction

Constants

FAILED_CLIENTS
FAILED_PROJECTS
FAILED_SEGMENTS
SYNC_FAILED_LIST

Public Class Methods

add_failed_client(client_id, message, error_action, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 71
def add_failed_client(client_id, message, error_action, params)
  if collect_synced_status(params) && !sync_failed_client(client_id, params)
    sync_failed_list = sync_failed_list(params)
    client_project_mappings = sync_failed_list[:client_project_mappings]
    client_project_mapping = client_project_mappings ? client_project_mappings[client_id.to_sym] : nil
    project_id = client_project_mapping ? client_project_mapping[:project_id] : nil
    segment_id = client_project_mapping ? client_project_mapping[:segment_id] : nil

    failed_detailed_client = {
      project_id: project_id,
      client_id: client_id,
      segment: segment_id,
      message: message,
      action: error_action
    }
    add_failed_detail(params, failed_detailed_client, sync_failed_list)
  end
end
add_failed_project(project_id, message, failed_action, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 52
def add_failed_project(project_id, message, failed_action, params)
  if collect_synced_status(params) && !sync_failed_project(project_id, params)
    sync_failed_list = sync_failed_list(params)
    project_client_mappings = sync_failed_list[:project_client_mappings]
    project_client_mapping = project_client_mappings ? project_client_mappings[project_id.to_sym] : nil
    client_id = project_client_mapping ? project_client_mapping[:client_id] : nil
    segment_id = project_client_mapping ? project_client_mapping[:segment_id] : nil

    failed_detailed_project = {
      project_id: project_id,
      client_id: client_id,
      segment: segment_id,
      message: message,
      action: failed_action
    }
    add_failed_detail(params, failed_detailed_project, sync_failed_list)
  end
end
add_failed_segment(segment_id, message, error_action, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 90
def add_failed_segment(segment_id, message, error_action, params)
  if collect_synced_status(params) && !sync_failed_segment(segment_id, params)
    sync_failed_list = sync_failed_list(params)
    failed_detailed_segment = {
      project_id: nil,
      client_id: nil,
      segment: segment_id,
      message: message,
      action: error_action
    }
    add_failed_detail(params, failed_detailed_segment, sync_failed_list, true)
  end
end
add_new_clients_to_project_client_mapping(project_id, client_id, segment_id, params) click to toggle source

Add new clients to project client mapping

@param [String] project_id project identify will be added to mapping @param [String] client_id client identify will be added to mapping @param [String] segment_id segment identify will be added to mapping @param [Hash] params the hash contains list of parameters and values

# File lib/gooddata/lcm/actions/base_action.rb, line 110
def add_new_clients_to_project_client_mapping(project_id, client_id, segment_id, params)
  if collect_synced_status(params)
    sync_failed_list = sync_failed_list(params)
    client_project_mappings = sync_failed_list[:client_project_mappings]
    project_client_mappings = sync_failed_list[:project_client_mappings]
    client_project_mappings[client_id.to_sym] = {
      project_id: project_id,
      segment_id: segment_id
    } if client_project_mappings

    project_client_mappings[project_id.to_sym] = {
      client_id: client_id,
      segment_id: segment_id
    } if project_client_mappings
  end
end
check_params(specification, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 26
def check_params(specification, params)
  Helpers.check_params(specification, params)
end
collect_synced_status(params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 48
def collect_synced_status(params)
  Helpers.collect_synced_status(params)
end
continue_on_error(params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 44
def continue_on_error(params)
  Helpers.continue_on_error(params)
end
print_result(_params) click to toggle source
process_failed_project(project_id, failed_message, failed_projects, continue_on_error) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 127
def process_failed_project(project_id, failed_message, failed_projects, continue_on_error)
  fail(failed_message) unless continue_on_error

  failed_projects << {
    project_id: project_id,
    message: failed_message
  }
end
process_failed_projects(failed_projects, failed_action, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 136
def process_failed_projects(failed_projects, failed_action, params)
  failed_projects.each do |failed_project|
    add_failed_project(failed_project[:project_id], failed_project[:message], failed_action, params)
  end
end
sync_failed_client(client_id, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 146
def sync_failed_client(client_id, params)
  collect_synced_status(params) && params[SYNC_FAILED_LIST][FAILED_CLIENTS].include?(client_id)
end
sync_failed_project(project_id, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 142
def sync_failed_project(project_id, params)
  collect_synced_status(params) && params[SYNC_FAILED_LIST][FAILED_PROJECTS].include?(project_id)
end
sync_failed_segment(segment_id, params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 150
def sync_failed_segment(segment_id, params)
  collect_synced_status(params) && params[SYNC_FAILED_LIST][FAILED_SEGMENTS].include?(segment_id)
end
without_check(specification, params) { || ... } click to toggle source

This method is used to enable the possibility to read keys of params object which are not specified in the specification constant typically in case when method access params dynamically based on user input

# File lib/gooddata/lcm/actions/base_action.rb, line 33
def without_check(specification, params)
  params.clear_filters # disables params validation
  result = yield
  params.setup_filters(specification) # enables params validation
  result
end

Private Class Methods

add_failed_detail(params, failed_detailed_project, sync_failed_list, ignore_segment = false) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 156
def add_failed_detail(params, failed_detailed_project, sync_failed_list, ignore_segment = false)
  params.gdc_logger&.warn failed_detailed_project[:message]
  sync_failed_list[:failed_detailed_projects] << failed_detailed_project

  if ignore_segment
    add_failed_detail_segment(failed_detailed_project[:segment_id], sync_failed_list)
  else
    add_failed_detail_client(failed_detailed_project[:client_id], failed_detailed_project[:project_id], sync_failed_list)
  end
end
add_failed_detail_client(client_id, project_id, sync_failed_list) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 175
def add_failed_detail_client(client_id, project_id, sync_failed_list)
  sync_failed_list[FAILED_CLIENTS] << client_id if client_id

  sync_failed_list[FAILED_PROJECTS] << project_id if project_id
end
add_failed_detail_segment(segment_id, sync_failed_list) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 181
def add_failed_detail_segment(segment_id, sync_failed_list)
  if segment_id
    sync_failed_list[FAILED_SEGMENTS] << segment_id

    client_project_mappings = sync_failed_list[:client_project_mappings]
    client_project_mappings.each do |client_id, client_project_mapping|
      add_failed_detail_client(client_id, client_project_mapping[:project_id], sync_failed_list) if client_project_mapping[:segment_id] == segment_id
    end
  end
end
sync_failed_list(params) click to toggle source
# File lib/gooddata/lcm/actions/base_action.rb, line 167
def sync_failed_list(params)
  if params.include?(SYNC_FAILED_LIST)
    params[SYNC_FAILED_LIST]
  else
    nil
  end
end