class CMIS::Relationships
Public Class Methods
new(object, options = {})
click to toggle source
Options: from, page_size
# File lib/cmis/relationships.rb, line 7 def initialize(object, options = {}) @object = object @options = options.symbolize_keys init_options end
Public Instance Methods
each_page(options = {}) { |r = results| ... }
click to toggle source
Options: limit
# File lib/cmis/relationships.rb, line 33 def each_page(options = {}, &block) return enum_for(:each_page, options) unless block_given? init_options limit = parse_limit(options) counter = 0 while has_next? break unless counter < limit yield r = results counter += r.size end end
each_relationship(options = {}) { |object| ... }
click to toggle source
Options: limit
# File lib/cmis/relationships.rb, line 15 def each_relationship(options = {}, &block) return enum_for(:each_relationship, options) unless block_given? init_options limit = parse_limit(options) return if limit == 0 counter = 0 while has_next? results.each do |object| yield object counter = counter.next return unless counter < limit end end end
has_next?()
click to toggle source
# File lib/cmis/relationships.rb, line 57 def has_next? @has_next end
results()
click to toggle source
# File lib/cmis/relationships.rb, line 47 def results result = do_get_relationships @skip_count += result.results.size @has_next = result.has_more_items @total = result.num_items result.results end
total()
click to toggle source
# File lib/cmis/relationships.rb, line 61 def total @total ||= do_get_relationships.num_items end
Private Instance Methods
do_get_relationships()
click to toggle source
# File lib/cmis/relationships.rb, line 86 def do_get_relationships server = @object.repository.server result = server.execute!({ cmisselector: 'relationships', repositoryId: @object.repository.id, objectId: @object.cmis_object_id, maxItems: @max_items, skipCount: @skip_count, relationshipDirection: @direction, includeSubRelationshipTypes: @include_subtypes, typeId: @type_id }, @opts) results = result['objects'].map do |r| ObjectFactory.create(r, @object.repository) end QueryResult.new(results, result['numItems'], result['hasMoreItems']) end
init_options()
click to toggle source
# File lib/cmis/relationships.rb, line 67 def init_options @max_items = @options[:page_size] || 10 @skip_count = @options[:from] || 0 @direction = @options[:direction] || :either @include_subtypes = @options[:include_subtypes] @type_id = @options[:type_id] @has_next = true @opts = @options.slice(:query, :headers) end
parse_limit(options)
click to toggle source
# File lib/cmis/relationships.rb, line 78 def parse_limit(options) options.symbolize_keys! limit = options[:limit] || 10 limit = BigDecimal::INFINITY if limit == :all raise 'Not a valid limit' unless limit.is_a? Numeric limit end