Class: Statlysis::MultipleDataset

Inherits:
Object
  • Object
show all
Defined in:
lib/statlysis/multiple_dataset.rb

Direct Known Subclasses

ActiveRecordDataset, MongoidDataset

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cron = nil) ⇒ MultipleDataset

Returns a new instance of MultipleDataset.



5
6
7
8
9
# File 'lib/statlysis/multiple_dataset.rb', line 5

def initialize cron = nil
  @cron = cron
  @sources ||= Set.new
  return self
end

Instance Attribute Details

#cronObject (readonly)

Returns the value of attribute cron.



11
12
13
# File 'lib/statlysis/multiple_dataset.rb', line 11

def cron
  @cron
end

#regexpObject (readonly)

Returns the value of attribute regexp.



11
12
13
# File 'lib/statlysis/multiple_dataset.rb', line 11

def regexp
  @regexp
end

#sourcesObject (readonly)

Returns the value of attribute sources.



11
12
13
# File 'lib/statlysis/multiple_dataset.rb', line 11

def sources
  @sources
end

Instance Method Details

#_resort_source_orderObject

lazy load if cron is unassigned



51
# File 'lib/statlysis/multiple_dataset.rb', line 51

def _resort_source_order; resort_source_order if cron; end

#_select_orm(_module) ⇒ Object

select ORM models fron ::Object namespace



55
56
57
58
59
60
61
62
63
# File 'lib/statlysis/multiple_dataset.rb', line 55

def _select_orm _module
  ::Object.constants.map do |c|
    c.to_s.constantize rescue nil # NameError: uninitialized constant ClassMethods
  end.compact.select do |c|
    (c.class === Class) &&
    c.respond_to?(:included_modules) &&
    c.included_modules.index(_module)
  end
end

#add_source(s) ⇒ Object



25
26
27
28
29
# File 'lib/statlysis/multiple_dataset.rb', line 25

def add_source s
  @sources.add s

  return self
end

#first_timeObject



47
48
49
50
# File 'lib/statlysis/multiple_dataset.rb', line 47

def first_time
  t = _resort_source_order.map(&:first).compact.map {|i| i.send(cron.time_column) }.compact.min || DateTime1970
  t.in_time_zone(cron.time_zone)
end

#nameObject Also known as: collection_name, table_name



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/statlysis/multiple_dataset.rb', line 31

def name
  if @sources.size.zero?
    Statlysis.logger.warn "Add source to #{self} first!"
    return nil
  elsif @sources.size == 1
    @sources.first.send(Utils.name(@sources.first))
  else
    # /multiple_log_2013[0-9]{4}/ => 'multiple_log'
    regexp.inspect[1..-2].gsub(/\-|\[|\]|\{|\}|[0-9]/, '').sub(/\_+$/, '')
  end
end

#resort_source_orderObject



52
# File 'lib/statlysis/multiple_dataset.rb', line 52

def resort_source_order; raise DefaultNotImplementWrongMessage; end

#set_regexp(regexp) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/statlysis/multiple_dataset.rb', line 12

def set_regexp regexp
  case regexp
  when Regexp
  when String
    regexp = Regexp.new(string)
  else
    raise "regexp #{regexp} should be a Regexp!" 
  end
  @regexp = regexp

  return self
end