class JunglePath::Query::Entity
Attributes
alias_[RW]
field_node[RW]
fields[RW]
filter[RW]
join_field_override[RW]
left_join[R]
limit[RW]
name[RW]
node[RW]
offset[RW]
parameters[RW]
parent[RW]
sort[RW]
symbol[RW]
Public Class Methods
get_name_from_token(token)
click to toggle source
# File lib/jungle_path/query/entity.rb, line 111 def self.get_name_from_token(token) if token[-1] == "@" token = token[0..-2] end if token.include? '.' token = token.split('.')[0] end token = token.downcase.to_sym end
new(token, alias_, node, parent, symbol)
click to toggle source
# File lib/jungle_path/query/entity.rb, line 12 def initialize(token, alias_, node, parent, symbol) @name = Entity.get_name_from_token(token) if token[-1] == "@" @left_join = true else @left_join = false end if token.include? '.' @join_field_override = token.split('.')[1] if @join_field_override[-1] == '@' @join_field_override = @join_field_override[0..-2] end else @join_field_override = nil end @alias_ = alias_ @node = node @parent = parent @symbol = symbol @fields = nil @filter = nil @sort = nil @limit = nil @offset = nil @field_node = nil #If this entity object is created from within the field list put the field's node here. end
select_node_from_array_by_token(nodes, token)
click to toggle source
# File lib/jungle_path/query/entity.rb, line 121 def self.select_node_from_array_by_token(nodes, token) # find closest matching node. # see gen_node_tree.rb lines 60+... node = nodes[0] # default if token.include? '.' name = token.split('.')[1] if name[-1] == '@' name = name[0..-2] end nodes.each do |n| if n.child_table_join_column_name.to_s.start_with?(name) node = n #found match break end end end node #return node. end
Public Instance Methods
fields_that_are_entities_count()
click to toggle source
# File lib/jungle_path/query/entity.rb, line 101 def fields_that_are_entities_count count = 0 fields.each do |field| if field.is_entity? count += 1 end end count end
find_entity(name)
click to toggle source
# File lib/jungle_path/query/entity.rb, line 55 def find_entity(name) field = find_field(name) if field return field end if fields fields.each do |f| if f.is_entity? field = f.find_entity(name) if field return f #return field end end end end field end
find_field(name)
click to toggle source
# File lib/jungle_path/query/entity.rb, line 44 def find_field(name) if fields fields.each do |field| if field.name == name return field end end end nil end
find_parent_alias()
click to toggle source
# File lib/jungle_path/query/entity.rb, line 89 def find_parent_alias #binding.pry alias_ = nil p = parent while p and p.fields.count == p.fields_that_are_entities_count do p = p.parent end alias_ = p.alias_ if p alias_ = alias_.to_sym if alias_ alias_ end
find_symbol()
click to toggle source
# File lib/jungle_path/query/entity.rb, line 75 def find_symbol symbol = node.symbol p = parent while true do if p.fields.count == p.fields_that_are_entities_count and p.parent symbol = p.node.symbol p = p.parent else break end end symbol end
is_entity?()
click to toggle source
# File lib/jungle_path/query/entity.rb, line 40 def is_entity? true end