Class: JGrouper::Group

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

Overview

JGrouper::Group - Grouper Group

Usage

require 'jgrouper'

TODO

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(obj = nil) {|_self| ... } ⇒ Group

Returns a new instance of Group.

Yields:

  • (_self)

Yield Parameters:



15
16
17
18
19
# File 'lib/jgrouper/group.rb', line 15

def initialize( obj = nil )
  @obj = obj
  yield self if block_given?
  self
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, &block) ⇒ Object

For passing methods on to Grouper Group object.



50
51
52
53
54
55
56
57
58
# File 'lib/jgrouper/group.rb', line 50

def method_missing(meth, *args, &block)
  super if @obj.nil?
  begin
    block.call @obj.send(meth, *args) if block
    @obj.send(meth, *args)
  rescue NoMethodError
    super
  end
end

Class Method Details

.find(name) {|group| ... } ⇒ Object

Find Grouper group by name. Returns JGrouper::Group or nil.

Yields:

  • (group)


24
25
26
27
28
29
30
31
32
33
34
# File 'lib/jgrouper/group.rb', line 24

def self.find(name)
  begin
    obj = JGroupFinder.find_by_name JGrouper.start_root_session, name, false
  rescue => e
    warn "JGrouper::Group.find(#{name}) => #{e}"
  end
  return nil if obj.nil?
  group = self.new obj
  yield group if block_given?
  group 
end

Instance Method Details

#add_type(type) ⇒ Object

Add JGrouper::GroupType to group.



39
40
41
# File 'lib/jgrouper/group.rb', line 39

def add_type(type)
  @obj.addType type.to_grouper, false
end

#grant(subject, privilege) ⇒ Object



43
44
45
# File 'lib/jgrouper/group.rb', line 43

def grant(subject, privilege)
  @obj.grantPriv subject.to_grouper, privilege.to_grouper, false
end

#revoke(subject, privilege) ⇒ Object



60
61
62
# File 'lib/jgrouper/group.rb', line 60

def revoke(subject, privilege)
  @obj.revokePriv subject.to_grouper, privilege.to_grouper, false
end

#to_hashObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/jgrouper/group.rb', line 64

def to_hash
  h = {
    kind:               'group',
    uuid:               @obj.get_uuid,
    name:               @obj.get_name,
    display_name:       @obj.get_display_name,
    extension:          @obj.get_extension,
    display_extension:  @obj.get_display_extension,
    create_subject:     JGrouper::Subject.new( @obj.get_create_subject ).to_hash,
    create_time:        Time.at( @obj.get_create_time_long / 1000 ).to_datetime.rfc3339,
    parent:             { name: @obj.get_parent_stem.get_name, uuid: @obj.get_parent_stem.get_uuid }
  }

  unless @obj.get_alternate_names.empty?
    h[:alternate_names] = @obj.get_alternate_names.collect(&:to_s)
  end
  unless @obj.get_description.empty?
    h[:description]     = @obj.get_description                                                            
  end
  unless @obj.get_removable_types.empty?
    h[:group_types]     = @obj.get_removable_types.collect { |_| { name: _.get_name, uuid: _.get_uuid } }
  end
  if 'role' == @obj.get_type_of_group.to_s
    h[:role]            = true
  end

  begin
    h[:modify_subject] = JGrouper::Subject.new( @obj.get_modify_subject ).to_hash
    h[:modify_time]    = Time.at( @obj.get_modify_time_long / 1000 ).to_datetime.rfc3339
  rescue
  end

  h
end

#to_jsonObject



99
100
101
# File 'lib/jgrouper/group.rb', line 99

def to_json
  to_hash.to_json
end

#to_sObject



103
104
105
106
# File 'lib/jgrouper/group.rb', line 103

def to_s
  return nil if @obj.nil?
  %w( name display_name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.to_csv.chomp
end

#type?(type) ⇒ Boolean

Does group have group type (where type is String or JGrouper::GroupType)?

Returns:

  • (Boolean)


111
112
113
114
115
116
117
118
# File 'lib/jgrouper/group.rb', line 111

def type?(type)
  case type.class
  when String
    return @obj.hasType JGrouper::GroupType.find(type).to_grouper
  else
    return @obj.hasType type.to_grouper
  end
end