Module: GoodData::Bam::Metadata
- Defined in:
- lib/base/metadata.rb
Instance Attribute Summary collapse
-
#attributes ⇒ Object
Returns the value of attribute attributes.
Class Method Summary collapse
- .add_field(metadata, field) ⇒ Object
- .add_timestamp_as_date(metadata) ⇒ Object
- .clone(metadata) ⇒ Object
- .create(metadata) ⇒ Object
- .find_field(metadata, name) ⇒ Object
- .get_metadata(what) ⇒ Object
- .get_source_metadata(what, options = {}) ⇒ Object
- .get_target_metadata(what, options = {}) ⇒ Object
- .has_field?(metadata, name) ⇒ Boolean
- .remove_field(metadata, field_name) ⇒ Object
- .remove_timestamp(metadata) ⇒ Object
Instance Attribute Details
#attributes ⇒ Object
Returns the value of attribute attributes.
5 6 7 |
# File 'lib/base/metadata.rb', line 5 def attributes @attributes end |
Class Method Details
.add_field(metadata, field) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/base/metadata.rb', line 23 def self.add_field(, field) fail "You have to specify name at the metadata change. You specified \"#{field}\"" unless field.respond_to?(:has_key?) && field.has_key?(:name) position = field[:position] || 0 what = { :name => field[:name], :type => field[:type] } fields = [:fields].clone fields.insert(position - 1, what) unless Metadata.has_field?(, field[:name]) Metadata.create(.merge({:fields => fields})) end |
.add_timestamp_as_date(metadata) ⇒ Object
85 86 87 88 89 90 |
# File 'lib/base/metadata.rb', line 85 def self.() if GoodData::Bam::Metadata.has_field?(, "Timestamp") = GoodData::Bam::Metadata.remove_field(, "Timestamp") end GoodData::Bam::Metadata.add_field(, {:name => "Timestamp", :type => "date"}) end |
.clone(metadata) ⇒ Object
11 12 13 |
# File 'lib/base/metadata.rb', line 11 def self.clone() Metadata.create(attributes) end |
.create(metadata) ⇒ Object
7 8 9 |
# File 'lib/base/metadata.rb', line 7 def self.create() end |
.find_field(metadata, name) ⇒ Object
15 16 17 |
# File 'lib/base/metadata.rb', line 15 def self.find_field(, name) [:fields].detect {|f| f[:name] == name} end |
.get_metadata(what) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/base/metadata.rb', line 42 def self.(what) { :input_metadata => Metadata.(what), :output_metadata => Metadata.(what) } end |
.get_source_metadata(what, options = {}) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/base/metadata.rb', line 67 def self.(what, ={}) name = [:name] || what[:id] case what[:type] when :sink Metadata.create({ :name => name, :id => name, :fields => GoodData::CloverGenerator::(what[:fields].map {|f| {:name => f[:meta]}}) }) when :tap, :graph Metadata.create({ :name => name, :id => name, :fields => GoodData::CloverGenerator::(what) }) end end |
.get_target_metadata(what, options = {}) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/base/metadata.rb', line 49 def self.(what, ={}) name = [:name] || what[:id] case what[:type] when :sink Metadata.create({ :name => name, :id => name, :fields => GoodData::CloverGenerator::(what[:fields].map {|f| {:name => f[:meta]}}) }) when :tap, :graph Metadata.create({ :name => name, :id => name, :fields => GoodData::CloverGenerator::(what) }) end end |
.has_field?(metadata, name) ⇒ Boolean
19 20 21 |
# File 'lib/base/metadata.rb', line 19 def self.has_field?(, name) !Metadata.find_field(, name).nil? end |
.remove_field(metadata, field_name) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/base/metadata.rb', line 35 def self.remove_field(, field_name) fields = [:fields] fail RemoveMetadataFieldError.new("When trying to remove field \"#{field_name}\" from metadata \"#{[:name]}\" the field was not found", :field => field_name, :metadata => ) unless fields.detect {|f| f[:name] == field_name} fields = fields.find_all {|f| f[:name] != field_name} Metadata.create(.merge({:fields => fields})) end |
.remove_timestamp(metadata) ⇒ Object
92 93 94 95 96 97 98 |
# File 'lib/base/metadata.rb', line 92 def self.() if GoodData::Bam::Metadata.has_field?(, "Timestamp") GoodData::Bam::Metadata.remove_field(, "Timestamp") else end end |