Module: GoodData::Bam::Metadata

Defined in:
lib/base/metadata.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#attributesObject

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.add_timestamp_as_date()
  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, options={})
  name = options[: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, options={})
  name = options[: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

Returns:

  • (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.remove_timestamp()
  if GoodData::Bam::Metadata.has_field?(, "Timestamp")
    GoodData::Bam::Metadata.remove_field(, "Timestamp")
  else
    
  end
end