Class: GoodData::LCM2::BaseAction

Inherits:
Object
  • Object
show all
Extended by:
Dsl::Dsl
Defined in:
lib/gooddata/lcm/actions/base_action.rb

Constant Summary collapse

SYNC_FAILED_LIST =
'sync_failed_list'.to_sym
FAILED_PROJECTS =
'failed_projects'.to_sym
FAILED_CLIENTS =
'failed_clients'.to_sym
FAILED_SEGMENTS =
'failed_segments'.to_sym

Constants included from Dsl::Dsl

Dsl::Dsl::DEFAULT_OPTS, Dsl::Dsl::PARAMS, Dsl::Dsl::TYPES

Class Method Summary collapse

Methods included from Dsl::Dsl

define_params, define_type, process

Class Method Details

.add_failed_client(client_id, message, error_action, params) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# 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) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 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) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
# 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) ⇒ Object

Add new clients to project client mapping

Parameters:

  • project_id (String)

    project identify will be added to mapping

  • client_id (String)

    client identify will be added to mapping

  • segment_id (String)

    segment identify will be added to mapping

  • params (Hash)

    the hash contains list of parameters and values



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# 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) ⇒ Object



26
27
28
# 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) ⇒ Object



48
49
50
# 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) ⇒ Object



44
45
46
# File 'lib/gooddata/lcm/actions/base_action.rb', line 44

def continue_on_error(params)
  Helpers.continue_on_error(params)
end


40
41
42
# File 'lib/gooddata/lcm/actions/base_action.rb', line 40

def print_result(_params)
  true
end

.process_failed_project(project_id, failed_message, failed_projects, continue_on_error) ⇒ Object



127
128
129
130
131
132
133
134
# 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) ⇒ Object



136
137
138
139
140
# 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) ⇒ Object



146
147
148
# 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) ⇒ Object



142
143
144
# 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) ⇒ Object



150
151
152
# 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) ⇒ Object

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



33
34
35
36
37
38
# 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