Class: LeanTesting::EntityList

Inherits:
Object
  • Object
show all
Defined in:
lib/BaseClass/EntityList.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(origin, request, identifier, filters = nil) ⇒ EntityList

Constructs an Entity List instance.

Arguments: origin Client – Original client instance reference request APIRequest – An API Request definition given by the entity collection handler. This is used for any subsequent collection regeneration, as any data updates are dependant on external requests. identifier Class – class definition to use for dynamic class instancing within array collection filters Hash – original filters passed over from originating all() call



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/BaseClass/EntityList.rb', line 28

def initialize(origin, request, identifier, filters = nil)
	if !filters
		filters = {}
	end

	@origin     = origin
	@request    = request
	@identifier = identifier
	@filters    = filters

	generateCollectionData

end

Instance Attribute Details

#collectionObject (readonly)

Returns the value of attribute collection.



6
7
8
# File 'lib/BaseClass/EntityList.rb', line 6

def collection
  @collection
end

Instance Method Details

#countObject

Outputs number of Entities in current collection page. Will always be same as limmit/per_page if not on last page.

Returns: Fixnum – Number of Entities in page



131
132
133
# File 'lib/BaseClass/EntityList.rb', line 131

def count
	@pagination['count']
end

#eachObject

Internal loop handler for emulating enumerable functionality



98
99
100
101
102
103
# File 'lib/BaseClass/EntityList.rb', line 98

def each
	first
	begin
		yield toArray
	end while self.next
end

#firstObject

Sets iterator position to first page. Ignored if already on first page.



45
46
47
48
49
50
51
52
# File 'lib/BaseClass/EntityList.rb', line 45

def first
	if @pagination['current_page'] == 1
		return false
	end

	@filters['page'] = 1
	generateCollectionData
end

#lastObject

Sets iterator position to last page. Ignored if already on last page.



86
87
88
89
90
91
92
93
# File 'lib/BaseClass/EntityList.rb', line 86

def last
	if @pagination['current_page'] == @pagination['total_pages']
		return false
	end

	@filters['page'] = @pagination['total_pages']
	generateCollectionData
end

#nextObject

Sets iterator position to next page. Ignored if on last page.



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/BaseClass/EntityList.rb', line 69

def next
	if @pagination['current_page'] == @pagination['total_pages']
		return false
	end

	if @filters.has_key? 'page'
		@filters['page'] += 1
	else
		@filters['page'] = 2
	end

	generateCollectionData
end

#previousObject

Sets iterator position to previous page. Ignored if on first page.



57
58
59
60
61
62
63
64
# File 'lib/BaseClass/EntityList.rb', line 57

def previous
	if @pagination['current_page'] == 1
		return false
	end

	@filters['page'] -=1
	generateCollectionData
end

#toArrayObject

Outputs internal collection in array format (converted from Entity objects)

Returns: Array – array of elements converted into hashes



141
142
143
# File 'lib/BaseClass/EntityList.rb', line 141

def toArray
	@collection.map{ |entity| entity.data }
end

#totalObject

Outputs total number of Entities inside multi-page collection

Returns: Fixnum – Number of total Entities



111
112
113
# File 'lib/BaseClass/EntityList.rb', line 111

def total
	@pagination['total']
end

#totalPagesObject

Outputs total number of pages the multi-page collection has, regardful of limit/per_page

Returns: Fixnum – Number of total pages



121
122
123
# File 'lib/BaseClass/EntityList.rb', line 121

def totalPages
	@pagination['total_pages']
end