Class: JGrouper::Exporter

Inherits:
Object
  • Object
show all
Defined in:
lib/jgrouper/exporter.rb

Overview

JGrouper::Exporter - Export Groups registry.

USAGE

require 'jgrouper'
require 'jgrouper/exporter'

JGrouper::Exporter.new do |exporter|
  exporter.export 'stem:to:export', lambda { |_| puts _.to_yaml }
end

Constant Summary collapse

EXPORT_VERSION =
1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ Exporter

Returns a new instance of Exporter.

Yields:

  • (_self)

Yield Parameters:



22
23
24
25
26
# File 'lib/jgrouper/exporter.rb', line 22

def initialize
  @verbose   = false
  yield self if block_given?
  self
end

Instance Attribute Details

#verbose=(value) ⇒ Object (writeonly)

Sets the attribute verbose

Parameters:

  • value

    the value to set the attribute verbose to.



20
21
22
# File 'lib/jgrouper/exporter.rb', line 20

def verbose=(value)
  @verbose = value
end

Instance Method Details

#export(params) ⇒ Object

Export Groups registry.



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

def export(params)
  stem = params[:base] ? Stem.find( params[:base] ) : Stem.root
  raise "ERROR: stem not found"        if     stem.nil?
  raise "ERROR: :block not specified"  unless params[:block]
  raise "ERROR: :block is not a block" unless params[:block].kind_of?(Proc)

  # TODO Multiple readers?
  txt = stem.root? ? 'root stem' : "stem #{stem.name}"
  log "exporting #{txt} ..."
   params[:block]
  if stem.root? # TODO Configurable?
    export_group_types params[:block]
    export_fields      params[:block]
    export_sources     params[:block]
  end
  export_stem stem, params[:block]
  log "exporting #{txt} - done"

end

#export_fields(p) ⇒ Object

Export fields



52
53
54
55
56
# File 'lib/jgrouper/exporter.rb', line 52

def export_fields(p)
  log 'exporting group fields ...'
  JGrouper::Field.all.each     { |_| p.call _.to_json }
  log 'exporting group fields: done'
end

#export_group_types(p) ⇒ Object

Export group types.



59
60
61
62
63
# File 'lib/jgrouper/exporter.rb', line 59

def export_group_types(p)
  log 'exporting group types ...'
  JGrouper::GroupType.all.each { |_| p.call _.to_json }
  log 'exporting group types: done'
end

#export_metadata(p) ⇒ Object

Export metadata



66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/jgrouper/exporter.rb', line 66

def (p)
  log 'exporting metadata ...'
  p.call( { kind:             'metadata',
            export_version:   EXPORT_VERSION,
            jgrouper_version: JGrouper::VERSION,
            hostname:         ENV['HOSTNAME'],
            ruby_engine:      RUBY_ENGINE,
            ruby_platform:    RUBY_PLATFORM,
            ruby_version:     RUBY_VERSION,
            start_time:       Time.now.to_datetime.rfc3339
          }.to_json
        )
  log 'exporting metadata: done'
end

#export_sources(p) ⇒ Object

Export subject sources.



82
83
84
85
86
# File 'lib/jgrouper/exporter.rb', line 82

def export_sources(p)
  log 'exporting subject sources ...'
  JGrouper::Source.all.each { |source| p.call source.to_json }
  log 'exporting subject sources: done'
end

#export_stem(stem, p) ⇒ Object

Export stem and childen.



89
90
91
92
93
94
95
96
# File 'lib/jgrouper/exporter.rb', line 89

def export_stem(stem, p)
  log "exporting stem #{stem.name} ..." # TODO Debug ... unless root?!
  p.call stem.to_json
  export_stem_privileges(stem, p)
  stem.groups { |child| export_group child, p }
  stem.stems  { |child| export_stem  child, p }
  log "exporting stem #{stem.name}: done" # TODO Debug ... unless root?!
end