Class: GoodData::Variable

Inherits:
MdObject show all
Defined in:
lib/gooddata/models/metadata/variable.rb

Constant Summary

Constants inherited from MdObject

MdObject::IDENTIFIERS_CFG, MdObject::MD_OBJ_CTG

Constants included from Mixin::MdIdToUri

Mixin::MdIdToUri::IDENTIFIERS_CFG

Constants included from Mixin::MdObjectIndexer

Mixin::MdObjectIndexer::MD_OBJ_CTG

Instance Attribute Summary

Attributes inherited from Rest::Object

#client, #json, #project

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from MdObject

#==, #add_tag, #browser_uri, #deprecated, #deprecated=, find_replaceable_values, #initialize, #listed?, #project, #reload!, #remove_tag, replace, #replace!, replace_bracketed, replace_quoted, #save, #save_as, #tag_set, #unlisted, #unlisted=, #validate

Methods included from Mixin::MdIdToUri

#identifier_to_uri

Methods included from Mixin::MdObjectIndexer

#[]

Methods included from Mixin::MdObjectQuery

#all, #dependency, #dependency?, #query, #usedby, #usedby?, #using, #using?

Methods included from Mixin::MdFinders

#find_by_identifier, #find_by_tag, #find_by_title, #find_first_by_identifier, #find_first_by_title

Methods included from Mixin::MdObjId

#uri_obj_id

Methods included from Mixin::MdGrantees

#change_permission, #grant, #grantees, #revoke

Methods included from Mixin::MdRelations

#dependency, #dependency?, #usedby, #usedby?, #using, #using?

Methods included from Mixin::ObjId

#obj_id

Methods included from Mixin::Links

#links

Methods inherited from Rest::Resource

#initialize

Methods inherited from Rest::Object

client, default_client, #initialize, #saved?

Methods included from Mixin::DataPropertyReader

#data_property_reader

Methods included from Mixin::DataPropertyWriter

#data_property_writer

Methods included from Mixin::MetaPropertyReader

#metadata_property_reader

Methods included from Mixin::MetaPropertyWriter

#metadata_property_writer

Methods included from Mixin::MetaGetter

#meta

Methods included from Mixin::DataGetter

#data

Methods included from Mixin::RootKeyGetter

#root_key

Methods included from Mixin::ContentGetter

#content

Constructor Details

This class inherits a constructor from GoodData::MdObject

Class Method Details

.all(options = { :client => GoodData.connection, :project => GoodData.project }) ⇒ Array<GoodData::MdObject> | Array<Hash>

Method intended to get all objects of that type in a specified project

Parameters:

  • options (Hash) (defaults to: { :client => GoodData.connection, :project => GoodData.project })

    the options hash

Options Hash (options):

  • :full (Boolean)

    if passed true the subclass can decide to pull in full objects. This is desirable from the usability POV but unfortunately has negative impact on performance so it is not the default

Returns:

  • (Array<GoodData::MdObject> | Array<Hash>)

    Return the appropriate metadata objects or their representation



19
20
21
# File 'lib/gooddata/models/metadata/variable.rb', line 19

def all(options = { :client => GoodData.connection, :project => GoodData.project })
  query('prompt', Variable, options)
end

.create(data, options = { :client => GoodData.connection, :project => GoodData.project }) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/gooddata/models/metadata/variable.rb', line 23

def create(data, options = { :client => GoodData.connection, :project => GoodData.project })
  title = data[:title]
  project = options[:project]
  c = client(options)
  attribute = project.attributes(data[:attribute])

  payload = {
    'prompt' => {
      'content' => {
        'attribute' => attribute.uri,
        'type' => 'filter'
      },
      'meta' => {
        'tags' => '',
        'deprecated' => '0',
        'summary' => '',
        'title' => title,
        'category' => 'prompt'
      }
    }
  }
  c.create(self, payload, project: project)
end

Instance Method Details

#deleteObject

Deletes all the values and eventually the variable itself



86
87
88
89
# File 'lib/gooddata/models/metadata/variable.rb', line 86

def delete
  values.pmap(&:delete)
  super
end

#project_valuesArray<GoodData::VariableUserFilter>

Retrieves variable values and returns only those related to project

Returns:



81
82
83
# File 'lib/gooddata/models/metadata/variable.rb', line 81

def project_values
  values.select { |x| x.level == :project }
end

#replace(mapping) ⇒ GoodData::Variable

Method used for replacing values in their state according to mapping. Can be used to replace any values but it is typically used to replace the URIs. Returns a new object of the same type.

Parameters:

  • Mapping (Array<Array>)

    specifying what should be exchanged for what. As mapping should be used output of GoodData::Helpers.prepare_mapping.

Returns:



74
75
76
# File 'lib/gooddata/models/metadata/variable.rb', line 74

def replace(mapping)
  GoodData::MdObject.replace_quoted(self, mapping)
end

#user_valuesArray<GoodData::VariableUserFilter>

Retrieves variable values and returns only those related to user

Returns:



66
67
68
# File 'lib/gooddata/models/metadata/variable.rb', line 66

def user_values
  values.select { |x| x.level == :user }
end

#valuesArray<GoodData::VariableUserFilter>

Retrieves variable values

Returns:



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/gooddata/models/metadata/variable.rb', line 51

def values
  payload = {
    variablesSearch: {
      variables: [
        uri
      ],
      context: []
    }
  }
  client.post("/gdc/md/#{project.pid}/variables/search", payload)['variables'].map { |f| client.create(GoodData::VariableUserFilter, f, project: project) }
end