Module: GoodData::Bam::Sink

Defined in:
lib/base/sink.rb

Class Method Summary collapse

Class Method Details

.add_target_type(sink) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/base/sink.rb', line 28

def self.add_target_type(sink)
  target = sink[:target].to_s
  path = Pathname(target)
  uri = URI(target)

  if target == "gooddata" 
    sink.merge({
      :target => :gooddata,
      :target_type => :gooddata
    })
  elsif uri.absolute? && (uri.scheme == "http" || uri.scheme == "https")
    sink.merge({
      :target => uri,
      :target_type => :web
    })
  elsif target =~ /^\./ || target =~ /^\//
    sink.merge({
      :target => path,
      :target_type => :file
    })
  end
end

.create(sink) ⇒ Object



5
6
7
8
9
10
# File 'lib/base/sink.rb', line 5

def self.create(sink)
  fail "Sink should have id. You defined \"#{sink}\"" if sink[:id].blank?
  fail "Sink should have target. You defined \"#{sink}\"" if sink[:target].blank?
  sink = {:fields => []}.merge(sink).merge({:type => :sink})
  add_target_type(sink)
end

.find_field(sink, name) ⇒ Object



12
13
14
# File 'lib/base/sink.rb', line 12

def self.find_field(sink, name)
  sink[:fields].detect {|f| f[:name] == name}
end

.get_date_fields(sink) ⇒ Object



20
21
22
# File 'lib/base/sink.rb', line 20

def self.get_date_fields(sink)
  sink[:fields].find_all {|f| f[:type] == "date"}
end

.get_fact_fields(sink) ⇒ Object



24
25
26
# File 'lib/base/sink.rb', line 24

def self.get_fact_fields(sink)
  sink[:fields].find_all {|f| f[:type] == "fact"}
end

.has_field?(sink, name) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/base/sink.rb', line 16

def self.has_field?(sink, name)
  !find_field(sink, name).nil?
end